Further file organization
Further file organization
This commit is contained in:
228
nwn/nwnprc/trunk/scripts/prc_doprecache.nss
Normal file
228
nwn/nwnprc/trunk/scripts/prc_doprecache.nss
Normal file
@@ -0,0 +1,228 @@
|
||||
/**
|
||||
* A script that reads some 2da values through the caching read function.
|
||||
*
|
||||
* Currently caches:
|
||||
* - feat & spells values specified in the precacherows.2da, which is
|
||||
* generated via the prc.jar prec2dagen tool.
|
||||
* - Flaming_Sword's crafting system data. craft_*.2da and prc_craft_gen_it.2da
|
||||
*
|
||||
* NOTE: Intended to be run via the make process using the Precacher.mod module,
|
||||
* not by users. Takes some 30+ minutes to run to completion.
|
||||
*/
|
||||
#include "inc_utility"
|
||||
|
||||
void auxLoop(int i);
|
||||
void precacheSpell(int row);
|
||||
void precacheNewSpell(int row);
|
||||
void precachePower(int row);
|
||||
void precachePowerFeat(int row);
|
||||
void precachePowerSpell(int row);
|
||||
void handleCraft();
|
||||
void handleCraftProperties2da(string s2da, int row = 0);
|
||||
void handleCraftItems2da(int row = 0);
|
||||
void handleMaterialComponents(int row = 0);
|
||||
|
||||
void main()
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
auxLoop(i);
|
||||
}
|
||||
|
||||
void auxLoop(int i)
|
||||
{
|
||||
int j;
|
||||
string sType;
|
||||
for(j = i + 10; i < j; i++)
|
||||
{
|
||||
// Do not want to cache this stuff, so we use Get2DAString() instead of Get2DACache()
|
||||
sType = Get2DAString("precacherows", "Type", i);
|
||||
DoDebug("Handling precache row " + IntToString(i));
|
||||
|
||||
// The precacher program outputs one last, blank row. Every other row has non-empty Type column
|
||||
if(sType != "")
|
||||
{
|
||||
if (sType == "N" )
|
||||
precacheSpell(StringToInt(Get2DAString("precacherows", "RowNum", i)));
|
||||
else if(sType == "NS")
|
||||
precacheNewSpell(StringToInt(Get2DAString("precacherows", "RowNum", i)));
|
||||
else if(sType == "P" )
|
||||
precachePower(StringToInt(Get2DAString("precacherows", "RowNum", i)));
|
||||
else if(sType == "PF" )
|
||||
precachePowerFeat(StringToInt(Get2DAString("precacherows", "RowNum", i)));
|
||||
else if(sType == "PS" )
|
||||
precachePowerSpell(StringToInt(Get2DAString("precacherows", "RowNum", i)));
|
||||
|
||||
else
|
||||
DoDebug("Unknown precache type: " + sType);
|
||||
}
|
||||
else
|
||||
{
|
||||
DoDebug("Finished handling precacherows.2da");
|
||||
DelayCommand(0.0f, handleCraft());
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
DelayCommand(0.0f, auxLoop(i));
|
||||
}
|
||||
|
||||
void precacheSpell(int row)
|
||||
{
|
||||
Get2DACache("spells", "Name", row);
|
||||
Get2DACache("spells", "School", row);
|
||||
Get2DACache("spells", "VS", row);
|
||||
Get2DACache("spells", "Bard", row);
|
||||
Get2DACache("spells", "Cleric", row);
|
||||
Get2DACache("spells", "Druid", row);
|
||||
Get2DACache("spells", "Paladin", row);
|
||||
Get2DACache("spells", "Ranger", row);
|
||||
Get2DACache("spells", "Wiz_Sorc", row);
|
||||
if(Get2DACache("spells", "Innate", row) == "")
|
||||
Get2DACache("spells", "Master", row);
|
||||
// Get2DACache("spells", "ItemImmunity", row);
|
||||
// Get2DACache("spells", "ConjTime", row);
|
||||
// Get2DACache("spells", "CastTime", row);
|
||||
Get2DACache("spells", "Category", row);
|
||||
Get2DACache("spells", "HostileSetting", row);
|
||||
Get2DACache("spells", "ImpactScript", row);
|
||||
Get2DACache("spells", "Range", row);
|
||||
Get2DACache("spells", "TargetType", row);
|
||||
Get2DACache("spells", "UserType", row);
|
||||
Get2DACache("prc_spells", "Subschool", row);
|
||||
Get2DACache("prc_spells", "Descriptor", row);
|
||||
Get2DACache("prc_spells", "XP", row);
|
||||
Get2DACache("prc_spells", "GP", row);
|
||||
Get2DACache("prc_spells", "Component1", row);
|
||||
Get2DACache("prc_spells", "CompName1", row);
|
||||
Get2DACache("prc_spells", "Component2", row);
|
||||
Get2DACache("prc_spells", "CompName2", row);
|
||||
Get2DACache("prc_spells", "Component3", row);
|
||||
Get2DACache("prc_spells", "CompName3", row);
|
||||
Get2DACache("prc_spells", "Component4", row);
|
||||
Get2DACache("prc_spells", "CompName4", row);
|
||||
}
|
||||
|
||||
void precacheNewSpell(int row)
|
||||
{
|
||||
Get2DACache("spells", "Name", row);
|
||||
Get2DACache("spells", "VS", row);
|
||||
Get2DACache("spells", "Innate", row);
|
||||
Get2DACache("spells", "Master", row);
|
||||
}
|
||||
|
||||
void precachePower(int row)
|
||||
{
|
||||
Get2DACache("spells", "Innate", row);
|
||||
Get2DACache("spells", "Range", row); // Needed by the PRCGetSpellTargetObject() in UsePower()
|
||||
// Get2DACache("spells", "ConjTime", row);
|
||||
// Get2DACache("spells", "CastTime", row);
|
||||
}
|
||||
|
||||
void precachePowerFeat(int row)
|
||||
{
|
||||
Get2DACache("feat", "Constant", row);
|
||||
Get2DACache("feat", "DESCRIPTION", row);
|
||||
if(Get2DACache("feat", "PREREQFEAT1", row) != "")
|
||||
Get2DACache("feat", "PREREQFEAT2", row);
|
||||
if(Get2DACache("feat", "OrReqFeat0", row) != "" &&
|
||||
Get2DACache("feat", "OrReqFeat1", row) != "" &&
|
||||
Get2DACache("feat", "OrReqFeat2", row) != "" &&
|
||||
Get2DACache("feat", "OrReqFeat3", row) != "")
|
||||
Get2DACache("feat", "OrReqFeat4", row);
|
||||
}
|
||||
|
||||
void precachePowerSpell(int row)
|
||||
{
|
||||
// Get2DACache("spells", "Name", row);
|
||||
Get2DACache("spells", "School", row);
|
||||
if(Get2DACache("spells", "Innate", row) == "")
|
||||
Get2DACache("spells", "Master", row);
|
||||
Get2DACache("spells", "ItemImmunity", row);
|
||||
Get2DACache("spells", "ConjTime", row);
|
||||
Get2DACache("spells", "CastTime", row);
|
||||
// Get2DACache("spells", "HostileSetting", row);
|
||||
Get2DACache("spells", "ImpactScript", row);
|
||||
Get2DACache("spells", "Range", row);
|
||||
// Get2DACache("spells", "TargetType", row);
|
||||
// Get2DACache("spells", "UserType", row);
|
||||
}
|
||||
|
||||
void handleCraft()
|
||||
{
|
||||
DoDebug("Precaching crafting 2das");
|
||||
DelayCommand(0.0f, handleCraftProperties2da("craft_armour"));
|
||||
DelayCommand(0.0f, handleCraftProperties2da("craft_ring"));
|
||||
DelayCommand(0.0f, handleCraftProperties2da("craft_weapon"));
|
||||
DelayCommand(0.0f, handleCraftProperties2da("craft_wondrous"));
|
||||
DelayCommand(0.0f, handleCraftItems2da());
|
||||
}
|
||||
|
||||
void handleCraftProperties2da(string s2da, int row = 0)
|
||||
{
|
||||
int max, i;
|
||||
for(max = row + 10; row < max; row++)
|
||||
{
|
||||
if(Get2DAString(s2da, "Label", row) != "")
|
||||
{
|
||||
DoDebug("Handling " + s2da + " row " + IntToString(row));
|
||||
|
||||
Get2DACache(s2da, "Name", row);
|
||||
//Get2DACache(s2da, "Description", row);
|
||||
Get2DACache(s2da, "PropertyType", row);
|
||||
Get2DACache(s2da, "Level", row);
|
||||
Get2DACache(s2da, "Race", row);
|
||||
Get2DACache(s2da, "Feat", row);
|
||||
Get2DACache(s2da, "Skill", row);
|
||||
Get2DACache(s2da, "SkillRanks", row);
|
||||
Get2DACache(s2da, "SpellPattern", row);
|
||||
Get2DACache(s2da, "Spell1", row);
|
||||
Get2DACache(s2da, "Spell2", row);
|
||||
Get2DACache(s2da, "Spell3", row);
|
||||
Get2DACache(s2da, "SpellOR1", row);
|
||||
Get2DACache(s2da, "SpellOR2", row);
|
||||
Get2DACache(s2da, "AlignGE", row);
|
||||
Get2DACache(s2da, "AlignLC", row);
|
||||
Get2DACache(s2da, "Enhancement", row);
|
||||
Get2DACache(s2da, "AdditionalCost", row);
|
||||
if(s2da == "craft_armour" || s2da == "craft_weapon")
|
||||
Get2DACache(s2da, "ReplaceLast", row);
|
||||
else
|
||||
Get2DACache(s2da, "BaseItem", row);
|
||||
/*for(i = 1; i <= 6; i++)
|
||||
{
|
||||
Get2DACache(s2da, "Type" + IntToString(i), row);
|
||||
Get2DACache(s2da, "SubType" + IntToString(i), row);
|
||||
Get2DACache(s2da, "CostTableValue" + IntToString(i), row);
|
||||
Get2DACache(s2da, "Param1Value" + IntToString(i), row);
|
||||
}*/
|
||||
Get2DACache(s2da, "Epic", row);
|
||||
Get2DACache(s2da, "Special", row);
|
||||
}
|
||||
else
|
||||
{
|
||||
DoDebug("Finished handling " + s2da + ".2da");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
DelayCommand(0.0f, handleCraftProperties2da(s2da, row));
|
||||
}
|
||||
|
||||
void handleCraftItems2da(int row = 0)
|
||||
{
|
||||
int max;
|
||||
for(max = min(row + 25, PRCGetFileEnd("prc_craft_gen_it")); row < max; row++)
|
||||
{
|
||||
DoDebug("Handling prc_craft_gen_it row " + IntToString(row));
|
||||
|
||||
Get2DACache("prc_craft_gen_it", "Name", row);
|
||||
Get2DACache("prc_craft_gen_it", "Blueprint", row);
|
||||
Get2DACache("prc_craft_gen_it", "Type", row);
|
||||
}
|
||||
|
||||
if(row < PRCGetFileEnd("prc_craft_gen_it"))
|
||||
DelayCommand(0.0f, handleCraftItems2da(row));
|
||||
else
|
||||
DoDebug("Finished handling prc_craft_gen_it.2da");
|
||||
}
|
Reference in New Issue
Block a user