Track10 Posted March 24, 2011 Share Posted March 24, 2011 Hey guys. I'm having some trouble with my quest objectives. Example. Very Simplified. Objective & Stage 1 : Found a note, Track down this Bob mentioned in the note. ( associated script, if MetBob =0 SetStage 1 ) Objective & Stage 2 : Found a Note. I probably wanna show Bob this. ( associated script, if MetBob =1 SetStage 2) Objective & Stage 3 : Showed Bob the note, but decided not to help. I can talk to him later if I want to help (associated script. if PChelp = 0 SetStage 3) Objective & Stage 5 (4 doesn't exist) : Bob wants to track down the people. (associated script. if PCHelp = 1 SetStage 5) Now lets assume MetBob = 1 so Quest Stage is 2 (This works btw, Quest stage/objective 1 is hidden) and I go talk to bob and I decide to help him, it should trigger Stage 5. Now my problem is, Objective 1 also shows up on my interface instead of being ignored, when doing SetStage 5. I think it's very weird, and I can't hunt down what specific thing is triggering this kind of behaviour. Anyone got any ideas? Thanks in advance. Result script from Dialogue goes like this set aaDinnQuest.DinnPCHelp to 1 if (GetStage aaDinnQuest == 2) SetObjectiveCompleted aaDinnQuest 2 1 endif SetStage aaDinnQuest 5 Could this be a issue? Link to comment Share on other sites More sharing options...
davidlallen Posted March 24, 2011 Share Posted March 24, 2011 "setobjectivecompleted" is different from "setobjectivedisplayed". If you want to remove an objective from the list of items displayed in the quest page of pipboy, you must do "setobjectivedisplayed ... 0". Basically an objective can be in any of three useful states: displayed and completed, displayed and not completed, or not displayed. Link to comment Share on other sites More sharing options...
Track10 Posted March 24, 2011 Author Share Posted March 24, 2011 "setobjectivecompleted" is different from "setobjectivedisplayed". If you want to remove an objective from the list of items displayed in the quest page of pipboy, you must do "setobjectivedisplayed ... 0". Basically an objective can be in any of three useful states: displayed and completed, displayed and not completed, or not displayed. Yeah, but for some reason my Objective 1 would show up on stage 5 but not on stage 2 which I thought was weird and what I think is even more weird is that Objective 3 doesn't behave like that. so the Result Script from the Dialogue should go like set aaDinnQuest.DinnPCHelp to 1 if (GetStage aaDinnQuest == 2) SetObjectiveCompleted aaDinnQuest 2 1 SetObjectiveDisplayed aaDinnQuest 1 0 endif SetStage aaDinnQuest 5 or am I wrong once again? :) Link to comment Share on other sites More sharing options...
davidlallen Posted March 24, 2011 Share Posted March 24, 2011 It is hard to tell exactly what effect you want. You need to manually display and undisplay each objective. If there are temporary objectives which should disappear once they are achieved, then what you have written is correct. Link to comment Share on other sites More sharing options...
Track10 Posted March 24, 2011 Author Share Posted March 24, 2011 I Want to stop Objective 1 to stop showing when I set Objective 2 to complete and Objective 5 to show. I guess it's kinda hard to explain, but thats exactly whats happening. I do the code mentioned in my first post and Objective 1 decides it wan to show up, for some reason, which is what I want to stop happening, cause that's not supposed to happen. But I'll try some creative scripting, and see if I can fool Objective 1 to stay hidden :) Link to comment Share on other sites More sharing options...
davidlallen Posted March 24, 2011 Share Posted March 24, 2011 I notice you have used "getstage". Possibly you may use "getstagedone" to achieve a more precise effect. "Getstagedone" returns whether that stage specifically has been done, regardless of any other stages. "Getstage" returns the highest number stage which is complete, even if any lower stages remain undone. For example, suppose on a new quest you have stage 1 and stage 2, and you call only "setstage ... 2". Then "getstagedone ... 1" will return 0, and "getstagedone ... 2" will return 1. This allows you to tell precisely which stages were done. On the other hand, "getstage" will return 2 regardless of whether stage 1 was complete. Maybe using "getstagedone" will help. Link to comment Share on other sites More sharing options...
Recommended Posts