nwn2fixes / player

Fixes for the casual NwN2 player
27 stars 11 forks source link

SOZ : Redfeyer's singing pendnant quest bug #10

Closed Question2 closed 5 years ago

Question2 commented 5 years ago

If you pick up the pendant before you get the quest from redfeyer in rassatan, redfeyer will not recognize that you have the pendant and you wont be able to give it to him for the quest.

You can still keep making listen checks in the singing cavern after picking up the pendant as well, as if you had never picked it up.

kevL commented 5 years ago

i'm curious how you got the Pendant without talking to Redfeyer ... things look (reasonably) okay in the toolset, and the entrance to the SingingCaverns shouldn't appear unless Redfeyer tells his tale.

Did you find a Singing Pendant someplace other than in the caverns?

Question2 commented 5 years ago

I was definately able to find the entrance to the caverns without starting the quest, and i found an old forum thread where someone else had the same problem (he got the pendant before starting the quest, then found out it glitched and he couldnt turn it in).

kevL commented 5 years ago

if I can't reproduce the problem, if you can't give me step by step instructions to get into the caverns without talking to Redfeyer first (I tried ...) ... maybe i'll look at Redfeyer's dialog some more and try to think something up that doesn't create more bugs than it should solve ...

Question2 commented 5 years ago

Hmm...all i did was go near the area and managed to find it.

What is the search DC to find the singing caverns? Is it set too low?

kevL commented 5 years ago

it's set to "100" -- which in addition to basically being impossible, there's also code that explicitly denies searching for things like the cave entrance if they're set to "100".

kevL commented 5 years ago

I looked more closely at this. This is the way it's set up: There's an Ipoint placeable on the OL ('g00_ip_to_g08') and it has a heartbeat script 'gb_hidden_loc_hb' (in the SoZ Campaign folder). It also has a variable set: iSpotDC=100

it has a second variable: fDist=10

this is the main function of 'gb_hidden_loc_hb' ```c++ void main() { object oPC = GetFactionLeader(GetFirstPC()); float fDist = GetLocalFloat(OBJECT_SELF, "fDist"); string sResRef = GetTravelPlaceableResRef(); if (GetArea(oPC) != GetArea(OBJECT_SELF)) return; if (GetCustomHeartbeat(OBJECT_SELF) != 250) SetCustomHeartbeat(OBJECT_SELF, 250); if (GetGlobalInt(sResRef + "_DISCOVERED")) RevealLocation(oPC, FALSE); else if (GetDistanceBetween(OBJECT_SELF, oPC) < fDist) { int iSpotDC = GetLocalInt(OBJECT_SELF, "iSpotDC"); // Uses Search skill, despite the name of the variable. if (GetSkillRank(SKILL_SEARCH, oPC) >= iSpotDC) { SetGlobalInt(sResRef + "_DISCOVERED", TRUE); RevealLocation(oPC, TRUE); } /* Auto-reveal the hotspot if the player walks on top of it, unless the DC is set to 100. */ else if (GetDistanceBetween(OBJECT_SELF, oPC) <= 1.5f && iSpotDC < 100) { SetGlobalInt(sResRef + "_DISCOVERED", TRUE); RevealLocation(oPC, TRUE); } } } ```


RevealLocation() creates the cave entrance placeable (and enables the map-pin, plays FX, etc.). According to the code in main() it is possible to reveal the cave entrance if the party-leader is within 10 meters* and has a Search skill of 100+ (ignoring the fact that the Ipoint has iSpotDC=100)

So, uh, did you do something that gave your PC a Search skill of 100+

* note that distances are exaggerated on the OL

Question2 commented 5 years ago

Oh i probably had a search skill of 100+ then. Thanks for looking into this.