Jump to content


Photo

Known Issues v4.0 (post bug reports here)


  • Please log in to reply
287 replies to this topic

#241 Qwinn

Qwinn
  • Modder
  • 3092 posts

Posted 24 January 2010 - 12:24 AM

EscapeAreaRunning() isn't just useful for dialogues. There's a TON of creatures whose scripting says, when you fall below 50% health, EscapeArea(). But you can hardly tell, because they're moving so damn slowly. I'm strongly leaning toward having them use EscapeAreaRunning as well.

Qwinn

#242 Qwinn

Qwinn
  • Modder
  • 3092 posts

Posted 24 January 2010 - 02:13 AM

Yep, it's definitely worth doing. Most of the affected creatures aren't normally hostile anyway, so you'd really only notice if you were going around slaughtering the innocent, in which case wouldn't you -want- them running in panic away from you?

Call it the other side of the RunningAttack fixes... the RunningEscape fixes.

Edited by Qwinn, 24 January 2010 - 02:14 AM.


#243 Qwinn

Qwinn
  • Modder
  • 3092 posts

Posted 24 January 2010 - 03:54 AM

The dialogue only works for the four main Hive areas (the Random()s are structured such that you can "fall through" and get caught with an area-specific True()-like state, but this won't work in AR0305). Also note that there's one AR0300 reply that you can never access.


It can be accessed, if you're talking about state 41 in the hiver dialogues. I bet you're thinking that the 8 states that have RandomNum(8,1) thru RandomNum(8,8 ) triggers base it all on a single random roll. It -looks- like it was supposed to be that way, and it'd be awesome if it were, but I don't believe that's the case. Each state with the RandomNum trigger gets rolled for independently. Every one of those 8 states could say "RandomNum(8,1)" and it should behave the exact same way... each one simply has a 1 in 8 chance of coming up. Thankfully, the end result comes out close enough to what you'd expect it to look like that I don't think it needs fixing. It's still randomized pretty well.

My proof? I tested in game and *did* get State 41 in DGHIVEF to come up in AR0300.

As for what to do about the guys in the FlopHouse... bleah. The bigger problem *is* that they have stringheads and therefore shouldn't leave. But I don't have any other dialogue to give these guys. So I'm thinking I should just add a ~!Global("Current_Area","GLOBAL",305)~ check to the special states that do make the Hiver leave the area... and add a "fall through" state for AR0305, just as the other areas have 'em.

Qwinn

Edited by Qwinn, 24 January 2010 - 04:01 AM.


#244 scient

scient
  • Modder
  • 1010 posts

Posted 24 January 2010 - 04:51 AM

EscapeAreaRunning() isn't just useful for dialogues. There's a TON of creatures whose scripting says, when you fall below 50% health, EscapeArea(). But you can hardly tell, because they're moving so damn slowly. I'm strongly leaning toward having them use EscapeAreaRunning as well.

Qwinn


^^

While I'm going over script functions, are there anything else you'd like or modifications of existing ones?

Those interested in the classic TBS game Sid Meier's Alpha Centauri / Alien Crossover should check out the unofficial patch I work on here.


#245 Qwinn

Qwinn
  • Modder
  • 3092 posts

Posted 24 January 2010 - 07:24 AM

Can't think of any offhand.

Qwinn

#246 -devSin-

-devSin-
  • Guest

Posted 24 January 2010 - 01:35 PM

It can be accessed, if you're talking about state 41 in the hiver dialogues. I bet you're thinking that the 8 states that have RandomNum(8,1) thru RandomNum(8,8 ) triggers base it all on a single random roll.

Ah, probably this is just that 8 is actually 9 (0-8) instead of 8 (1-8) as in other IEs? Thanks for looking into it.

#247 Qwinn

Qwinn
  • Modder
  • 3092 posts

Posted 24 January 2010 - 03:09 PM

What mechanic makes you think it *would* base all the RandumNum(8,X) from multiple states into a single roll, while considering the RandomNum(20,X)s a separate roll? Does BG1 do this correctly somehow?

Qwinn

#248 -Guest-

-Guest-
  • Guest

Posted 24 January 2010 - 04:49 PM

Because that's the way it works (one roll for max, in a given pass)... obviously, the game has to make a separate roll for 20 (or has stored pre-generated max=20s), but not for the same max (this is the same as done when processing scripts); in your example, all the 20s also get only a single roll per evaluation of the trigger list (i.e., the first roll we make of max N is the only one we get for N this pass).

#249 scient

scient
  • Modder
  • 1010 posts

Posted 24 January 2010 - 04:52 PM

This is how RandomNum trigger works. It's actually kind of fail because rand_val is global rand value that gets constantly updated ( IE_random_roll(0x7FFF, 0) ). However, if you have multiple dialog triggers for one state which use same range value then they're all going to be comparing against the same value. Not really random.


int IE_random_roll(int nMax, int nMin)
{
	if(nMax <= 1) nMax = 1;
	int nRoll = nMin + ((rand() / 100) % nMax);
	if(nRoll >= nMax) nRoll = nMax - 1;
	if(nRoll < 0) nRoll = 0;
	return nRoll;
}

BOOL RandomNum(int nRange, int nValue)
{
	nRange++;
	if(nRange < 1) nRange = 1;
	return ((rand_val % nRange) == nValue);
}

edit:
Reading post above, maybe there is only suppose to be one random roll per state? If that's the case I guess it's ok as is.

edit edit:
On another note, my modifications to pseudo rng that IE uses work fine. It should make rolls a bit more "random" apart from using something like Mersenne twister which is overkill for PST die rolls. This will be especially apparent for multiple rolls in quick succession (like stat bonuses from spells) which now should minimize it from giving back same value as first for 2nd roll.

int IE_random_roll_mod(int nMax, int nMin)
{
	if(nMax <= 1) nMax = 1;
	srand(GetTickCount()); // additional line for better seed
	int nRoll = nMin + ((rand() / 100) % nMax);
	if(nRoll >= nMax) nRoll = nMax - 1;
	if(nRoll < 0) nRoll = 0;
	return nRoll;
}

Edited by scient, 24 January 2010 - 05:02 PM.

Those interested in the classic TBS game Sid Meier's Alpha Centauri / Alien Crossover should check out the unofficial patch I work on here.


#250 -Guest-

-Guest-
  • Guest

Posted 24 January 2010 - 05:08 PM

I'm not sure your meaning of state? (not per dialogue state, but per dialogue pass; i.e., our check of every state trigger list when picking a state to display now) but it's intent that you get a single value (this is the way it has always worked).

I.e., RandomNum() is not IE_Random_Roll(nRange, 0 or 1) == nValue it's int x = IE_Random_Roll(nRange, 0 or 1); x == nValue (where x is only assigned once).

#251 -Guest-

-Guest-
  • Guest

Posted 24 January 2010 - 05:15 PM

But it's nice to know that it's just faking it by returning checks on a "master" random, of course.

#252 scient

scient
  • Modder
  • 1010 posts

Posted 24 January 2010 - 05:16 PM

I'm not sure your meaning of state? (not per dialogue state, but per dialogue pass; i.e., our check of every state trigger list when picking a state to display now) but it's intent that you get a single value (this is the way it has always worked).

I.e., RandomNum() is not IE_Random_Roll(nRange, 0 or 1) == nValue it's int x = IE_Random_Roll(nRange, 0 or 1); x == nValue (where x is only assigned once).


Sorry, I rarely work with dialog stuff let me clarify. Say in platter's cheatbook you have multiple responses like "stats, "alignment", "money", etc. If you add RandomNum() to display "stats"/"alignment" then both of this individual responses will use the same random value. As soon as you enter a new dialog branch, you'll get a new random value (rand_val). I wasn't sure if this is how it's suppose to work or whether you should get a different random roll per dialog choice.

Edited by scient, 24 January 2010 - 05:17 PM.

Those interested in the classic TBS game Sid Meier's Alpha Centauri / Alien Crossover should check out the unofficial patch I work on here.


#253 -Guest-

-Guest-
  • Guest

Posted 24 January 2010 - 05:26 PM

Yeah, transition lists of a single state all run off the same number too. I could imagine it's partly for designer ease (you could get around something like random exclusive responses, for instance, by knowing the order and precedence the engine uses to evaluate transitions, but what a waste of time to force a rigid structure or else have ruined dialogue), but without a way to store the roll, I'm not sure a new number every single check would ever really be the desired behavior.

#254 Qwinn

Qwinn
  • Modder
  • 3092 posts

Posted 25 January 2010 - 10:56 AM

Okay, here's my changelog so far for v4.1:

1. Many creatures were never equipping their weapons, thus attacking with 1d3 damage fists! This one is a pretty big deal. Affected creatures: Agril-shanak (yes, his claws count as weapons), An'izius, Tainted Barse, Berrog, all of the non-modron Brothel Patrons, the Carceri Judge, the Carceri Anarchists, Dallan, Dallan's Girlfriend, Dolora, Ecco, the Giant Skeletons in the Dead Nations, Hezobol, all 3 Fortress Incarnations (!), Jasilya, Kitla, Mantuok (!), Merriuman, Murk (Curst merchant restored in UB), Nabat, Quisho, some female Sensates, Sheryl and Ulthera from the UB Candlestick quest, Siabha, Skatch the Harmonium Slaver (!), all Thokolas, and Trias (!!!!!!)
2. Fewer Skipped Introductions: *Many* dialogues give you the option to ignore the person you just clicked on, but then on talking to them again, the subsequent dialogue would play out as if you had introduced yourself, you had learned their name, and sometimes even been given other information you never actually heard. On a case by case basis, I went through every dialogue where ignoring is an option, and where appropriate I set it so subsequent dialogues would no longer unduly advance the plot if you didn't actually talk to the person. Total number of dialogues fixed in this manner: roughly 90.
3. The Running Escape fixes! Ever notice there's a lot of dialogues that say "He runs out the door as fast as he can", but then he walks away very, very, very slowly? No more! Thanks to an awesome engine tweak by scient, and my going through ever dialogue and script individually to see where it would be more appropriate than walking, when they say they're going to run or flee from you, they really will run. Also, many (mostly innocent) creatures had scripting that said to escape the area after taking some damage, but you could hardly tell because they'd move so slowly. Now they'll actually run away. No more rampaging through the Hive, slaughtering all those helpless souls before you, while the hapless citizens casually saunter away from you in terror! Now they *run like mad* in terror.
4. Duplicating Matter of Course bug should -finally- be fixed (I was referencing wrong script name in my fix), for real this time. Thanks devSin!
5. QuiSai didn't have his team in the Festhall set properly until he moved to the fighter training room. If you attack him in his starting location, the two Sensates in his room *will* react, as the Festhall is designed with each room as having a mutual-defense pact.
6. My fix to the Carceri Execution bug was causing the Anizius/Siabbha quest to drop off the completed quest journal. Fixed in a different way now.
7. The lynch mob in Carceri will take slightly longer before they lose control, this gives the player a little more time to overcome the absolutely horrible pathing in the area (made worse by attacking unreachable mages) to talk to the right person.
8. Lower Ward Market shoppers and anarchists will no longer create bestiary entries for Curst Townie, Male and Curst Townie, Female.
9. Prior fix to check in Splinter's dialogue for Death's Advocate's living-or-dead status was done incorrectly, now fixed properly.
10. Fix to the disappearing Foundry Gears was done incorrectly, should work now.
11. Fix in v4.0 that allowed Tattoo of Shattered Locks and Tattoo of Shadows to be invoked from inventory is rescinded. They allow casting of actual spells, and the standard appears to be to always require spell from items to be cast via quickslots. Tattoo of the Cutpurse can still be invoked from inventory.
12. A number of info points (those areas on the screen where you can click and get some informational floating text) didn't change the cursor when you hovered your mouse over them, so you didn't know there was anything to click on. The more interesting ones are: the Mortuary Furnace, the sealed Curst Gate and the nozzle of the Foundry Weapon.
13. An info point for a tapestry on the 1st floor of the mortuary was displaying the wrong text.
14. The message you get when trying to rest was incorrect in 4 areas (for example, trying to rest in Marta's room, the message should say that you can rest there but you need permission first.)
15. Two areas in Rubikon were incorrectly designated as being on the Negative Material Plane. The main effect was party members making inappropriate comments about the area.
16. Nine bugged traps in various areas throughout the game were fixed. Some failed to reset, others were "pre-detected", and so forth.
17. Finam's house had battle music for Curst instead of Sigil.
18. The handful of rats in a house in Ragpicker's Square are no longer treated as if they are actually in the Warrens of Thought.
19. Pestle's "Welcome to my shop" floating text line was broken due to his lacking a script name. Fixed.
20. Several creatures had the battle cries and death sounds of abishai: bariaurs, Bedai, Matter-of-Course, Keldor, Qui-Sai, Sarossa, and Nihl Xander. Fixed.
21. Miccah had the battle cries and death sounds of a ghoul. (You might think, given her nature, that this was deliberate... but if you actually listen to it, it doesn't seem very probable it was intended, heh.)
22. A number of non-weapon items were incorrectly set up as "weapon slot" rather than "item slot", which would cause them to not display properly in the circular quickslot menu: one version of Adahn's ring, Cranium Rat Tails, Tattoo of Greater Presence, Tatto of Action, Tattoo of Devouring Vermin, and Tattoo of Insight.
23. Blind Terror's weapon speed and bonus acid damage corrected to match description.
24. The Anarchist Earring's Blindness effect was incorrectly offering two chances to save against it, instead of just one.
25. Celestial Fire Axe and Club forms have their weapon speed corrected to 3 (was 0).
26. Merchant price of Celestial Fire Hammer form was 1000 instead of 10000 like all the other forms.
27. Entropic Blade revisited: all previous changes to Entropic Blade have been rescinded. The actual vanilla stats are now considered to have been what was intended, rather than the item descriptions. The descriptions have now been fixed to match the original stats. All forms of the Entropic Blade now have the same weight (1), weapon speed (1) and THACO bonus (+3 instead of the description's original +2), which is what they were in the vanilla game. The only change made to the vanilla game's actual stats on the Entropic Blade is that the dagger form now does piercing damage instead of slashing damage, just like the Celestial Fire dagger form.
28. The sound effect of the Fanged Mirror was resistible.
29. Green Steel Dagger weapon speed corrected to 1 (was 0).
30. Karlaac's Knife damage corrected to 1d3 to match description (was 1d4).
31. The lowest level form of Ingress's Teeth that was supposed to do piercing damage was actually doing crushing damage.
32. Annah can no longer equip Spiked Gauntlets of Ogre Power, Gauntlets of Rending or Uhir's Knife. She is only supposed to be able to use punch daggers.
33. Vhailor can no longer equip Spiked Gauntlets. He is only supposed to be able to use axes.
34. Priest scroll Speak With Dead now has a range of 50 feet as per the description and the spell it's based on.
35. This is invisible to players, but: The invisible items that give creatures "Immunity to Weapons Below +X Enchantment" were set up wrong, so that the effect would be reapplied over and over again. They now only give their effect "on equip" as they should.
36. Scrolls of Minor Embalming are now targetable rather than self-only, like the spell it's based on.
37. Widowmaker was missing the +2 damage from its description.
38. Some of the casting spell effects and sounds removed from Skull Mob and Grace's Kiss, in same vein as the fix to Litany of Curses in v4.0.
39. The sound effect for the Power of One spell was playing twice per casting.
40. The graphics and sounds of several spells were affected by Magic Resistance inconsistently with their effect... so you could resist a spell but still have the graphics and sound land on the target, or the target could *not* resist the spell but resist the accompanying graphics and sounds.
41. For the spells Blindness, Vilquar's Eye and Tasha's Unbearable Derisive Laughter, same as above but the graphics/sounds were applying even if the target made their regular saving throw against the effect.
42. Green and red abishai have their fidgeting sound restored. (Didn't do this for black abishai because it has a *terrible* effect in the Smoldering Corpse Bar).
43. Conall no longer sells an infinite number of Stinger Earrings, just one.
44. The bone dagger sold by Emoric is now identified.
45. The Remove Curse cure (not scroll) purchasable from Splinter was missing its in-store description.
46. Vrischika's inventory stock revised for sanity: she now sells one, rather than infinite, Teeth of the Fire Drake, modron lenses, Spider Bracelets and Angle-Less Eyes. She now sells infinite, rather than singular, heart charms, thrice-blind charms and knot charms.
47. If you attacked Aelwyn, she was sometimes setting Nemelle's "attacked" variable instead of her own, so when she chased you down, you sometimes got her normal dialog state instead of her "Holy Wrath" state.
48. In order to fill in some gaps in dialogue, when attempting to poison Mochai, you must now always attempt to distract her first, and the stat check across all identical dialogue paths attempting to do so have been made consistent. A couple of other minor logic fixes to her dialogue as well.
49. Hive weapon merchant dialogue was skipping a state the first time you talked to him, now consistent with subsequent conversations.
50. Carver, Hezobol and a Lower Ward guard all had the wrong state being initiated on subsequent conversations. This restores an orphaned dialogue line for each of them.
51. Some Buried Villagers will now talk about the attack they witnessed without you having to see the consequences of the attack first.
52. One Lower Ward slave dialogue was nonsensically continuing when you chose a "Never mind, farewell." reply.
53. Rubikon music and battle music was broken/unset in about a third of the areas in the modron maze.
54. Ebb could *still* respawn in the Anarchist warehouse after leaving it if you saved in the warehouse and reloaded. No more.
55. There exists an exploit to kill Krystall/Rotten Williams without aggroing their followers, and if you talked to them afterwards, they'd notice their leader was dead and *sound* hostile but wouldn't actually go hostile. Now they will.
56. Yvana will no longer ask to touch your face every time you try to end conversation early with her.
57. If Annah scares a harlot into running away, this no longer potentially makes everyone nearby try to kill you. I believe this was only happening due to the dialogue and script actions not playing well together.
58. Every thug in the Trash Warrens other than Bish has the dialogue of the thug leader that stole Porphiron's necklace. This is obviously bad. Taking this opportunity to assign them a number of previously unused thug dialogues. I especially like the dialogue of two thugs facing each other near Anamoli.
59. Talking to the two Hive Dwellers in the Flophouse will no longer result in the special dialogues that can make them leave the area, as this can corrupt their stringhead conversation.
60. Lenny is the only thief trainer who doesn't check DEX > 8 before training you. You can no longer ask him to train you if your DEX is below 9.
61. Sebastion is the only mage trainer who doesn't check INT > 8 before training you. You can no longer ask him to train you if your INT is below 9.
62. Cassius has 3 weapons. He now equips the superior weapon that he actually has proficiency in using.
63. Summoned Constructs have no weapon at all. Giving them the same weapon as Medium Threat Constructs, which they are equivalent to in all other ways.
64. Vaxis's charisma stat checks that determine if Vaxis thinks you'd make a good looking zombie (i.e. if your charisma is low enough, yes) are now consistent across all similar dialogue paths.
65. Translations updated.

If I've neglected something, and didn't already say I wasn't going to do it for whatever reason, please remind me, thanks!

Qwinn

Edited by Qwinn, 26 January 2010 - 04:37 AM.


#255 -devSin-

-devSin-
  • Guest

Posted 25 January 2010 - 12:10 PM

22. Ingress's Teeth (post banter) are now "Talk To" items, not "Use" items.

Actually, the description says to click "Use" to change the teeth, so may as well leave them? Sigh.

47. Vrischika's inventory stock revised for sanity: she now sells one, rather than infinite, Divine Censers, Teeth of the Fire Drake, modron lenses, Spider Bracelets and Angle-Less Eyes. She now sells infinite, rather than singular, heart charms, thrice-blind charms and knot charms.

Every storekeep in the game sells unlimited divine censer (as if you would ever need one), so that one can stay infinite?

#256 Qwinn

Qwinn
  • Modder
  • 3092 posts

Posted 25 January 2010 - 12:34 PM

Okay on both. Revised the list.

Qwinn

Edited by Qwinn, 25 January 2010 - 12:36 PM.


#257 Qwinn

Qwinn
  • Modder
  • 3092 posts

Posted 25 January 2010 - 01:29 PM

Reviewing the thread, there's a few things I still intend/need to work on:

1) Combat scripting for the fiends in Smoldering Corpse Bar.
2) Keeping Crumplepunch's sold items unique when his store changes.
3) Mantuok. Ugh.
4) The MK_Counter stuff - Harmonium stop magically forgetting that you're a criminal.

Qwinn

Edited by Qwinn, 25 January 2010 - 01:30 PM.


#258 nevill

nevill
  • Member
  • 87 posts

Posted 25 January 2010 - 01:59 PM

Dvaxis.dlg issues, especially the 3rd.
Hive weapon merchant's inconsistency.
Overall scripting wackiness in Dead Nations described here might be not a bug per se, but these are worth noting:
Silent King's Royal Guards dealing 1-2 damage per hit.
Ghouls down below were not hostile despite my slaughtering all of the undead.

This might already be covered by your 2nd fix in the list, but what about an exploit with repeatedly refusing to talk to Ki'ina and getting Dak'kon's morale to increase each time?

I guess that 'MK_Counter' fixes for Festhall are not going into 4.1, right?

I'll finish with Mantuok, eventually. You said I'm in no rush, so... :)

