![]()
|
|
If you give her blood samples, a topic info fragment (i.e. a script that lives on the respective line of dialogue) calls the function CashBlood() on BoSDPQuestScript:
This means:
(1) You get paid for every sample you turn in.
(2) The running total of samples turned in is stored in the global variable BoSX111Threshold. Once the value of this global is at least 20, Neriah prepares the compound. This is recorded in the global variable BoSNeriahRadDone and BoSX111Threshold is subsequently reset to zero. Note that samples in excess of 20 do not count. Once BoSNeriahRadDone is flipped, BoSX111Threshold gets reset to zero, no matter whether you turned in exactly 20 or any number in excess of that. Only one batch of 6 will be produced.
Subsequently, Neriah speaks a response line, and another topic info fragment adds the samples to the player's inventory:
BoSNeriahRadDone is used for dialogue conditioning: start value is 0; the first time she prepares the compound, the value is set to 1; the topic info fragment susequently sets it to 2 and for the rest of the game, the value will alternate from 2 to 3. This is to let her speak a different line when she prepares the compound for the first time.
---------------------------------------------------------------------------------------------------------------------------
I don't see anything in this setup that would classify as an oversight or even a mistake. They clearly didn't want to give the player more than one batch of six at a time, and they coded it accordingly.
This design decision may be questionable, but it is not a bug.
Function CashBlood() BloodCurrentCount = Game.GetPlayer().GetItemCount(BoSBloodSample) BloodPayout = ( BloodCurrentCount * BoSBloodPay.GetValueInt()) Game.GetPlayer().RemoveItem(BoSBloodSample,BloodCurrentCount) Game.GetPlayer().AddItem(Caps001,BloodPayout) BoSX111Threshold.SetValueInt(BoSX111Threshold.GetValueInt() + BloodCurrentCount) if BoSX111Threshold.GetValueInt() >= 20 if BoSNeriahRadDone.GetValue() == 0 BoSNeriahRadDone.SetValue(1) BoSX111Threshold.SetValue(0) elseif BoSNeriahRadDone.GetValue() == 2 BoSNeriahRadDone.SetValue(3) BoSX111Threshold.SetValue(0) endif endif endFunction
This means:
(1) You get paid for every sample you turn in.
(2) The running total of samples turned in is stored in the global variable BoSX111Threshold. Once the value of this global is at least 20, Neriah prepares the compound. This is recorded in the global variable BoSNeriahRadDone and BoSX111Threshold is subsequently reset to zero. Note that samples in excess of 20 do not count. Once BoSNeriahRadDone is flipped, BoSX111Threshold gets reset to zero, no matter whether you turned in exactly 20 or any number in excess of that. Only one batch of 6 will be produced.
Subsequently, Neriah speaks a response line, and another topic info fragment adds the samples to the player's inventory:
Function Fragment_End(ObjectReference akSpeakerRef) Actor akSpeaker = akSpeakerRef as Actor ;BEGIN CODE BoSNeriahRadDone.SetValue(2) Game.GetPlayer().AddItem(BoSX111Compound,6) ;END CODE EndFunction
BoSNeriahRadDone is used for dialogue conditioning: start value is 0; the first time she prepares the compound, the value is set to 1; the topic info fragment susequently sets it to 2 and for the rest of the game, the value will alternate from 2 to 3. This is to let her speak a different line when she prepares the compound for the first time.
---------------------------------------------------------------------------------------------------------------------------
I don't see anything in this setup that would classify as an oversight or even a mistake. They clearly didn't want to give the player more than one batch of six at a time, and they coded it accordingly.
This design decision may be questionable, but it is not a bug.
Comment #1 Apr 20, 2024 8:18 am
Edited by Sclerocephalus on Apr 20, 2024 8:19 am
Showing Comments 1 - 1 of 1