Further file organization
Further file organization
This commit is contained in:
150
nwn/nwnprc/trunk/scripts/prc_pnp_fam_conv.nss
Normal file
150
nwn/nwnprc/trunk/scripts/prc_pnp_fam_conv.nss
Normal file
@@ -0,0 +1,150 @@
|
||||
//:://////////////////////////////////////////////
|
||||
//:: 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);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user