Edited by nevill, 25 January 2010 - 02:10 PM.


#259 -Guest-

-Guest-
  • Guest

Posted 25 January 2010 - 02:57 PM

Dvaxis.dlg issues, especially the 3rd.

I think that one is fine. It's not a compliment (you make a good zombie because you have no personality).

Silent King's Royal Guards dealing 1-2 damage per hit.

Yeah, their weapon was never put in their inventory. CSum also needs a weapon (ISWD1D12, it looks) so they don't just punch stuff (I think I already had those in my TP2).

Ghouls down below were not hostile despite my slaughtering all of the undead.

I think this is fine (just like the ghouls and zombies up top will still be hostile if you go all BFF with Hargrimm). They're not the smartest ghouls in the grave, and they do have stuff to do instead of checking in with mom to find out you're Public Enemy #1.

#260 Qwinn

Qwinn
  • Modder
  • 3092 posts

Posted 25 January 2010 - 03:13 PM

You're correct about the giant skeletons not having their weapon equipped, will fix. (And will run some systemic checks to see if the particular problem with them can be found elsewhere).

This might already be covered by your 2nd fix in the list, but what about an exploit with repeatedly refusing to talk to Ki'ina and getting Dak'kon's morale to increase each time?


I added a new variable to track and prevent this in Fixpack v3.0, it's local to AR0500 and is called "Dakkon_Kiina_Morale". So, that one should've been fixed for over a year. What makes you think it's still possible?

I guess that 'MK_Counter' fixes for Festhall are not going into 4.1, right?


It should, actually.

CSum also needs a weapon (ISWD1D12, it looks) so they don't just punch stuff (I think I already had those in my TP2).


I agree, everything else about them suggests they are equivalent to Medium Constructs from the maze, and they have 1d12 weapons.

Qwinn

Edited by Qwinn, 25 January 2010 - 03:17 PM.