Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
150 lines
5.0 KiB
Plaintext
150 lines
5.0 KiB
Plaintext
//:://////////////////////////////////////////////
|
|
//:: Short description
|
|
//:: prc_pnp_fam_conv
|
|
//:://////////////////////////////////////////////
|
|
/** @file
|
|
@todo Primo: Could you fill in the file comments
|
|
and TLKify?
|
|
|
|
|
|
@author Primogenitor
|
|
@date Created - yyyy.mm.dd
|
|
@date Modified - 2005.09.24 - Adapted to new
|
|
DynConvo system - Ornedan
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:://////////////////////////////////////////////
|
|
|
|
#include "inc_dynconv"
|
|
#include "inc_persist_loca"
|
|
#include "prc_inc_switch"
|
|
#include "inc_2dacache"
|
|
|
|
//////////////////////////////////////////////////
|
|
/* Constant defintions */
|
|
//////////////////////////////////////////////////
|
|
|
|
const int STAGE_ENTRY = 0;
|
|
const int STAGE_SUMMON = 1;
|
|
|
|
|
|
//////////////////////////////////////////////////
|
|
/* Aid functions */
|
|
//////////////////////////////////////////////////
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////
|
|
/* Main function */
|
|
//////////////////////////////////////////////////
|
|
|
|
void main()
|
|
{
|
|
object oPC = GetPCSpeaker();
|
|
int bPnP = GetPRCSwitch(PRC_PNP_FAMILIARS);
|
|
/* Get the value of the local variable set by the conversation script calling
|
|
* this script. Values:
|
|
* DYNCONV_ABORTED Conversation aborted
|
|
* DYNCONV_EXITED Conversation exited via the exit node
|
|
* DYNCONV_SETUP_STAGE System's reply turn
|
|
* 0 Error - something else called the script
|
|
* Other The user made a choice
|
|
*/
|
|
int nValue = GetLocalInt(oPC, DYNCONV_VARIABLE);
|
|
// The stage is used to determine the active conversation node.
|
|
// 0 is the entry node.
|
|
int nStage = GetStage(oPC);
|
|
|
|
// Check which of the conversation scripts called the scripts
|
|
if(nValue == 0) // All of them set the DynConv_Var to non-zero value, so something is wrong -> abort
|
|
return;
|
|
|
|
if(nValue == DYNCONV_SETUP_STAGE)
|
|
{
|
|
// Check if this stage is marked as already set up
|
|
// This stops list duplication when scrolling
|
|
if(!GetIsStageSetUp(nStage, oPC))
|
|
{
|
|
if(nStage == STAGE_ENTRY)
|
|
{
|
|
if(bPnP)
|
|
{
|
|
SetHeader("Please select a familiar.\nAll familiars will cost 100GP to summon.");
|
|
|
|
int i;
|
|
string sName;
|
|
for(i = 0; i < 30; i++)
|
|
{
|
|
if(Get2DACache("prc_familiar", "BASERESREF", i) != "")
|
|
{
|
|
sName = GetStringByStrRef(StringToInt(Get2DACache("prc_familiar", "STRREF", i)));
|
|
if(sName == "")
|
|
sName = Get2DACache("prc_familiar", "NAME", i);
|
|
AddChoice(sName, i, oPC);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
SetHeader("Please select a familiar.");
|
|
|
|
int i;
|
|
string sName;
|
|
for(i = 0; i < 30; i++)
|
|
{
|
|
if(Get2DACache("hen_familiar", "BASERESREF", i) != "")
|
|
{
|
|
sName = GetStringByStrRef(StringToInt(Get2DACache("hen_familiar", "STRREF", i)));
|
|
if(sName == "")
|
|
sName = Get2DACache("hen_familiar", "NAME", i);
|
|
AddChoice(sName, i, oPC);
|
|
}
|
|
}
|
|
}
|
|
|
|
MarkStageSetUp(nStage, oPC);
|
|
}
|
|
else if(nStage == STAGE_SUMMON)
|
|
{
|
|
SetHeader("Familiar selected. Use the feat again to summon your familiar.");
|
|
}
|
|
}
|
|
|
|
// Do token setup
|
|
SetupTokens();
|
|
SetDefaultTokens(); // Set the next, previous, exit and wait tokens to default values
|
|
}
|
|
else if(nValue == DYNCONV_EXITED)
|
|
{
|
|
// End of conversation cleanup
|
|
}
|
|
else if(nValue == DYNCONV_ABORTED)
|
|
{
|
|
// Abort conversation cleanup
|
|
}
|
|
else
|
|
{
|
|
int nChoice = GetChoice(oPC);
|
|
if(nStage == STAGE_ENTRY)
|
|
{
|
|
nStage = STAGE_SUMMON;
|
|
if(bPnP && GetGold(oPC) >= 100)
|
|
{
|
|
SetPersistantLocalInt(oPC, "PnPFamiliarType", nChoice);
|
|
// Take 100 gold - the cost of obtaining a familiar as per PnP
|
|
TakeGoldFromCreature(100, oPC, TRUE);
|
|
//ExecuteScript("nw_s2_familiar", oPC);
|
|
}
|
|
else if(bPnP)
|
|
FloatingTextStringOnCreature("You don't have enough gold to summon familiar.", oPC, FALSE);
|
|
if(!bPnP)
|
|
{
|
|
nChoice++;
|
|
SetPersistantLocalInt(oPC, "FamiliarType", nChoice);
|
|
//ExecuteScript("nw_s2_familiar", oPC);
|
|
}
|
|
}
|
|
// Store the stage value. If it has been changed, this clears out the choices
|
|
SetStage(nStage, oPC);
|
|
}
|
|
} |