Aschbourne_PRC8/_module/nss/_craft_scribe.nss

1948 lines
81 KiB
Plaintext
Raw Normal View History

2024-06-14 10:48:20 -04:00
#include "nw_i0_plot"
string GetInk(object oItem);
string GetComponent(object oItem);
int GetInkChance(object oItem);
int CheckComponent(object oPC, string sComponent1, string sComponent2, string sComponent3, int iComponent1, int iComponent2, int iComponent3, int iComponent1Stackable, int iComponent2Stackable, int iComponent3Stackable);
void GetNextStackedItem(object oPC, string sItemTag, int iCount, int iMode, string sStackResRef);
void CreateAnObject(string sResource, object oPC, int iStackSize);
void GetNextItemPossessedBy(object oPC, string sItemTag);
void CreateInk(object oSelf, string sItemTag, object oPC);
void LoseSpell(object oPC,int iSpellNum);
string CustomComponent(int iSpellNum);
void CreateACopy(object oSelf, object oItem, object oPC);
//Set this to any value but '1' to turn off the ability to disturb the inscriber
const int DISTURB_ME = 1;
const string E_OF_ACID = "essence001";
const string E_OF_NECROSIS = "essence002";
const string E_OF_LUCK = "essence003";
const string E_OF_FIVE_SENSES = "essence004";
const string E_OF_ABILITY = "essence005";
const string E_OF_ELECTRICITY = "essence006";
const string E_OF_THE_MIND = "essence007";
const string E_OF_VENOM = "essence008";
const string E_OF_THE_TRICKSTER = "essence009";
const string E_OF_LIGHT = "essence010";
const string E_OF_FIRE = "essence011";
const string E_OF_THE_PLANES = "essence012";
const string E_OF_POWER = "essence013";
const string E_OF_THE_ELEMENTS = "essence014";
const string E_OF_ENERGY = "essence015";
const string E_OF_PROTECTION = "essence016";
const string E_OF_COLD = "essence017";
const string E_OF_PLANT = "essence018";
const string E_OF_SPIRIT = "essence019";
const string E_OF_TRANSMUTATION = "essence020";
void main()
{
object oPC = GetLastDisturbed();
object oItem = GetInventoryDisturbItem();
object oSelf = OBJECT_SELF;
object oTemp = OBJECT_INVALID;
string sItemTag=GetTag(oItem);
string sOldTag = sItemTag;
string sComponent1;
string sComponent2;
string sComponent3;
string sName;
int iComponent1;
int iComponent2;
int iComponent3;
int iDifficulty;
int iRandom;
int iSkillGain;
int iScribeSkill = GetCampaignInt("UOACraft","iScribeSkill",oPC);
int iScribeChance = iScribeSkill;
if (iScribeChance < 350)
{
iScribeChance = GetAbilityScore(oPC,ABILITY_DEXTERITY)*5;
iScribeChance = iScribeChance+(GetAbilityScore(oPC,ABILITY_INTELLIGENCE)*3);
iScribeChance = iScribeChance+(GetAbilityScore(oPC,ABILITY_WISDOM)*2);
iScribeChance = iScribeChance*3;
if (iScribeChance>350)iScribeChance=350;
if (iScribeSkill > iScribeChance) iScribeChance=iScribeSkill;
}
if (GetInventoryDisturbType()== INVENTORY_DISTURB_TYPE_ADDED)
{
// The following 3 lines are to ensure compatability with UOAbigal's Persistent Token System.
// You can replace them with whatever 'no-drop' code you have or comment them out.
string sNoDropFlag = (GetStringLeft(GetTag(oItem),6));
if (sNoDropFlag == "NoDrop" || sNoDropFlag == "TOKEN_"||sNoDropFlag=="_TBOX_")
return;
if (GetBaseItemType(oItem)==BASE_ITEM_LARGEBOX)
{
DestroyObject(oItem);
SendMessageToPC(oPC,"To avoid possible dupe exploits, the container placed in this bag may be destroyed.");
return;
}
// End of compatability portion.
CopyItem(oItem,oPC,TRUE);
DestroyObject(oItem);
FloatingTextStringOnCreature("You can only select scrolls or inks from this station.",oPC,FALSE);
return;
}
if (GetLocalInt(oSelf,"iAmInUse")!=0)
{
FloatingTextStringOnCreature("This desk is already in use. You must wait until the desk is free.",oPC,FALSE);
//Use ActionTakeFrom to avoid a que'd scroll from being destroyed by mischevious players.
//This is required, as the scroll being scribed needs to remain in the desk for 15 seconds.
//CopyObject/DestroyObject combo would erase the que'd scroll and return OBJECT_INVALID.
if (DISTURB_ME==1)
{
SetLocalInt(oSelf,"iWasDisturbed",99);
SetLocalObject(oSelf,"oDisturbed",oPC);
}
AssignCommand(oSelf,ActionTakeItem(oItem,oPC));
return;
}
if (GetStringLeft(sItemTag,7)=="SWITCH_")
{
if (sItemTag=="SWITCH_PARCHMENT_NORMAL")
{
SetLocalInt(oPC,"iUseThisParchment",0);
FloatingTextStringOnCreature("Now using normal blank parchment scrolls.",oPC,FALSE);
}
if (sItemTag=="SWITCH_PARCHMENT_BLACK")
{
SetLocalInt(oPC,"iUseThisParchment",1);
FloatingTextStringOnCreature("Now using blank black parchment scrolls.",oPC,FALSE);
}
if (sItemTag=="SWITCH_PARCHMENT_WHITE")
{
SetLocalInt(oPC,"iUseThisParchment",2);
FloatingTextStringOnCreature("Now using blank white parchment scrolls.",oPC,FALSE);
}
if (sItemTag=="SWITCH_SCROLL")
{
SetLocalInt(oPC,"iScribeMode",0);
FloatingTextStringOnCreature("Now preparing to scribe a spell.",oPC,FALSE);
}
if (sItemTag=="SWITCH_INK")
{
SetLocalInt(oPC,"iScribeMode",1);
FloatingTextStringOnCreature("Now preparing to make scroll ink.",oPC,FALSE);
}
DestroyObject(oItem);
//ExecuteScript("_onclose_clear",OBJECT_SELF);
//ExecuteScript("_open_anvil",OBJECT_SELF);
string sTagSelf = GetTag(oSelf);
AssignCommand(oPC,DoPlaceableObjectAction(oSelf,PLACEABLE_ACTION_USE));
AssignCommand(oPC,DelayCommand(1.5,DoPlaceableObjectAction(GetNearestObjectByTag(sTagSelf,oPC,1),PLACEABLE_ACTION_USE)));
return;
}
int iUseThisParchment = GetLocalInt(oPC,"iUseThisParchment");
int iScribeMode = GetLocalInt(oPC,"iScribeMode");
//Begin code for fixing stackables issue
if (GetStringRight(sItemTag,6)=="_Store")
{
//oTemp = CopyObject(oItem,GetLocation(oPC),oPC,GetStringLeft(sItemTag,GetStringLength(sItemTag)-6));
//oItem = oTemp;
//sItemResRef = GetResRef(oItem);
//sItemTag = GetTag(oItem);
//SendMessageToPC(oPC,"*******Old Tag: "+sItemTag+"*******");
sItemTag = GetStringLeft(sItemTag,GetStringLength(sItemTag)-6);
//SendMessageToPC(oPC,"*******New Tag: "+sItemTag+"*******");
SetLocalInt(oItem,"iAmValid",1);
}
//End code for fixing stackables issue
if (iScribeMode==1) //Prepare Ink
{
sName = GetName(oItem);
FloatingTextStringOnCreature("Preparing ink for "+sName+" ....",oPC,FALSE);
sItemTag = "ink_"+GetResRef(oItem);
sComponent1 = GetInk(oItem);
sComponent2 = "ink_black";
sComponent3 = GetComponent(oItem);
iDifficulty = GetInkChance(oItem);
if (iDifficulty<3)
{
iDifficulty = -150+(50*iDifficulty);
}
else
{
iDifficulty = 30+(80*iDifficulty);
}
if (iDifficulty>iScribeChance)
{
DelayCommand(1.0,FloatingTextStringOnCreature("You have no idea how to prepare this ink...",oPC,FALSE));
CopyObject(oItem,GetLocation(oSelf),oSelf,GetTag(oItem));
DestroyObject(oItem);
return;
}
//Do Animations and Sounds here
AssignCommand(oPC,ActionPlayAnimation(ANIMATION_LOOPING_GET_MID,0.5,12.0));
PlaySound("as_na_bushmove2");
PlaySound("al_na_steamlg1");
DelayCommand(0.5,PlaySound("al_na_cvstream1"));
DelayCommand(1.0,PlaySound("al_na_stream1"));
DelayCommand(1.0,PlaySound("al_na_sludggrat1"));
DelayCommand(4.0,PlaySound("al_na_cvstream1"));
DelayCommand(4.5,PlaySound("al_na_stream1"));
DelayCommand(5.0,PlaySound("al_na_steamlg1"));
DelayCommand(6.0,PlaySound("al_na_sludggrat1"));
DelayCommand(7.5,PlaySound("al_na_cvstream1"));
DelayCommand(8.0,PlaySound("al_na_stream1"));
DelayCommand(11.0,PlaySound("as_na_bushmove1"));
SetLocalInt(OBJECT_SELF,"iAmInUse",99);
DelayCommand(12.5,SetLocalInt(OBJECT_SELF,"iAmInUse",0));
//Check for components
if (CheckComponent(oPC,sComponent1,sComponent2,sComponent3,1,1,1,1,1,2)==0)
{
DelayCommand(12.0,FloatingTextStringOnCreature("You do not have all of the components required to mix this ink...",oPC,FALSE));
//CopyObject(oItem,GetLocation(oSelf),oSelf,sOldTag);
CreateItemOnObject(GetResRef(oItem),OBJECT_SELF,1);
DestroyObject(oItem);
return;
}
iScribeChance = iScribeChance - iDifficulty;
if (iScribeChance<1) iScribeChance=1;
//Do skill check here
iRandom = (Random(1000)+Random(1000)+Random(1000))/3;
if (iRandom<=iScribeChance)
{
AssignCommand(oPC,DelayCommand(12.0,FloatingTextStringOnCreature("You successfully mix the "+sName+" ink.",oPC,FALSE)));
if (Random(1000) >= iScribeSkill)
{
if (d10(1)+1 >= iScribeChance/100) iSkillGain = 1;
}
}
else
{
AssignCommand(oPC,DelayCommand(12.0,FloatingTextStringOnCreature("The ink fails to react properly with the components, and is ruined.",oPC,FALSE)));
CopyObject(oItem,GetLocation(oSelf),oSelf,sOldTag);
DestroyObject(oItem);
return;
}
//Ensure no more than 1 skill gain every 10 seconds to avoid token droppage.
if (iSkillGain ==1)
{
if (GetLocalInt(oPC,"iSkillGain")!= 0)
{
iSkillGain = 0;
}
else
{
SetLocalInt(oPC,"iSkillGain",99);
AssignCommand(GetArea(oPC),DelayCommand(10.0,SetLocalInt(oPC,"iSkillGain",0)));
}
}
// Do Skill Gains
string sOldSkill = "";
string sOldSkill2 = "";
if (iSkillGain==1)
{
iScribeSkill++;
sOldSkill2 = IntToString(iScribeSkill);
sOldSkill = "."+GetStringRight(sOldSkill2,1);
if (iScribeSkill > 9)
{
sOldSkill = GetStringLeft(sOldSkill2,GetStringLength(sOldSkill2)-1)+sOldSkill;
}
else
{
sOldSkill = "0"+sOldSkill;
}
if (iScribeSkill <= 1000)
{
//DelayCommand(13.0,SetTokenPair(oPC,13,12,iDyeSkill));
DelayCommand(13.0,SetCampaignInt("UOACraft","iScribeSkill",iScribeSkill,oPC));
DelayCommand(13.0,SendMessageToPC(oPC,"======================================"));
DelayCommand(13.0,SendMessageToPC(oPC,"Your skill in inscription has gone up!"));
DelayCommand(13.0,SendMessageToPC(oPC,"Current inscription skill : "+ sOldSkill+"%"));
DelayCommand(13.0,SendMessageToPC(oPC,"======================================"));
if (GetLocalInt(GetModule(),"_UOACraft_XP")!=0) DelayCommand(12.9,GiveXPToCreature(oPC,GetLocalInt(GetModule(),"_UOACraft_XP")));
}
}
AssignCommand(GetArea(oPC),DelayCommand(12.0,CreateInk(oSelf,sItemTag,oPC)));
CopyObject(oItem,GetLocation(oSelf),oSelf,GetTag(oItem));
DestroyObject(oItem);
return;
}
//Do Not make ink... scribe the spell onto the scroll
int iModify = 0;
sComponent2 = "ink_"+GetResRef(oItem); //Tag of the ink to use
sItemTag = GetResRef(oItem)+"a";
if (GetLocalInt(oPC,"iUseThisParchment")==0)
{
sComponent1 = "scrl_blank_norma";
iModify = 10;
}
if (GetLocalInt(oPC,"iUseThisParchment")==1)
{
sComponent1 = "scrl_blank_black";
iModify = 0;
}
if (GetLocalInt(oPC,"iUseThisParchment")==2)
{
sComponent1 = "scrl_blank_white";
iModify = -5;
}
//Change this value to '1' to *not* lose memorized spells when scribing.
int iLoseSpell=1;
int iSpellNum = StringToInt(GetStringRight(sItemTag,3));
string sSpellName = GetName(oItem);
//
//Comment his line out to turn off custom components
//This component is in addition to the parchment and the ink
//
//If you include any stackables you will need to do a check
//for the stackable status in the 'CheckComponent' function.
//The only currently checked-for stackable is gem powder.
//
//If you are not proficient in scripting, I would suggest
//not using stackable items as the additional component
//unless it is gem powder.
//
//The CustomComponent section of the script is at the very bottom
//of this file.
sComponent3 = CustomComponent(iSpellNum);
//Check to decrement remaining spells
if (iLoseSpell==1) LoseSpell(oPC,iSpellNum);
//Do animations and sounds
AssignCommand(oPC,ActionPlayAnimation(ANIMATION_LOOPING_GET_MID,1.0,4.0));
AssignCommand(oPC,DelayCommand(5.0,ActionPlayAnimation(ANIMATION_LOOPING_GET_MID,1.0,4.0)));
AssignCommand(oPC,DelayCommand(10.0,ActionPlayAnimation(ANIMATION_LOOPING_GET_MID,1.0,4.0)));
PlaySound("as_na_leafmove2");
DelayCommand(0.9,PlaySound("as_na_grassmove2"));
DelayCommand(1.8,PlaySound("as_an_crittgnaw2"));
DelayCommand(3.9,PlaySound("as_na_grassmove2"));
DelayCommand(4.8,PlaySound("as_na_leafmove2"));
DelayCommand(5.9,PlaySound("as_na_leafmove2"));
DelayCommand(6.9,PlaySound("as_na_grassmove2"));
DelayCommand(7.9,PlaySound("as_an_crittgnaw2"));
DelayCommand(10.7,PlaySound("as_na_grassmove2"));
DelayCommand(11.6,PlaySound("as_na_leafmove2"));
DelayCommand(12.4,PlaySound("as_na_grassmove2"));
DelayCommand(13.4,PlaySound("as_na_leafmove2"));
DelayCommand(14.2,PlaySound("as_na_grassmove2"));
SetLocalInt(OBJECT_SELF,"iAmInUse",99);
DelayCommand(15.5,SetLocalInt(OBJECT_SELF,"iAmInUse",0));
if (CheckComponent(oPC,sComponent1,sComponent2,sComponent3,1,1,1,1,1,2)==0)
{
DelayCommand(15.0,FloatingTextStringOnCreature("The magic fails to imbue the scroll. You may be missing a vital component...",oPC,FALSE));
//CopyObject(oItem,GetLocation(oSelf),oSelf,sOldTag);
CreateItemOnObject(GetResRef(oItem),OBJECT_SELF,1);
DestroyObject(oItem);
if (DISTURB_ME==1)
{
//Resets Disturb flag for fresh inscription attempt
DelayCommand(15.0,SetLocalInt(oSelf,"iWasDisturbed",0));
DelayCommand(15.0,SetLocalObject(oSelf,"oDisturbed",OBJECT_INVALID));
}
return;
}
//Base 20% +1% per level of spell chance to fail (average level of spell across classes)
//Minus 1% chance to fail for every level of the inscriptionist.
//Minus (or add) a set ammount based on the parchment type being used.
iDifficulty = iModify+20+GetInkChance(oItem);
iDifficulty = iDifficulty - GetHitDice(oPC);
iRandom = d100(1);
if(iRandom<=iDifficulty)
{
if (DISTURB_ME==1)
{
//Resets Disturb flag for fresh inscription attempt
DelayCommand(15.0,SetLocalInt(oSelf,"iWasDisturbed",0));
DelayCommand(15.0,SetLocalObject(oSelf,"oDisturbed",OBJECT_INVALID));
}
AssignCommand(GetArea(oPC),DelayCommand(15.0,FloatingTextStringOnCreature("The ink smudges as you attenmpt to scribe the spell, ruining it's magic..",oPC,FALSE)));
//CopyObject(oItem,GetLocation(oSelf),oSelf,sOldTag);
CreateItemOnObject(GetResRef(oItem),OBJECT_SELF,1);
DestroyObject(oItem);
return;
}
object oTemp9=CopyObject(oItem,GetLocation(oSelf),oSelf,sOldTag); //GetTag(oItem));
AssignCommand(GetArea(oPC),DelayCommand(15.0,FloatingTextStringOnCreature("You successfully scribe the "+sSpellName+" scroll.",oPC,FALSE)));
AssignCommand(GetArea(oPC),DelayCommand(15.0,CreateACopy(oSelf,oTemp9,oPC)));
DestroyObject(oItem);
if (DISTURB_ME==1)
{
//Resets Disturb flag for fresh inscription attempt
DelayCommand(15.0,SetLocalInt(oSelf,"iWasDisturbed",0));
DelayCommand(15.0,SetLocalObject(oSelf,"oDisturbed",OBJECT_INVALID));
}
}
string GetInk(object oItem)
{
string sTempTag = GetStringLeft(GetTag(oItem),GetStringLength(GetTag(oItem))-6);
int iSpellNum = StringToInt(GetStringRight(sTempTag,3));
switch (iSpellNum)
{
case 1:{return E_OF_ACID;break;}
case 2:{return E_OF_NECROSIS;break;}
case 3:{return E_OF_PROTECTION;break;}
case 4:{return E_OF_LIGHT;break;}
case 5:{return E_OF_ABILITY;break;}
case 6:{return E_OF_FIRE;break;}
case 7:{return E_OF_ABILITY;break;}
case 8:{return E_OF_ELECTRICITY;break;}
case 9:{return E_OF_THE_MIND;break;}
case 10:{return E_OF_THE_MIND;break;}
case 11:{return E_OF_THE_MIND;break;}
case 12:{return E_OF_NECROSIS;break;}
case 13:{return E_OF_FIVE_SENSES;break;}
case 14:{return E_OF_ABILITY;break;}
case 15:{return E_OF_VENOM;break;}
case 16:{return E_OF_LIGHT;break;}
case 17:{return E_OF_COLD;break;}
case 18:{return E_OF_THE_MIND;break;}
case 19:{return E_OF_NECROSIS;break;}
case 20:{return E_OF_NECROSIS;break;}
case 21:{return E_OF_LIGHT;break;}
case 22:{return E_OF_THE_MIND;break;}
case 23:{return E_OF_FIRE;break;}
case 24:{return E_OF_THE_PLANES;break;}
case 25:{return E_OF_POWER;break;}
case 26:{return E_OF_THE_MIND;break;}
case 27:{return E_OF_THE_MIND;break;}
case 28:{return E_OF_ABILITY;break;}
case 29:{return E_OF_THE_ELEMENTS;break;}
case 30:{return E_OF_ABILITY;break;}
case 31:{return E_OF_THE_ELEMENTS;break;}
case 32:{return E_OF_ENERGY;break;}
case 33:{return E_OF_ENERGY;break;}
case 34:{return E_OF_THE_PLANES;break;}
case 35:{return E_OF_THE_MIND;break;}
case 36:{return E_OF_THE_MIND;break;}
case 37:{return E_OF_NECROSIS;break;}
case 38:{return E_OF_FIRE;break;}
case 39:{return E_OF_FIRE;break;}
case 40:{return E_OF_ABILITY;break;}
case 41:{return E_OF_THE_PLANES;break;}
case 42:{return E_OF_SPIRIT;break;}
case 43:{return E_OF_POWER;break;}
case 44:{return E_OF_POWER;break;}
case 45:{return E_OF_TRANSMUTATION;break;}
case 46:{return E_OF_TRANSMUTATION;break;}
case 47:{return E_OF_THE_PLANES;break;}
case 48:{return E_OF_ENERGY;break;}
case 49:{return E_OF_THE_TRICKSTER;break;}
case 50:{return E_OF_POWER;break;}
case 51:{return E_OF_PROTECTION;break;}
case 52:{return E_OF_TRANSMUTATION;break;}
case 53:{return E_OF_ABILITY;break;}
case 54:{return E_OF_ABILITY;break;}
case 55:{return E_OF_ABILITY;break;}
case 56:{return E_OF_NECROSIS;break;}
case 57:{return E_OF_THE_MIND;break;}
case 58:{return E_OF_THE_TRICKSTER;break;}
case 59:{return E_OF_FIRE;break;}
case 60:{return E_OF_THE_TRICKSTER;break;}
case 61:{return E_OF_THE_TRICKSTER;break;}
case 62:{return E_OF_TRANSMUTATION;break;}
case 63:{return E_OF_POWER;break;}
case 64:{return E_OF_THE_MIND;break;}
case 65:{return E_OF_THE_PLANES;break;}
case 66:{return E_OF_ENERGY;break;}
case 67:{return E_OF_POWER;break;}
case 68:{return E_OF_POWER;break;}
case 69:{return E_OF_LIGHT;break;}
case 70:{return E_OF_ELECTRICITY;break;}
case 71:{return E_OF_PROTECTION;break;}
case 72:{return E_OF_PROTECTION;break;}
case 73:{return E_OF_TRANSMUTATION;break;}
case 74:{return E_OF_FIVE_SENSES;break;}
case 75:{return E_OF_THE_MIND;break;}
case 76:{return E_OF_ABILITY;break;}
case 77:{return E_OF_ACID;break;}
case 78:{return E_OF_THE_ELEMENTS;break;}
case 79:{return E_OF_THE_MIND;break;}
case 80:{return E_OF_THE_MIND;break;}
case 81:{return E_OF_POWER;break;}
case 82:{return E_OF_POWER;break;}
case 83:{return E_OF_POWER;break;}
case 84:{return E_OF_ENERGY;break;}
case 85:{return E_OF_ENERGY;break;}
case 86:{return E_OF_VENOM;break;}
case 87:{return E_OF_ABILITY;break;}
case 88:{return E_OF_THE_TRICKSTER;break;}
case 89:{return E_OF_THE_PLANES;break;}
case 90:{return E_OF_TRANSMUTATION;break;}
case 91:{return E_OF_NECROSIS;break;}
case 92:{return E_OF_ABILITY;break;}
case 93:{return E_OF_THE_MIND;break;}
case 94:{return E_OF_LIGHT;break;}
case 95:{return E_OF_PROTECTION;break;}
case 96:{return E_OF_PROTECTION;break;}
case 97:{return E_OF_PROTECTION;break;}
case 98:{return E_OF_NECROSIS;break;}
case 99:{return E_OF_ABILITY;break;}
case 100:{return E_OF_COLD;break;}
case 101:{return E_OF_FIVE_SENSES;break;}
case 102:{return E_OF_POWER;break;}
case 103:{return E_OF_NECROSIS;break;}
case 104:{return E_OF_THE_ELEMENTS;break;}
case 105:{return E_OF_POWER;break;}
case 106:{return E_OF_ENERGY;break;}
case 107:{return E_OF_POWER;break;}
case 108:{return E_OF_THE_MIND;break;}
case 109:{return E_OF_FIVE_SENSES;break;}
case 110:{return E_OF_THE_TRICKSTER;break;}
case 111:{return E_OF_THE_TRICKSTER;break;}
case 112:{return E_OF_TRANSMUTATION;break;}
case 113:{return E_OF_FIVE_SENSES;break;}
case 114:{return E_OF_THE_MIND;break;}
case 115:{return E_OF_ABILITY;break;}
case 116:{return E_OF_FIVE_SENSES;break;}
case 117:{return E_OF_POWER;break;}
case 118:{return E_OF_VENOM;break;}
case 119:{return E_OF_TRANSMUTATION;break;}
case 120:{return E_OF_TRANSMUTATION;break;}
case 121:{return E_OF_TRANSMUTATION;break;}
case 122:{return E_OF_TRANSMUTATION;break;}
case 123:{return E_OF_TRANSMUTATION;break;}
case 124:{return E_OF_POWER;break;}
case 125:{return E_OF_SPIRIT;break;}
case 126:{return E_OF_SPIRIT;break;}
case 127:{return E_OF_SPIRIT;break;}
case 128:{return E_OF_POWER;break;}
case 129:{return E_OF_ABILITY;break;}
case 130:{return E_OF_POWER;break;}
case 131:{return E_OF_FIVE_SENSES;break;}
case 132:{return E_OF_FIVE_SENSES;break;}
case 133:{return E_OF_ENERGY;break;}
case 134:{return E_OF_NECROSIS;break;}
case 135:{return E_OF_FIRE;break;}
case 136:{return E_OF_TRANSMUTATION;break;}
case 137:{return E_OF_THE_TRICKSTER;break;}
case 138:{return E_OF_PROTECTION;break;}
case 139:{return E_OF_PROTECTION;break;}
case 140:{return E_OF_PROTECTION;break;}
case 141:{return E_OF_PROTECTION;break;}
case 142:{return E_OF_FIVE_SENSES;break;}
case 143:{return E_OF_LUCK;break;}
case 144:{return E_OF_ABILITY;break;}
case 145:{return E_OF_PROTECTION;break;}
case 146:{return E_OF_THE_MIND;break;}
case 147:{return E_OF_PLANT;break;}
case 148:{return E_OF_POWER;break;}
case 149:{return E_OF_LUCK;break;}
case 150:{return E_OF_ELECTRICITY;break;}
case 151:{return E_OF_LUCK;break;}
case 152:{return E_OF_NECROSIS;break;}
case 153:{return E_OF_NECROSIS;break;}
case 154:{return E_OF_POWER;break;}
case 155:{return E_OF_POWER;break;}
case 156:{return E_OF_NECROSIS;break;}
case 157:{return E_OF_POWER;break;}
case 158:{return E_OF_THE_PLANES;break;}
case 159:{return E_OF_THE_MIND;break;}
case 160:{return E_OF_TRANSMUTATION;break;}
case 161:{return E_OF_THE_PLANES;break;}
case 162:{return E_OF_ENERGY;break;}
case 163:{return E_OF_PLANT;break;}
case 164:{return E_OF_POWER;break;}
case 165:{return E_OF_FIRE;break;}
case 166:{return E_OF_FIRE;break;}
case 167:{return E_OF_FIRE;break;}
case 168:{return E_OF_ABILITY;break;}
case 169:{return E_OF_POWER;break;}
case 170:{return E_OF_NECROSIS;break;}
case 171:{return E_OF_POWER;break;}
case 172:{return E_OF_POWER;break;}
case 173:{return E_OF_THE_MIND;break;}
case 174:{return E_OF_COLD;break;}
case 175:{return E_OF_POWER;break;}
case 176:{return E_OF_TRANSMUTATION;break;}
case 177:{return E_OF_THE_MIND;break;}
case 178:{return E_OF_POWER;break;}
case 179:{return E_OF_PLANT;break;}
case 180:{return E_OF_ENERGY;break;}
case 181:{return E_OF_VENOM;break;}
case 182:{return E_OF_THE_PLANES;break;}
case 183:{return E_OF_PROTECTION;break;}
case 184:{return E_OF_THE_MIND;break;}
case 185:{return E_OF_PROTECTION;break;}
case 186:{return E_OF_LUCK;break;}
case 187:{return E_OF_LIGHT;break;}
case 188:{return E_OF_THE_TRICKSTER;break;}
case 189:{return E_OF_NECROSIS;break;}
case 190:{return E_OF_PROTECTION;break;}
case 191:{return E_OF_THE_ELEMENTS;break;}
case 192:{return E_OF_LIGHT;break;}
case 193:{return E_OF_LUCK;break;}
case 194:{return E_OF_ABILITY;break;}
case 195:{return E_OF_LUCK;break;}
case 197:{return E_OF_ACID;break;}
case 198:{return E_OF_THE_MIND;break;}
case 199:{return E_OF_THE_MIND;break;}
case 200:{return E_OF_TRANSMUTATION;break;}
case 201:{return E_OF_LUCK;break;}
case 202:{return E_OF_POWER;break;}
case 203:{return E_OF_POWER;break;}
case 204:{return E_OF_POWER;break;}
case 205:{return E_OF_POWER;break;}
case 206:{return E_OF_POWER;break;}
case 207:{return E_OF_THE_MIND;break;}
case 208:{return E_OF_ELECTRICITY;break;}
case 209:{return E_OF_FIRE;break;}
case 210:{return E_OF_THE_MIND;break;}
case 211:{return E_OF_THE_TRICKSTER;break;}
case 212:{return E_OF_LUCK;break;}
case 213:{return E_OF_ABILITY;break;}
case 214:{return E_OF_THE_ELEMENTS;break;}
case 215:{return E_OF_ELECTRICITY;break;}
case 216:{return E_OF_ENERGY;break;}
case 217:{return E_OF_ABILITY;break;}
case 218:{return E_OF_FIRE;break;}
case 219:{return E_OF_FIRE;break;}
case 220:{return E_OF_TRANSMUTATION;break;}
case 221:{return E_OF_ABILITY;break;}
case 222:{return E_OF_LUCK;break;}
case 223:{return E_OF_THE_ELEMENTS;break;}
case 224:{return E_OF_FIRE;break;}
case 225:{return E_OF_NECROSIS;break;}
case 226:{return E_OF_NECROSIS;break;}
case 227:{return E_OF_NECROSIS;break;}
case 228:{return E_OF_NECROSIS;break;}
case 229:{return E_OF_NECROSIS;break;}
case 230:{return E_OF_ENERGY;break;}
case 231:{return E_OF_POWER;break;}
case 232:{return E_OF_ABILITY;break;}
case 233:{return E_OF_THE_TRICKSTER;break;}
case 234:{return E_OF_PLANT;break;}
case 235:{return E_OF_THE_MIND;break;}
case 236:{return E_OF_THE_PLANES;break;}
case 237:{return E_OF_FIRE;break;}
case 238:{return E_OF_PROTECTION;break;}
case 239:{return E_OF_THE_MIND;break;}
case 240:{return E_OF_TRANSMUTATION;break;}
case 241:{return E_OF_TRANSMUTATION;break;}
case 242:{return E_OF_LIGHT;break;}
case 243:{return E_OF_THE_TRICKSTER;break;}
case 244:{return E_OF_LUCK;break;}
case 245:{return E_OF_POWER;break;}
case 246:{return E_OF_THE_MIND;break;}
default:{return E_OF_POWER;break;}
}
return E_OF_POWER;
}
string GetComponent(object oItem)
{
string sTempTag = GetStringLeft(GetTag(oItem),GetStringLength(GetTag(oItem))-6);
int iSpellNum = StringToInt(GetStringRight(sTempTag,3));
switch (iSpellNum)
{
case 1:{return "GEM_POWDER_JET";break;}
case 2:{return "JUNK_HUMANSKULL";break;}
case 3:{return "GEM_POWDER_ALEXANDRITE";break;}
case 4:{return "item_mushroom007";break;}
case 5:{return "item_mushroom016";break;}
case 6:{return "SEED_MARIGOLD";break;}
case 7:{return "item_mushroom073";break;}
case 8:{return "GEM_POWDER_EMERALD";break;}
case 9:{return "GEM_POWDER_BLUEQUARTZ";break;}
case 10:{return "GEM_POWDER_TURQUOISE";break;}
case 11:{return "item_mushroom009";break;}
case 12:{return "GEM_POWDER_FIREOPAL";break;}
case 13:{return "item_mushroom044";break;}
case 14:{return "SEED_OKRA";break;}
case 15:{return "item_mushroom027";break;}
case 16:{return "GEM_POWDERED_RHODOCHROSITE";break;}
case 17:{return "GEM_POWDER_OPAL";break;}
case 18:{return "item_mushroom071";break;}
case 19:{return "item_mushroom067";break;}
case 20:{return "item_mushroom041";break;}
case 21:{return "GEM_POWDER_OBSIDIAN";break;}
case 22:{return "GEM_POWDER_MOSSAGATE";break;}
case 23:{return "GEM_POWDER_STARRUBY";break;}
case 24:{return "GEM_POWDER_JET";break;}
case 25:{return "item_mushroom048";break;}
case 26:{return "GEM_POWDER_JASPER";break;}
case 27:{return "GEM_POWDER_ONYX";break;}
case 28:{return "item_mushroom059";break;}
case 29:{return "GEM_POWDER_PERIDOT";break;}
case 30:{return "SEED_JUNIPERBERRY";break;}
case 31:{return "GEM_POWDERED_REDSPINEL";break;}
case 32:{return "GEM_POWDER_FIREOPAL";break;}
case 33:{return "GEM_POWDER_SMOKYQUARTZ";break;}
case 34:{return "item_mushroom030";break;}
case 35:{return "GEM_POWDER_WHITEPEARL";break;}
case 36:{return "item_mushroom065";break;}
case 37:{return "NW_IT_MSMLMISC13";break;}
case 38:{return "ITEM_SULPHUR";break;}
case 39:{return "GEM_POWDER_TIGEREYE";break;}
case 40:{return "GEM_POWDER_AMETHYST";break;}
case 41:{return "GEM_POWDER_RUBY";break;}
case 42:{return "GEM_POWDER_TOURMALINE";break;}
case 43:{return "GEM_POWDER_AQUAMARINE";break;}
case 44:{return "item_mushroom036";break;}
case 45:{return "item_mushroom010";break;}
case 46:{return "NW_IT_MSMLMISC08";break;}
case 47:{return "GEM_POWDER_BLACKSAPPHIRE";break;}
case 48:{return "item_mushroom043";break;}
case 49:{return "GEM_POWDER_ONYX";break;}
case 50:{return "GEM_POWDER_ORIENTALAMETHYST";break;}
case 51:{return "item_mushroom046";break;}
case 52:{return "GEM_POWDER_GARNET_VIOLET";break;}
case 53:{return "item_mushroom005";break;}
case 54:{return "item_mushroom068";break;}
case 55:{return "GEM_POWDER_AMBER";break;}
case 56:{return "item_mushroom021";break;}
case 57:{return "SEED_SAGE";break;}
case 58:{return "GEM_POWDER_OPAL";break;}
case 59:{return "GEM_POWDER_FIREOPAL";break;}
case 60:{return "GEM_POWDER_BLUEQUARTZ";break;}
case 61:{return "item_mushroom025";break;}
case 62:{return "GEM_POWDER_AZURITE";break;}
case 63:{return "item_mushroom038";break;}
case 64:{return "item_mushroom062";break;}
case 65:{return "item_mushroom015";break;}
case 66:{return "SEED_PEPPERMINT";break;}
case 67:{return "item_mushroom031";break;}
case 68:{return "item_mushroom050";break;}
case 69:{return "FLOWER_WHITETULIP";break;}
case 70:{return "item_mushroom034";break;}
case 71:{return "SEED_PERIWINKLE";break;}
case 72:{return "FLOWER_REDIRIS";break;}
case 73:{return "item_mushroom017";break;}
case 74:{return "item_mushroom008";break;}
case 75:{return "item_mushroom014";break;}
case 76:{return "item_mushroom049";break;}
case 77:{return "GEM_POWDER_GARNET_RED";break;}
case 78:{return "GEM_POWDER_RUBY";break;}
case 79:{return "item_mushroom024";break;}
case 80:{return "GEM_POWDER_SARDONYX";break;}
case 81:{return "NW_IT_MSMLMISC07";break;}
case 82:{return "GEM_POWDER_ORIENTALEMERALD";break;}
case 83:{return "GEM_POWDER_BLACKSAPPHIRE";break;}
case 84:{return "GEM_POWDER_ZIRCON";break;}
case 85:{return "GEM_POWDER_CHALCENDONY";break;}
case 86:{return "ITEM_LIME";break;}
case 87:{return "SEED_LARKSPUR";break;}
case 88:{return "item_mushroom040";break;}
case 89:{return "item_mushroom023";break;}
case 90:{return "GEM_POWDER_MOONSTONE";break;}
case 91:{return "NW_IT_MSMLMISC10";break;}
case 92:{return "NW_IT_MSMLMISC14";break;}
case 93:{return "SEED_SASSAFRASS";break;}
case 94:{return "GEM_POWDER_ROCKCRYSTAL";break;}
case 95:{return "SEED_LAVENDER";break;}
case 96:{return "item_mushroom037";break;}
case 97:{return "GEM_POWDER_TOPAZ";break;}
case 98:{return "GEM_POWDER_ORIENTALTOPAZ";break;}
case 99:{return "GEM_POWDER_MALACHITE";break;}
case 100:{return "FLOWER_YELLOWIRIS";break;}
case 101:{return "GEM_POWDER_SARDONYX";break;}
case 102:{return "item_mushroom042";break;}
case 103:{return "item_mushroom001";break;}
case 104:{return "GEM_POWDER_CITRINE";break;}
case 105:{return "GEM_POWDER_STARROSEQUARTZ";break;}
case 106:{return "item_mushroom003";break;}
case 107:{return "GEM_POWDER_JACINTH";break;}
case 108:{return "GEM_POWDER_CARNELIAN";break;}
case 109:{return "GEM_POWDER_EYEAGATE";break;}
case 110:{return "SEED_SPEARMINT";break;}
case 111:{return "item_mushroom057";break;}
case 112:{return "GEM_POWDER_SAPPHIRE";break;}
case 113:{return "GEM_POWDERED_JADE";break;}
case 114:{return "SEED_NASTURTIUM";break;}
case 115:{return "ITEM_MAPLESAP";break;}
case 116:{return "FLOWER_YELLOWTULIP";break;}
case 117:{return "GEM_POWDER_AQUAMARINE";break;}
case 118:{return "GEM_POWDER_GARNET_VIOLET";break;}
case 119:{return "GEM_POWDER_CORAL";break;}
case 120:{return "SEED_MAYAPPLE";break;}
case 121:{return "FISH_BULLFROG";break;}
case 122:{return "ITEM_WALNUT";break;}
case 123:{return "GEM_POWDER_BLACKOPAL";break;}
case 124:{return "GEM_POWDER_BLACKSAPPHIRE";break;}
case 125:{return "GEM_POWDER_ORIENTALAMETHYST";break;}
case 126:{return "GEM_POWDER_STARSAPPHIRE";break;}
case 127:{return "GEM_POWDER_RUBY";break;}
case 128:{return "GEM_POWDER_DIAMOND";break;}
case 129:{return "GEM_POWDER_BLACKPEARL";break;}
case 130:{return "GEM_POWDER_BLACKSAPPHIRE";break;}
case 131:{return "item_mushroom022";break;}
case 132:{return "item_mushroom063";break;}
case 133:{return "GEM_POWDER_BLOODSTONE";break;}
case 134:{return "GEM_POWDER_EMERALD";break;}
case 135:{return "GEM_POWDER_PERIDOT";break;}
case 136:{return "ITEM_SPIDERSILK";break;}
case 137:{return "item_mushroom064";break;}
case 138:{return "SEED_GARLIC";break;}
case 139:{return "FLOWER_BLUEIRIS";break;}
case 140:{return "SEED_GINGER";break;}
case 141:{return "ITEM_ROYALJELLY";break;}
case 142:{return "SaltBlock";break;}
case 143:{return "ITEM_HONEY";break;}
case 144:{return "item_mushroom039";break;}
case 145:{return "SEED_ONION";break;}
case 146:{return "FLOWER_WHITEIRIS";break;}
case 147:{return "SEED_MISTLETOE";break;}
case 148:{return "GEM_POWDER_BLUESPINEL";break;}
case 149:{return "SEED_OREGANO";break;}
case 150:{return "GEM_POWDERED_REDSPINEL";break;}
case 151:{return "item_mushroom054";break;}
case 152:{return "GEM_POWDER_SAPPHIRE";break;}
case 153:{return "GEM_POWDERED_JADE";break;}
case 154:{return "GEM_POWDER_EMERALD";break;}
case 155:{return "item_mushroom047";break;}
case 156:{return "GEM_POWDER_BLOODSTONE";break;}
case 157:{return "GEM_POWDER_EMERALD";break;}
case 158:{return "item_mushroom055";break;}
case 159:{return "NW_IT_MSMLMISC09";break;}
case 160:{return "SEED_SNAPDRAGON";break;}
case 161:{return "GEM_POWDER_DIAMOND";break;}
case 162:{return "GEM_POWDER_JACINTH";break;}
case 163:{return "item_mushroom019";break;}
case 164:{return "item_mushroom002";break;}
case 165:{return "GEM_POWDER_RUBY";break;}
case 166:{return "FLOWER_BLUETULIP";break;}
case 167:{return "item_mushroom035";break;}
case 168:{return "item_mushroom066";break;}
case 169:{return "GEM_POWDER_ZIRCON";break;}
case 170:{return "GEM_POWDER_BLACKOPAL";break;}
case 171:{return "GEM_POWDER_EMERALD";break;}
case 172:{return "GEM_POWDER_HEMATITE";break;}
case 173:{return "item_mushroom058";break;}
case 174:{return "item_mushroom029";break;}
case 175:{return "item_mushroom060";break;}
case 176:{return "item_mushroom004";break;}
case 177:{return "GEM_POWDER_STARRUBY";break;}
case 178:{return "NW_IT_MSMLMISC07";break;}
case 179:{return "item_mushroom053";break;}
case 180:{return "GEM_POWDER_ALEXANDRITE";break;}
case 181:{return "item_mushroom012";break;}
case 182:{return "ITEM_PECAN";break;}
case 183:{return "item_mushroom056";break;}
case 184:{return "GEM_POWDER_BLUESPINEL";break;}
case 185:{return "FISH_TADPOLE";break;}
case 186:{return "ITEM_OLIVE";break;}
case 187:{return "item_mushroom045";break;}
case 188:{return "GEM_POWDER_HEMATITE";break;}
case 189:{return "item_mushroom028";break;}
case 190:{return "item_mushroom020";break;}
case 191:{return "GEM_POWDER_BLACKSAPPHIRE";break;}
case 192:{return "GEM_POWDER_SAPPHIRE";break;}
case 193:{return "SEED_BASIL";break;}
case 194:{return "item_mushroom052";break;}
case 195:{return "NW_IT_MSMLMISC10";break;}
case 196:{return "GEM_POWDER_EMERALD";break;}
case 197:{return "GEM_POWDER_CHRYSOPRASE";break;}
case 198:{return "ITEM_ALMOND";break;}
case 199:{return "GEM_POWDER_EMERALD";break;}
case 200:{return "GEM_POWDER_TIGEREYE";break;}
case 201:{return "GEM_POWDER_ONYX";break;}
case 202:{return "GEM_POWDER_SAPPHIRE";break;}
case 203:{return "GEM_POWDER_STARRUBY";break;}
case 204:{return "NW_IT_MSMLMISC19";break;}
case 205:{return "NW_IT_MSMLMISC13";break;}
case 206:{return "item_mushroom018";break;}
case 207:{return "GEM_POWDER_JASPER";break;}
case 208:{return "GEM_POWDER_STARSAPPHIRE";break;}
case 209:{return "item_mushroom011";break;}
case 210:{return "SEED_TARRAGON";break;}
case 211:{return "GEM_POWDER_SAPPHIRE";break;}
case 212:{return "GEM_POWDER_WHITEPEARL";break;}
case 213:{return "GEM_POWDER_GARNET_VIOLET";break;}
case 214:{return "FISH_MINNOW";break;}
case 215:{return "item_mushroom051";break;}
case 216:{return "NW_IT_MSMLMISC08";break;}
case 217:{return "NW_IT_MSMLMISC19";break;}
case 218:{return "item_mushroom013";break;}
case 219:{return "FISH_GUPPY";break;}
case 220:{return "GEM_POWDER_BLACKOPAL";break;}
case 221:{return "GEM_POWDER_STARRUBY";break;}
case 222:{return "GEM_POWDER_JACINTH";break;}
case 223:{return "item_mushroom033";break;}
case 224:{return "item_mushroom069";break;}
case 225:{return "GEM_POWDER_EMERALD";break;}
case 226:{return "GEM_POWDER_BANDEDAGATE";break;}
case 227:{return "GEM_POWDER_CHRYSOBERYL";break;}
case 228:{return "GEM_POWDER_BLACKPEARL";break;}
case 229:{return "item_mushroom070";break;}
case 230:{return "GEM_POWDER_TOPAZ";break;}
case 231:{return "GEM_POWDER_STARSAPPHIRE";break;}
case 232:{return "ITEM_SAUSAGEFRUIT";break;}
case 233:{return "GEM_POWDER_TOURMALINE";break;}
case 234:{return "GEM_POWDER_MOSSAGATE";break;}
case 235:{return "FLOWER_REDTULIP";break;}
case 236:{return "NW_IT_MSMLMISC14";break;}
case 237:{return "GEM_POWDER_OBSIDIAN";break;}
case 238:{return "GEM_POWDER_LAPISLAZULI";break;}
case 239:{return "GEM_POWDER_SMOKYQUARTZ";break;}
case 240:{return "ITEM_PINECONE";break;}
case 241:{return "item_mushroom032";break;}
case 242:{return "GEM_POWDER_DIAMOND";break;}
case 243:{return "SEED_CATNIP";break;}
case 244:{return "NW_IT_MSMLMISC09";break;}
case 245:{return "GEM_POWDER_RUBY";break;}
case 246:{return "item_mushroom006";break;}
default:{return "GEM_POWDER_DIAMOND";break;}
}
return "GEM_POWDER_DIAMOND";
}
int GetInkChance(object oItem)
{
string sTempTag = GetStringLeft(GetTag(oItem),GetStringLength(GetTag(oItem))-6);
int iSpellNum = StringToInt(GetStringRight(sTempTag,3));
switch (iSpellNum)
{
case 1:{return 6;break;}
case 2:{return 4;break;}
case 3:{return 4;break;}
case 4:{return 3;break;}
case 5:{return 2;break;}
case 6:{return 1;break;}
case 7:{return 2;break;}
case 8:{return 6;break;}
case 9:{return 4;break;}
case 10:{return 1;break;}
case 11:{return 2;break;}
case 12:{return 6;break;}
case 13:{return 3;break;}
case 14:{return 3;break;}
case 15:{return 5;break;}
case 16:{return 1;break;}
case 17:{return 5;break;}
case 18:{return 4;break;}
case 19:{return 4;break;}
case 20:{return 7;break;}
case 21:{return 2;break;}
case 22:{return 1;break;}
case 23:{return 7;break;}
case 24:{return 5;break;}
case 25:{return 3;break;}
case 26:{return 9;break;}
case 27:{return 5;break;}
case 28:{return 2;break;}
case 29:{return 4;break;}
case 30:{return 2;break;}
case 31:{return 1;break;}
case 32:{return 9;break;}
case 33:{return 4;break;}
case 34:{return 6;break;}
case 35:{return 4;break;}
case 36:{return 5;break;}
case 37:{return 7;break;}
case 38:{return 3;break;}
case 39:{return 3;break;}
case 40:{return 2;break;}
case 41:{return 9;break;}
case 42:{return 2;break;}
case 43:{return 2;break;}
case 44:{return 6;break;}
case 45:{return 1;break;}
case 46:{return 6;break;}
case 47:{return 8;break;}
case 48:{return 7;break;}
case 49:{return 5;break;}
case 50:{return 6;break;}
case 51:{return 9;break;}
case 52:{return 6;break;}
case 53:{return 3;break;}
case 54:{return 5;break;}
case 55:{return 3;break;}
case 56:{return 8;break;}
case 57:{return 1;break;}
case 58:{return 4;break;}
case 59:{return 8;break;}
case 60:{return 2;break;}
case 61:{return 3;break;}
case 62:{return 2;break;}
case 63:{return 2;break;}
case 64:{return 5;break;}
case 65:{return 5;break;}
case 66:{return 2;break;}
case 67:{return 4;break;}
case 68:{return 5;break;}
case 69:{return 1;break;}
case 70:{return 3;break;}
case 71:{return 1;break;}
case 72:{return 3;break;}
case 73:{return 1;break;}
case 74:{return 8;break;}
case 75:{return 8;break;}
case 76:{return 6;break;}
case 77:{return 2;break;}
case 78:{return 9;break;}
case 79:{return 8;break;}
case 80:{return 5;break;}
case 81:{return 4;break;}
case 82:{return 9;break;}
case 83:{return 7;break;}
case 84:{return 3;break;}
case 85:{return 1;break;}
case 86:{return 4;break;}
case 87:{return 2;break;}
case 88:{return 4;break;}
case 89:{return 6;break;}
case 90:{return 4;break;}
case 91:{return 9;break;}
case 92:{return 7;break;}
case 93:{return 8;break;}
case 94:{return 7;break;}
case 95:{return 1;break;}
case 96:{return 3;break;}
case 97:{return 7;break;}
case 98:{return 5;break;}
case 99:{return 1;break;}
case 100:{return 1;break;}
case 101:{return 4;break;}
case 102:{return 4;break;}
case 103:{return 3;break;}
case 104:{return 2;break;}
case 105:{return 1;break;}
case 106:{return 4;break;}
case 107:{return 7;break;}
case 108:{return 1;break;}
case 109:{return 2;break;}
case 110:{return 6;break;}
case 111:{return 4;break;}
case 112:{return 9;break;}
case 113:{return 2;break;}
case 114:{return 1;break;}
case 115:{return 3;break;}
case 116:{return 2;break;}
case 117:{return 7;break;}
case 118:{return 3;break;}
case 119:{return 4;break;}
case 120:{return 1;break;}
case 121:{return 2;break;}
case 122:{return 3;break;}
case 123:{return 4;break;}
case 124:{return 9;break;}
case 125:{return 5;break;}
case 126:{return 6;break;}
case 127:{return 7;break;}
case 128:{return 8;break;}
case 129:{return 6;break;}
case 130:{return 9;break;}
case 131:{return 6;break;}
case 132:{return 2;break;}
case 133:{return 3;break;}
case 134:{return 9;break;}
case 135:{return 4;break;}
case 136:{return 2;break;}
case 137:{return 9;break;}
case 138:{return 1;break;}
case 139:{return 1;break;}
case 140:{return 3;break;}
case 141:{return 4;break;}
case 142:{return 3;break;}
case 143:{return 2;break;}
case 144:{return 7;break;}
case 145:{return 8;break;}
case 146:{return 5;break;}
case 147:{return 2;break;}
case 148:{return 6;break;}
case 149:{return 1;break;}
case 150:{return 3;break;}
case 151:{return 5;break;}
case 152:{return 8;break;}
case 153:{return 8;break;}
case 154:{return 7;break;}
case 155:{return 4;break;}
case 156:{return 4;break;}
case 157:{return 7;break;}
case 158:{return 4;break;}
case 159:{return 3;break;}
case 160:{return 1;break;}
case 161:{return 9;break;}
case 162:{return 6;break;}
case 163:{return 1;break;}
case 164:{return 4;break;}
case 165:{return 8;break;}
case 166:{return 2;break;}
case 167:{return 5;break;}
case 168:{return 4;break;}
case 169:{return 4;break;}
case 170:{return 7;break;}
case 171:{return 7;break;}
case 172:{return 5;break;}
case 173:{return 2;break;}
case 174:{return 5;break;}
case 175:{return 9;break;}
case 176:{return 3;break;}
case 177:{return 6;break;}
case 178:{return 9;break;}
case 179:{return 8;break;}
case 180:{return 3;break;}
case 181:{return 4;break;}
case 182:{return 3;break;}
case 183:{return 7;break;}
case 184:{return 1;break;}
case 185:{return 2;break;}
case 186:{return 1;break;}
case 187:{return 3;break;}
case 188:{return 7;break;}
case 189:{return 5;break;}
case 190:{return 5;break;}
case 191:{return 9;break;}
case 192:{return 8;break;}
case 193:{return 1;break;}
case 194:{return 4;break;}
case 195:{return 7;break;}
case 196:{return 5;break;}
case 197:{return 1;break;}
case 198:{return 1;break;}
case 199:{return 2;break;}
case 200:{return 2;break;}
case 201:{return 1;break;}
case 202:{return 8;break;}
case 203:{return 9;break;}
case 204:{return 6;break;}
case 205:{return 7;break;}
case 206:{return 5;break;}
case 207:{return 2;break;}
case 208:{return 8;break;}
case 209:{return 2;break;}
case 210:{return 6;break;}
case 211:{return 3;break;}
case 212:{return 1;break;}
case 213:{return 4;break;}
case 214:{return 6;break;}
case 215:{return 1;break;}
case 216:{return 1;break;}
case 217:{return 1;break;}
case 218:{return 5;break;}
case 219:{return 1;break;}
case 220:{return 6;break;}
case 221:{return 3;break;}
case 222:{return 8;break;}
case 223:{return 3;break;}
case 224:{return 5;break;}
case 225:{return 4;break;}
case 226:{return 1;break;}
case 227:{return 1;break;}
case 228:{return 2;break;}
case 229:{return 3;break;}
case 230:{return 4;break;}
case 231:{return 6;break;}
case 232:{return 1;break;}
case 233:{return 4;break;}
case 234:{return 2;break;}
case 235:{return 5;break;}
case 236:{return 6;break;}
case 237:{return 3;break;}
case 238:{return 1;break;}
case 239:{return 1;break;}
case 240:{return 3;break;}
case 241:{return 6;break;}
case 242:{return 8;break;}
case 243:{return 2;break;}
case 244:{return 1;break;}
case 245:{return 9;break;}
case 246:{return 3;break;}
default:{return 9;break;}
}
return 9;
}
int CheckComponent(object oPC, string sComponent1, string sComponent2, string sComponent3, int iComponent1, int iComponent2, int iComponent3, int iComponent1Stackable, int iComponent2Stackable, int iComponent3Stackable)
{
object oTemp;
string sComponentResRef;
int iStackSize;
//Check if 3rd component is a stackable or not
if (GetStringLeft(sComponent3,3)=="GEM")
{
iComponent3Stackable=1;
}
else
{
iComponent3Stackable=0;
}
// Remove all components
float fPause = 0.0;
if (iComponent1Stackable != 0)
{
oTemp = GetItemPossessedBy(oPC,sComponent1);
sComponentResRef = GetResRef(oTemp);
iStackSize = GetNumStackedItems(oTemp);
DestroyObject(oTemp);
if (iStackSize < iComponent1)
{
iComponent1 = iComponent1 - iStackSize;
DelayCommand(2.0,GetNextStackedItem(oPC,sComponent1,iComponent1,1,sComponentResRef));
}
else
{
if (iStackSize > iComponent1)
{
iStackSize = iStackSize - iComponent1;
DelayCommand(1.0,CreateAnObject(sComponentResRef,oPC,iStackSize));
}
}
}
else
{
for (iComponent1; iComponent1>0; iComponent1--)
{
fPause = fPause+0.5;
AssignCommand(oPC,DelayCommand(fPause,GetNextItemPossessedBy(oPC,sComponent1)));
}
}
if (sComponent2 != "")
{
if (iComponent2Stackable != 0)
{
oTemp = GetItemPossessedBy(oPC,sComponent2);
sComponentResRef = GetResRef(oTemp);
iStackSize = GetNumStackedItems(oTemp);
DestroyObject(oTemp);
if (iStackSize < iComponent2)
{
iComponent2 = iComponent2 - iStackSize;
DelayCommand(2.0,GetNextStackedItem(oPC,sComponent2,iComponent2,1, sComponentResRef));
}
else
{
if (iStackSize > iComponent2)
{
iStackSize = iStackSize - iComponent2;
DelayCommand(1.0,CreateAnObject(sComponentResRef,oPC,iStackSize));
}
}
}
else
{
for (iComponent2; iComponent2>0; iComponent2--)
{
fPause = fPause+0.5;
AssignCommand(oPC,DelayCommand(fPause,GetNextItemPossessedBy(oPC,sComponent2)));
}
}
}
if (sComponent3 != "")
{
if (iComponent3Stackable != 0)
{
oTemp = GetItemPossessedBy(oPC,sComponent3);
sComponentResRef = GetResRef(oTemp);
iStackSize = GetNumStackedItems(oTemp);
DestroyObject(oTemp);
if (iStackSize < iComponent3)
{
iComponent3 = iComponent3 - iStackSize;
DelayCommand(2.0,GetNextStackedItem(oPC,sComponent3,iComponent3,1, sComponentResRef));
}
else
{
if (iStackSize > iComponent3)
{
iStackSize = iStackSize - iComponent3;
DelayCommand(1.0,CreateAnObject(sComponentResRef,oPC,iStackSize));
}
}
}
else
{
for (iComponent3; iComponent3>0; iComponent3--)
{
fPause = fPause +0.5;
AssignCommand(oPC,DelayCommand(fPause,GetNextItemPossessedBy(oPC,sComponent3)));
}
}
}
// check for components -- Purposefully moved down here.. you lose all components found on *any* attempt
//even an attempt where you are missing a component.
if (GetNumItems(oPC,sComponent1) < iComponent1)return 0;
if (sComponent2 != "")
{
if (iComponent2 > 0)
{
if (GetNumItems(oPC,sComponent2) < iComponent2)return 0;
}
}
if (sComponent3!="")
{
if (iComponent3 > 0)
{
if (GetNumItems(oPC,sComponent3) < iComponent3)return 0;
}
}
return 1;
}
void GetNextStackedItem(object oPC, string sItemTag, int iCount, int iMode, string sStackResRef)
{
object oTemp = GetItemPossessedBy(oPC,sItemTag);
int iStackCount = GetNumStackedItems(oTemp);
int iTemp = iCount - iStackCount;
iStackCount = iStackCount-iCount;
DestroyObject(oTemp);
if (iStackCount > 0)
{
SendMessageToPC(oPC,"You should get back "+IntToString(iStackCount));
DelayCommand(1.0,CreateAnObject(sStackResRef,oPC,iStackCount));
}
// this next line *should* recursively call this function if the number of
// stacked items does not meet the required number of items to be destroyed.
if (iTemp > 0) DelayCommand(1.0,GetNextStackedItem(oPC,sItemTag,iTemp, iMode, sStackResRef));
return;
}
void CreateAnObject(string sResource, object oPC, int iStackSize)
{
CreateItemOnObject(sResource,oPC,iStackSize);
return;
}
void CreateACopy(object oSelf,object oItem,object oPC)
{
string sTempTag = GetTag(oItem);
if (GetStringRight(sTempTag,6)=="_Store") sTempTag = GetStringLeft(sTempTag,GetStringLength(sTempTag)-6);
sTempTag = sTempTag+"a";
if (DISTURB_ME==1)
{
if (GetLocalObject(oSelf,"oDisturbed")!=OBJECT_INVALID)
{
if (GetLocalInt(oSelf,"iWasDisturbed")==99)
{
if (GetLocalObject(oSelf,"oDisturbed")!=oPC)
{
FloatingTextStringOnCreature(GetName(GetLocalObject(oSelf,"oDisturbed"))+" has disturbed your inscitption attempt, ruining the scroll!",oPC,FALSE);
SetLocalInt(oSelf,"iWasDisturbed",0);
SetLocalObject(oSelf,"oDisturbed",OBJECT_INVALID);
return;
}
}
}
}
CopyObject(oItem,GetLocation(oPC),oPC,sTempTag);
return;
}
void GetNextItemPossessedBy(object oPC, string sItemTag)
{
object oTemp = GetItemPossessedBy(oPC,sItemTag);
DestroyObject(oTemp);
return;
}
void CreateInk(object oSelf, string sItemTag, object oPC)
{
object oTemp;
oTemp = CreateObject(OBJECT_TYPE_ITEM,"spell_ink",GetLocation(oSelf),FALSE,sItemTag);
CopyObject(oTemp,GetLocation(oPC),oPC,GetTag(oTemp));
DestroyObject(oTemp,10.0);
}
void LoseSpell(object oPC,int iSpellNum)
{
switch (iSpellNum)
{
case 1:{DecrementRemainingSpellUses(oPC,SPELL_ACID_FOG);break;}
case 2:{DecrementRemainingSpellUses(oPC,SPELL_ANIMATE_DEAD);break;}
case 3:{DecrementRemainingSpellUses(oPC,SPELL_BESTOW_CURSE);break;}
case 4:{DecrementRemainingSpellUses(oPC,SPELL_BLINDNESS_AND_DEAFNESS);break;}
case 5:{DecrementRemainingSpellUses(oPC,SPELL_BULLS_STRENGTH);break;}
case 6:{DecrementRemainingSpellUses(oPC,SPELL_BURNING_HANDS);break;}
case 7:{DecrementRemainingSpellUses(oPC,SPELL_CATS_GRACE);break;}
case 8:{DecrementRemainingSpellUses(oPC,SPELL_CHAIN_LIGHTNING);break;}
case 9:{DecrementRemainingSpellUses(oPC,SPELL_CHARM_MONSTER);break;}
case 10:{DecrementRemainingSpellUses(oPC,SPELL_CHARM_PERSON);break;}
case 11:{DecrementRemainingSpellUses(oPC,SPELL_CHARM_PERSON_OR_ANIMAL);break;}
case 12:{DecrementRemainingSpellUses(oPC,SPELL_CIRCLE_OF_DEATH);break;}
case 13:{DecrementRemainingSpellUses(oPC,SPELL_CLAIRAUDIENCE_AND_CLAIRVOYANCE);break;}
case 14:{DecrementRemainingSpellUses(oPC,SPELL_CLARITY);break;}
case 15:{DecrementRemainingSpellUses(oPC,SPELL_CLOUDKILL);break;}
case 16:{DecrementRemainingSpellUses(oPC,SPELL_COLOR_SPRAY);break;}
case 17:{DecrementRemainingSpellUses(oPC,SPELL_CONE_OF_COLD);break;}
case 18:{DecrementRemainingSpellUses(oPC,SPELL_CONFUSION);break;}
case 19:{DecrementRemainingSpellUses(oPC,SPELL_CONTAGION);break;}
case 20:{DecrementRemainingSpellUses(oPC,SPELL_CONTROL_UNDEAD);break;}
case 21:{DecrementRemainingSpellUses(oPC,SPELL_DARKNESS);break;}
case 22:{DecrementRemainingSpellUses(oPC,SPELL_DAZE);break;}
case 23:{DecrementRemainingSpellUses(oPC,SPELL_DELAYED_BLAST_FIREBALL);break;}
case 24:{DecrementRemainingSpellUses(oPC,SPELL_DISMISSAL);break;}
case 25:{DecrementRemainingSpellUses(oPC,SPELL_DISPEL_MAGIC);break;}
case 26:{DecrementRemainingSpellUses(oPC,SPELL_DOMINATE_MONSTER);break;}
case 27:{DecrementRemainingSpellUses(oPC,SPELL_DOMINATE_PERSON);break;}
case 28:{DecrementRemainingSpellUses(oPC,SPELL_EAGLE_SPLEDOR);break;}
case 29:{DecrementRemainingSpellUses(oPC,SPELL_ELEMENTAL_SHIELD);break;}
case 30:{DecrementRemainingSpellUses(oPC,SPELL_ENDURANCE);break;}
case 31:{DecrementRemainingSpellUses(oPC,SPELL_ENDURE_ELEMENTS);break;}
case 32:{DecrementRemainingSpellUses(oPC,SPELL_ENERGY_DRAIN);break;}
case 33:{DecrementRemainingSpellUses(oPC,SPELL_ENERVATION);break;}
case 34:{DecrementRemainingSpellUses(oPC,SPELL_ETHEREAL_VISAGE);break;}
case 35:{DecrementRemainingSpellUses(oPC,SPELL_FEAR);break;}
case 36:{DecrementRemainingSpellUses(oPC,SPELL_FEEBLEMIND);break;}
case 37:{DecrementRemainingSpellUses(oPC,SPELL_FINGER_OF_DEATH);break;}
case 38:{DecrementRemainingSpellUses(oPC,SPELL_FIREBALL);break;}
case 39:{DecrementRemainingSpellUses(oPC,SPELL_FLAME_ARROW);break;}
case 40:{DecrementRemainingSpellUses(oPC,SPELL_FOXS_CUNNING);break;}
case 41:{DecrementRemainingSpellUses(oPC,SPELL_GATE);break;}
case 42:{DecrementRemainingSpellUses(oPC,SPELL_GHOSTLY_VISAGE);break;}
case 43:{DecrementRemainingSpellUses(oPC,SPELL_GHOUL_TOUCH);break;}
case 44:{DecrementRemainingSpellUses(oPC,SPELL_GLOBE_OF_INVULNERABILITY);break;}
case 45:{DecrementRemainingSpellUses(oPC,SPELL_GREASE);break;}
case 46:{DecrementRemainingSpellUses(oPC,SPELL_GREATER_DISPELLING);break;}
case 47:{DecrementRemainingSpellUses(oPC,SPELL_GREATER_PLANAR_BINDING);break;}
case 48:{DecrementRemainingSpellUses(oPC,SPELL_GREATER_RESTORATION);break;}
case 49:
{
//Hope this works LOL
DecrementRemainingSpellUses(oPC,SPELL_GREATER_SHADOW_CONJURATION_ACID_ARROW);
DecrementRemainingSpellUses(oPC,SPELL_GREATER_SHADOW_CONJURATION_MINOR_GLOBE);
DecrementRemainingSpellUses(oPC,SPELL_GREATER_SHADOW_CONJURATION_MIRROR_IMAGE);
DecrementRemainingSpellUses(oPC,SPELL_GREATER_SHADOW_CONJURATION_SUMMON_SHADOW);
DecrementRemainingSpellUses(oPC,SPELL_GREATER_SHADOW_CONJURATION_WEB);
break;
}
case 50:{DecrementRemainingSpellUses(oPC,SPELL_GREATER_SPELL_BREACH);break;}
case 51:{DecrementRemainingSpellUses(oPC,SPELL_GREATER_SPELL_MANTLE);break;}
case 52:{DecrementRemainingSpellUses(oPC,SPELL_GREATER_STONESKIN);break;}
case 53:{DecrementRemainingSpellUses(oPC,SPELL_HASTE);break;}
case 54:{DecrementRemainingSpellUses(oPC,SPELL_HOLD_MONSTER);break;}
case 55:{DecrementRemainingSpellUses(oPC,SPELL_HOLD_PERSON);break;}
case 56:{DecrementRemainingSpellUses(oPC,SPELL_HORRID_WILTING);break;}
case 57:{DecrementRemainingSpellUses(oPC,SPELL_IDENTIFY);break;}
case 58:{DecrementRemainingSpellUses(oPC,SPELL_IMPROVED_INVISIBILITY);break;}
case 59:{DecrementRemainingSpellUses(oPC,SPELL_INCENDIARY_CLOUD);break;}
case 60:{DecrementRemainingSpellUses(oPC,SPELL_INVISIBILITY);break;}
case 61:{DecrementRemainingSpellUses(oPC,SPELL_INVISIBILITY_SPHERE);break;}
case 62:{DecrementRemainingSpellUses(oPC,SPELL_KNOCK);break;}
case 63:{DecrementRemainingSpellUses(oPC,SPELL_LESSER_DISPEL);break;}
case 64:{DecrementRemainingSpellUses(oPC,SPELL_LESSER_MIND_BLANK);break;}
case 65:{DecrementRemainingSpellUses(oPC,SPELL_LESSER_PLANAR_BINDING);break;}
case 66:{DecrementRemainingSpellUses(oPC,SPELL_LESSER_RESTORATION);break;}
case 67:{DecrementRemainingSpellUses(oPC,SPELL_LESSER_SPELL_BREACH);break;}
case 68:{DecrementRemainingSpellUses(oPC,SPELL_LESSER_SPELL_MANTLE);break;}
case 69:{DecrementRemainingSpellUses(oPC,SPELL_LIGHT);break;}
case 70:{DecrementRemainingSpellUses(oPC,SPELL_LIGHTNING_BOLT);break;}
case 71:{DecrementRemainingSpellUses(oPC,SPELL_MAGE_ARMOR);break;}
case 72:
{
DecrementRemainingSpellUses(oPC,SPELL_MAGIC_CIRCLE_AGAINST_CHAOS);
DecrementRemainingSpellUses(oPC,SPELL_MAGIC_CIRCLE_AGAINST_EVIL);
DecrementRemainingSpellUses(oPC,SPELL_MAGIC_CIRCLE_AGAINST_GOOD);
DecrementRemainingSpellUses(oPC,SPELL_MAGIC_CIRCLE_AGAINST_LAW);
break;
}
case 73:{DecrementRemainingSpellUses(oPC,SPELL_MAGIC_MISSILE);break;}
case 74:{DecrementRemainingSpellUses(oPC,SPELL_MASS_BLINDNESS_AND_DEAFNESS);break;}
case 75:{DecrementRemainingSpellUses(oPC,SPELL_MASS_CHARM);break;}
case 76:{DecrementRemainingSpellUses(oPC,SPELL_MASS_HASTE);break;}
case 77:{DecrementRemainingSpellUses(oPC,SPELL_MELFS_ACID_ARROW);break;}
case 78:{DecrementRemainingSpellUses(oPC,SPELL_METEOR_SWARM);break;}
case 79:{DecrementRemainingSpellUses(oPC,SPELL_MIND_BLANK);break;}
case 80:{DecrementRemainingSpellUses(oPC,SPELL_MIND_FOG);break;}
case 81:{DecrementRemainingSpellUses(oPC,SPELL_MINOR_GLOBE_OF_INVULNERABILITY);break;}
case 82:{DecrementRemainingSpellUses(oPC,SPELL_MORDENKAINENS_DISJUNCTION);break;}
case 83:{DecrementRemainingSpellUses(oPC,SPELL_MORDENKAINENS_SWORD);break;}
case 84:{DecrementRemainingSpellUses(oPC,SPELL_NEGATIVE_ENERGY_BURST);break;}
case 85:{DecrementRemainingSpellUses(oPC,SPELL_NEGATIVE_ENERGY_RAY);break;}
case 86:{DecrementRemainingSpellUses(oPC,SPELL_NEUTRALIZE_POISON);break;}
case 87:{DecrementRemainingSpellUses(oPC,SPELL_OWLS_WISDOM);break;}
case 88:{DecrementRemainingSpellUses(oPC,SPELL_PHANTASMAL_KILLER);break;}
case 89:{DecrementRemainingSpellUses(oPC,SPELL_PLANAR_BINDING);break;}
case 90:{DecrementRemainingSpellUses(oPC,SPELL_POLYMORPH_SELF);break;}
case 91:{DecrementRemainingSpellUses(oPC,SPELL_POWER_WORD_KILL);break;}
case 92:{DecrementRemainingSpellUses(oPC,SPELL_POWER_WORD_STUN);break;}
case 93:{DecrementRemainingSpellUses(oPC,SPELL_PREMONITION);break;}
case 94:{DecrementRemainingSpellUses(oPC,SPELL_PRISMATIC_SPRAY);break;}
case 95:
{
DecrementRemainingSpellUses(oPC,SPELL_PROTECTION__FROM_CHAOS);
DecrementRemainingSpellUses(oPC,SPELL_PROTECTION_FROM_EVIL);
DecrementRemainingSpellUses(oPC,SPELL_PROTECTION_FROM_GOOD);
DecrementRemainingSpellUses(oPC,SPELL_PROTECTION_FROM_LAW);
break;
}
case 96:{DecrementRemainingSpellUses(oPC,SPELL_PROTECTION_FROM_ELEMENTS);break;}
case 97:{DecrementRemainingSpellUses(oPC,SPELL_PROTECTION_FROM_SPELLS);break;}
case 98:{DecrementRemainingSpellUses(oPC,SPELL_RAISE_DEAD);break;}
case 99:{DecrementRemainingSpellUses(oPC,SPELL_RAY_OF_ENFEEBLEMENT);break;}
case 100:{DecrementRemainingSpellUses(oPC,SPELL_RAY_OF_FROST);break;}
case 101:{DecrementRemainingSpellUses(oPC,SPELL_REMOVE_BLINDNESS_AND_DEAFNESS);break;}
case 102:{DecrementRemainingSpellUses(oPC,SPELL_REMOVE_CURSE);break;}
case 103:{DecrementRemainingSpellUses(oPC,SPELL_REMOVE_DISEASE);break;}
case 104:{DecrementRemainingSpellUses(oPC,SPELL_RESIST_ELEMENTS);break;}
case 105:{DecrementRemainingSpellUses(oPC,SPELL_RESISTANCE);break;}
case 106:{DecrementRemainingSpellUses(oPC,SPELL_RESTORATION);break;}
case 107:{DecrementRemainingSpellUses(oPC,SPELL_RESURRECTION);break;}
case 108:{DecrementRemainingSpellUses(oPC,SPELL_SCARE);break;}
case 109:{DecrementRemainingSpellUses(oPC,SPELL_SEE_INVISIBILITY);break;}
case 110:
{
DecrementRemainingSpellUses(oPC,SPELL_SHADES_CONE_OF_COLD);
DecrementRemainingSpellUses(oPC,SPELL_SHADES_FIREBALL);
DecrementRemainingSpellUses(oPC,SPELL_SHADES_STONESKIN);
DecrementRemainingSpellUses(oPC,SPELL_SHADES_SUMMON_SHADOW);
DecrementRemainingSpellUses(oPC,SPELL_SHADES_WALL_OF_FIRE);
break;
}
case 111:
{
DecrementRemainingSpellUses(oPC,SPELL_SHADOW_CONJURATION_DARKNESS);
DecrementRemainingSpellUses(oPC,SPELL_SHADOW_CONJURATION_INIVSIBILITY);
DecrementRemainingSpellUses(oPC,SPELL_SHADOW_CONJURATION_MAGE_ARMOR);
DecrementRemainingSpellUses(oPC,SPELL_SHADOW_CONJURATION_MAGIC_MISSILE);
DecrementRemainingSpellUses(oPC,SPELL_SHADOW_CONJURATION_SUMMON_SHADOW);
break;
}
case 112:{DecrementRemainingSpellUses(oPC,SPELL_SHAPECHANGE);break;}
case 113:{DecrementRemainingSpellUses(oPC,SPELL_SILENCE);break;}
case 114:{DecrementRemainingSpellUses(oPC,SPELL_SLEEP);break;}
case 115:{DecrementRemainingSpellUses(oPC,SPELL_SLOW);break;}
case 116:{DecrementRemainingSpellUses(oPC,SPELL_SOUND_BURST);break;}
case 117:{DecrementRemainingSpellUses(oPC,SPELL_SPELL_MANTLE);break;}
case 118:{DecrementRemainingSpellUses(oPC,SPELL_STINKING_CLOUD);break;}
case 119:{DecrementRemainingSpellUses(oPC,SPELL_STONESKIN);break;}
case 120:{DecrementRemainingSpellUses(oPC,SPELL_SUMMON_CREATURE_I);break;}
case 121:{DecrementRemainingSpellUses(oPC,SPELL_SUMMON_CREATURE_II);break;}
case 122:{DecrementRemainingSpellUses(oPC,SPELL_SUMMON_CREATURE_III);break;}
case 123:{DecrementRemainingSpellUses(oPC,SPELL_SUMMON_CREATURE_IV);break;}
case 124:{DecrementRemainingSpellUses(oPC,SPELL_SUMMON_CREATURE_IX);break;}
case 125:{DecrementRemainingSpellUses(oPC,SPELL_SUMMON_CREATURE_V);break;}
case 126:{DecrementRemainingSpellUses(oPC,SPELL_SUMMON_CREATURE_VI);break;}
case 127:{DecrementRemainingSpellUses(oPC,SPELL_SUMMON_CREATURE_VII);break;}
case 128:{DecrementRemainingSpellUses(oPC,SPELL_SUMMON_CREATURE_VIII);break;}
case 129:{DecrementRemainingSpellUses(oPC,SPELL_TENSERS_TRANSFORMATION);break;}
case 130:{DecrementRemainingSpellUses(oPC,SPELL_TIME_STOP);break;}
case 131:{DecrementRemainingSpellUses(oPC,SPELL_TRUE_SEEING);break;}
//Comment this out if you do not wish it to always appear
//if (iCheckSpell(oPC,B2,C2,D1,P0,R1,S1,W2)==1) CreateItemOnObject("scribe132",oSelf,1); //Ultravision
case 133:{DecrementRemainingSpellUses(oPC,SPELL_VAMPIRIC_TOUCH);break;}
case 134:{DecrementRemainingSpellUses(oPC,SPELL_WAIL_OF_THE_BANSHEE);break;}
case 135:{DecrementRemainingSpellUses(oPC,SPELL_WALL_OF_FIRE);break;}
case 136:{DecrementRemainingSpellUses(oPC,SPELL_WEB);break;}
case 137:{DecrementRemainingSpellUses(oPC,SPELL_WEIRD);break;}
case 138:{DecrementRemainingSpellUses(oPC,SPELL_CURE_MINOR_WOUNDS);break;}
case 139:{DecrementRemainingSpellUses(oPC,SPELL_CURE_LIGHT_WOUNDS);break;}
case 140:{DecrementRemainingSpellUses(oPC,SPELL_CURE_MODERATE_WOUNDS);break;}
case 141:{DecrementRemainingSpellUses(oPC,SPELL_CURE_SERIOUS_WOUNDS);break;}
case 142:{DecrementRemainingSpellUses(oPC,SPELL_FIND_TRAPS);break;}
case 143:{DecrementRemainingSpellUses(oPC,SPELL_AID);break;}
case 144:{DecrementRemainingSpellUses(oPC,SPELL_AURA_OF_VITALITY);break;}
//Comment this out if you do not wish it to always appear
//if (iCheckSpell(oPC,B0,C8,D0,P0,R0,S0,W0)==1) CreateItemOnObject("scribe145",oSelf,1); //Aura versus Alignment
case 146:{DecrementRemainingSpellUses(oPC,SPELL_AWAKEN);break;}
case 147:{DecrementRemainingSpellUses(oPC,SPELL_BARKSKIN);break;}
case 148:{DecrementRemainingSpellUses(oPC,SPELL_BLADE_BARRIER);break;}
case 149:{DecrementRemainingSpellUses(oPC,SPELL_BLESS);break;}
case 150:{DecrementRemainingSpellUses(oPC,SPELL_CALL_LIGHTNING);break;}
case 151:{DecrementRemainingSpellUses(oPC,SPELL_CIRCLE_OF_DOOM);break;}
case 152:{DecrementRemainingSpellUses(oPC,SPELL_CREATE_GREATER_UNDEAD);break;}
case 153:{DecrementRemainingSpellUses(oPC,SPELL_CREATE_UNDEAD);break;}
case 154:{DecrementRemainingSpellUses(oPC,SPELL_CREEPING_DOOM);break;}
case 155:{DecrementRemainingSpellUses(oPC,SPELL_CURE_CRITICAL_WOUNDS);break;}
case 156:{DecrementRemainingSpellUses(oPC,SPELL_DEATH_WARD);break;}
case 157:{DecrementRemainingSpellUses(oPC,SPELL_DESTRUCTION);break;}
case 158:{DecrementRemainingSpellUses(oPC,SPELL_DIVINE_POWER);break;}
case 159:{DecrementRemainingSpellUses(oPC,SPELL_DOMINATE_ANIMAL);break;}
case 160:{DecrementRemainingSpellUses(oPC,SPELL_DOOM);break;}
case 161:{DecrementRemainingSpellUses(oPC,SPELL_ELEMENTAL_SWARM);break;}
case 162:{DecrementRemainingSpellUses(oPC,SPELL_ENERGY_BUFFER);break;}
case 163:{DecrementRemainingSpellUses(oPC,SPELL_ENTANGLE);break;}
case 164:{DecrementRemainingSpellUses(oPC,SPELL_EVARDS_BLACK_TENTACLES);break;}
case 165:{DecrementRemainingSpellUses(oPC,SPELL_FIRE_STORM);break;}
case 166:{DecrementRemainingSpellUses(oPC,SPELL_FLAME_LASH);break;}
case 167:{DecrementRemainingSpellUses(oPC,SPELL_FLAME_STRIKE);break;}
case 168:{DecrementRemainingSpellUses(oPC,SPELL_FREEDOM_OF_MOVEMENT);break;}
case 169:{DecrementRemainingSpellUses(oPC,SPELL_HAMMER_OF_THE_GODS);break;}
case 170:{DecrementRemainingSpellUses(oPC,SPELL_HARM);break;}
case 171:{DecrementRemainingSpellUses(oPC,SPELL_HEAL);break;}
case 172:{DecrementRemainingSpellUses(oPC,SPELL_HEALING_CIRCLE);break;}
case 173:{DecrementRemainingSpellUses(oPC,SPELL_HOLD_ANIMAL);break;}
case 174:{DecrementRemainingSpellUses(oPC,SPELL_ICE_STORM);break;}
case 175:{DecrementRemainingSpellUses(oPC,SPELL_IMPLOSION);break;}
case 176:{DecrementRemainingSpellUses(oPC,SPELL_INVISIBILITY_PURGE);break;}
case 177:{DecrementRemainingSpellUses(oPC,SPELL_LEGEND_LORE);break;}
case 178:{DecrementRemainingSpellUses(oPC,SPELL_MASS_HEAL);break;}
case 179:{DecrementRemainingSpellUses(oPC,SPELL_NATURES_BALANCE);break;}
case 180:{DecrementRemainingSpellUses(oPC,SPELL_NEGATIVE_ENERGY_PROTECTION);break;}
case 181:{DecrementRemainingSpellUses(oPC,SPELL_POISON);break;}
case 182:{DecrementRemainingSpellUses(oPC,SPELL_PRAYER);break;}
case 183:{DecrementRemainingSpellUses(oPC,SPELL_REGENERATE);break;}
case 184:{DecrementRemainingSpellUses(oPC,SPELL_REMOVE_FEAR);break;}
case 185:{DecrementRemainingSpellUses(oPC,SPELL_REMOVE_PARALYSIS);break;}
case 186:{DecrementRemainingSpellUses(oPC,SPELL_SANCTUARY);break;}
case 187:{DecrementRemainingSpellUses(oPC,SPELL_SEARING_LIGHT);break;}
case 188:{DecrementRemainingSpellUses(oPC,SPELL_SHADOW_SHIELD);break;}
case 189:{DecrementRemainingSpellUses(oPC,SPELL_SLAY_LIVING);break;}
case 190:{DecrementRemainingSpellUses(oPC,SPELL_SPELL_RESISTANCE);break;}
case 191:{DecrementRemainingSpellUses(oPC,SPELL_STORM_OF_VENGEANCE);break;}
case 192:{DecrementRemainingSpellUses(oPC,SPELL_SUNBEAM);break;}
case 193:{DecrementRemainingSpellUses(oPC,SPELL_VIRTUE);break;}
case 194:{DecrementRemainingSpellUses(oPC,SPELL_WAR_CRY);break;}
case 195:{DecrementRemainingSpellUses(oPC,SPELL_WORD_OF_FAITH);break;}
case 197:{DecrementRemainingSpellUses(oPC,SPELL_ACID_SPLASH);break;}
case 198:{DecrementRemainingSpellUses(oPC,SPELL_AMPLIFY);break;}
case 199:{DecrementRemainingSpellUses(oPC,SPELL_AURAOFGLORY);break;}
case 200:{DecrementRemainingSpellUses(oPC,SPELL_BALAGARNSIRONHORN);break;}
case 201:{DecrementRemainingSpellUses(oPC,SPELL_BANE);break;}
case 202:{DecrementRemainingSpellUses(oPC,SPELL_BIGBYS_CLENCHED_FIST);break;}
case 203:{DecrementRemainingSpellUses(oPC,SPELL_BIGBYS_CRUSHING_HAND);break;}
case 204:{DecrementRemainingSpellUses(oPC,SPELL_BIGBYS_FORCEFUL_HAND);break;}
case 205:{DecrementRemainingSpellUses(oPC,SPELL_BIGBYS_GRASPING_HAND);break;}
case 206:{DecrementRemainingSpellUses(oPC,SPELL_BIGBYS_INTERPOSING_HAND);break;}
case 207:{DecrementRemainingSpellUses(oPC,SPELL_BLOOD_FRENZY);break;}
case 208:{DecrementRemainingSpellUses(oPC,SPELL_BOMBARDMENT);break;}
case 209:{DecrementRemainingSpellUses(oPC,SPELL_CONTINUAL_FLAME);break;}
case 210:{DecrementRemainingSpellUses(oPC,SPELL_DIRGE);break;}
case 211:{DecrementRemainingSpellUses(oPC,SPELL_DISPLACEMENT);break;}
case 212:{DecrementRemainingSpellUses(oPC,SPELL_DIVINE_FAVOR);break;}
case 213:{DecrementRemainingSpellUses(oPC,SPELL_DIVINE_MIGHT);break;}
case 214:{DecrementRemainingSpellUses(oPC,SPELL_DROWN);break;}
case 215:{DecrementRemainingSpellUses(oPC,SPELL_ELECTRIC_JOLT);break;}
case 216:{DecrementRemainingSpellUses(oPC,SPELL_ENTROPIC_SHIELD);break;}
case 217:{DecrementRemainingSpellUses(oPC,SPELL_EXPEDITIOUS_RETREAT);break;}
case 218:{DecrementRemainingSpellUses(oPC,SPELL_FIREBRAND);break;}
case 219:{DecrementRemainingSpellUses(oPC,SPELL_FLARE);break;}
case 220:{DecrementRemainingSpellUses(oPC,SPELL_FLESH_TO_STONE);break;}
case 221:{DecrementRemainingSpellUses(oPC,SPELL_GREATER_MAGIC_FANG);break;}
//Comment this line out if you do not wish this spell to always appear in the scribe's list
//if (iCheckSpell(oPC,B0,C6,D0,P0,R0,S8,W8)==1) CreateItemOnObject("scribe222",oSelf,1); //Greater Sanctuary
case 223:{DecrementRemainingSpellUses(oPC,SPELL_GUST_OF_WIND);break;}
case 224:{DecrementRemainingSpellUses(oPC,SPELL_INFERNO);break;}
case 225:{DecrementRemainingSpellUses(oPC,SPELL_INFLICT_CRITICAL_WOUNDS);break;}
case 226:{DecrementRemainingSpellUses(oPC,SPELL_INFLICT_LIGHT_WOUNDS);break;}
case 227:{DecrementRemainingSpellUses(oPC,SPELL_INFLICT_MINOR_WOUNDS);break;}
case 228:{DecrementRemainingSpellUses(oPC,SPELL_INFLICT_MODERATE_WOUNDS);break;}
case 229:{DecrementRemainingSpellUses(oPC,SPELL_INFLICT_SERIOUS_WOUNDS);break;}
case 230:{DecrementRemainingSpellUses(oPC,SPELL_ISAACS_LESSER_MISSILE_STORM);break;}
case 231:{DecrementRemainingSpellUses(oPC,SPELL_ISAACS_GREATER_MISSILE_STORM);break;}
case 232:{DecrementRemainingSpellUses(oPC,SPELL_MAGIC_FANG);break;}
case 233:{DecrementRemainingSpellUses(oPC,SPELL_MASS_CAMOFLAGE);break;}
case 234:{DecrementRemainingSpellUses(oPC,SPELL_ONE_WITH_THE_LAND);break;}
//Comment this line out if you do not wish this spell to always appear in the scribe's list
//if (iCheckSpell(oPC,B0,C0,D5,P0,R0,S0,W0)==1) CreateItemOnObject("scribe235",oSelf,1); //Owl's Insight (#235)
case 236:{DecrementRemainingSpellUses(oPC,SPELL_PLANAR_ALLY);break;}
case 237:{DecrementRemainingSpellUses(oPC,SPELL_QUILLFIRE);break;}
case 238:{DecrementRemainingSpellUses(oPC,SPELL_SHIELD);break;}
case 239:{DecrementRemainingSpellUses(oPC,SPELL_SHIELD_OF_FAITH);break;}
case 240:{DecrementRemainingSpellUses(oPC,SPELL_SPIKE_GROWTH);break;}
case 241:{DecrementRemainingSpellUses(oPC,SPELL_STONE_TO_FLESH);break;}
case 242:{DecrementRemainingSpellUses(oPC,SPELL_SUNBURST);break;}
case 243:{DecrementRemainingSpellUses(oPC,SPELL_TASHAS_HIDEOUS_LAUGHTER);break;}
case 244:{DecrementRemainingSpellUses(oPC,SPELL_TRUE_STRIKE);break;}
case 245:{DecrementRemainingSpellUses(oPC,SPELL_UNDEATHS_ETERNAL_FOE);break;}
case 246:{DecrementRemainingSpellUses(oPC,SPELL_WOUNDING_WHISPERS);break;}
default:{break;}
}
}
string CustomComponent(int iSpellNum)
{
//Add your own special component here
//format of the command is:
//case 1:{sComponent3="ComponentItemTag";break;}
//
string sComponent3;
switch (iSpellNum)
{
case 1:{sComponent3="";break;}
case 2:{sComponent3="";break;}
case 3:{sComponent3="";break;}
case 4:{sComponent3="";break;}
case 5:{sComponent3="";break;}
case 6:{sComponent3="";break;}
case 7:{sComponent3="";break;}
case 8:{sComponent3="";break;}
case 9:{sComponent3="";break;}
case 10:{sComponent3="";break;}
case 11:{sComponent3="";break;}
case 12:{sComponent3="";break;}
case 13:{sComponent3="";break;}
case 14:{sComponent3="";break;}
case 15:{sComponent3="";break;}
case 16:{sComponent3="";break;}
case 17:{sComponent3="";break;}
case 18:{sComponent3="";break;}
case 19:{sComponent3="";break;}
case 20:{sComponent3="";break;}
case 21:{sComponent3="";break;}
case 22:{sComponent3="";break;}
case 23:{sComponent3="";break;}
case 24:{sComponent3="";break;}
case 25:{sComponent3="";break;}
case 26:{sComponent3="";break;}
case 27:{sComponent3="";break;}
case 28:{sComponent3="";break;}
case 29:{sComponent3="";break;}
case 30:{sComponent3="";break;}
case 31:{sComponent3="";break;}
case 32:{sComponent3="";break;}
case 33:{sComponent3="";break;}
case 34:{sComponent3="";break;}
case 35:{sComponent3="";break;}
case 36:{sComponent3="";break;}
case 37:{sComponent3="";break;}
case 38:{sComponent3="";break;}
case 39:{sComponent3="";break;}
case 40:{sComponent3="";break;}
case 41:{sComponent3="";break;}
case 42:{sComponent3="";break;}
case 43:{sComponent3="";break;}
case 44:{sComponent3="";break;}
case 45:{sComponent3="";break;}
case 46:{sComponent3="";break;}
case 47:{sComponent3="";break;}
case 48:{sComponent3="";break;}
case 49:{sComponent3="";break;}
case 50:{sComponent3="";break;}
case 51:{sComponent3="";break;}
case 52:{sComponent3="";break;}
case 53:{sComponent3="";break;}
case 54:{sComponent3="";break;}
case 55:{sComponent3="";break;}
case 56:{sComponent3="";break;}
case 57:{sComponent3="";break;}
case 58:{sComponent3="";break;}
case 59:{sComponent3="";break;}
case 60:{sComponent3="";break;}
case 61:{sComponent3="";break;}
case 62:{sComponent3="";break;}
case 63:{sComponent3="";break;}
case 64:{sComponent3="";break;}
case 65:{sComponent3="";break;}
case 66:{sComponent3="";break;}
case 67:{sComponent3="";break;}
case 68:{sComponent3="";break;}
case 69:{sComponent3="";break;}
case 70:{sComponent3="";break;}
case 71:{sComponent3="";break;}
case 72:{sComponent3="";break;}
case 73:{sComponent3="";break;}
case 74:{sComponent3="";break;}
case 75:{sComponent3="";break;}
case 76:{sComponent3="";break;}
case 77:{sComponent3="";break;}
case 78:{sComponent3="";break;}
case 79:{sComponent3="";break;}
case 80:{sComponent3="";break;}
case 81:{sComponent3="";break;}
case 82:{sComponent3="";break;}
case 83:{sComponent3="";break;}
case 84:{sComponent3="";break;}
case 85:{sComponent3="";break;}
case 86:{sComponent3="";break;}
case 87:{sComponent3="";break;}
case 88:{sComponent3="";break;}
case 89:{sComponent3="";break;}
case 90:{sComponent3="";break;}
case 91:{sComponent3="";break;}
case 92:{sComponent3="";break;}
case 93:{sComponent3="";break;}
case 94:{sComponent3="";break;}
case 95:{sComponent3="";break;}
case 96:{sComponent3="";break;}
case 97:{sComponent3="";break;}
case 98:{sComponent3="";break;}
case 99:{sComponent3="";break;}
case 100:{sComponent3="";break;}
case 101:{sComponent3="";break;}
case 102:{sComponent3="";break;}
case 103:{sComponent3="";break;}
case 104:{sComponent3="";break;}
case 105:{sComponent3="";break;}
case 106:{sComponent3="";break;}
case 107:{sComponent3="";break;}
case 108:{sComponent3="";break;}
case 109:{sComponent3="";break;}
case 110:{sComponent3="";break;}
case 111:{sComponent3="";break;}
case 112:{sComponent3="";break;}
case 113:{sComponent3="";break;}
case 114:{sComponent3="";break;}
case 115:{sComponent3="";break;}
case 116:{sComponent3="";break;}
case 117:{sComponent3="";break;}
case 118:{sComponent3="";break;}
case 119:{sComponent3="";break;}
case 120:{sComponent3="";break;}
case 121:{sComponent3="";break;}
case 122:{sComponent3="";break;}
case 123:{sComponent3="";break;}
case 124:{sComponent3="";break;}
case 125:{sComponent3="";break;}
case 126:{sComponent3="";break;}
case 127:{sComponent3="";break;}
case 128:{sComponent3="";break;}
case 129:{sComponent3="";break;}
case 130:{sComponent3="";break;}
case 131:{sComponent3="";break;}
case 132:{sComponent3="";break;}
case 133:{sComponent3="";break;}
case 134:{sComponent3="";break;}
case 135:{sComponent3="";break;}
case 136:{sComponent3="";break;}
case 137:{sComponent3="";break;}
case 138:{sComponent3="";break;}
case 139:{sComponent3="";break;}
case 140:{sComponent3="";break;}
case 141:{sComponent3="";break;}
case 142:{sComponent3="";break;}
case 143:{sComponent3="";break;}
case 144:{sComponent3="";break;}
case 145:{sComponent3="";break;}
case 146:{sComponent3="";break;}
case 147:{sComponent3="";break;}
case 148:{sComponent3="";break;}
case 149:{sComponent3="";break;}
case 150:{sComponent3="";break;}
case 151:{sComponent3="";break;}
case 152:{sComponent3="";break;}
case 153:{sComponent3="";break;}
case 154:{sComponent3="";break;}
case 155:{sComponent3="";break;}
case 156:{sComponent3="";break;}
case 157:{sComponent3="";break;}
case 158:{sComponent3="";break;}
case 159:{sComponent3="";break;}
case 160:{sComponent3="";break;}
case 161:{sComponent3="";break;}
case 162:{sComponent3="";break;}
case 163:{sComponent3="";break;}
case 164:{sComponent3="";break;}
case 165:{sComponent3="";break;}
case 166:{sComponent3="";break;}
case 167:{sComponent3="";break;}
case 168:{sComponent3="";break;}
case 169:{sComponent3="";break;}
case 170:{sComponent3="";break;}
case 171:{sComponent3="";break;}
case 172:{sComponent3="";break;}
case 173:{sComponent3="";break;}
case 174:{sComponent3="";break;}
case 175:{sComponent3="";break;}
case 176:{sComponent3="";break;}
case 177:{sComponent3="";break;}
case 178:{sComponent3="";break;}
case 179:{sComponent3="";break;}
case 180:{sComponent3="";break;}
case 181:{sComponent3="";break;}
case 182:{sComponent3="";break;}
case 183:{sComponent3="";break;}
case 184:{sComponent3="";break;}
case 185:{sComponent3="";break;}
case 186:{sComponent3="";break;}
case 187:{sComponent3="";break;}
case 188:{sComponent3="";break;}
case 189:{sComponent3="";break;}
case 190:{sComponent3="";break;}
case 191:{sComponent3="";break;}
case 192:{sComponent3="";break;}
case 193:{sComponent3="";break;}
case 194:{sComponent3="";break;}
case 195:{sComponent3="";break;}
case 196:{sComponent3="";break;}
case 197:{sComponent3="";break;}
case 198:{sComponent3="";break;}
case 199:{sComponent3="";break;}
case 200:{sComponent3="";break;}
case 201:{sComponent3="";break;}
case 202:{sComponent3="";break;}
case 203:{sComponent3="";break;}
case 204:{sComponent3="";break;}
case 205:{sComponent3="";break;}
case 206:{sComponent3="";break;}
case 207:{sComponent3="";break;}
case 208:{sComponent3="";break;}
case 209:{sComponent3="";break;}
case 210:{sComponent3="";break;}
case 211:{sComponent3="";break;}
case 212:{sComponent3="";break;}
case 213:{sComponent3="";break;}
case 214:{sComponent3="";break;}
case 215:{sComponent3="";break;}
case 216:{sComponent3="";break;}
case 217:{sComponent3="";break;}
case 218:{sComponent3="";break;}
case 219:{sComponent3="";break;}
case 220:{sComponent3="";break;}
case 221:{sComponent3="";break;}
case 222:{sComponent3="";break;}
case 223:{sComponent3="";break;}
case 224:{sComponent3="";break;}
case 225:{sComponent3="";break;}
case 226:{sComponent3="";break;}
case 227:{sComponent3="";break;}
case 228:{sComponent3="";break;}
case 229:{sComponent3="";break;}
case 230:{sComponent3="";break;}
case 231:{sComponent3="";break;}
case 232:{sComponent3="";break;}
case 233:{sComponent3="";break;}
case 234:{sComponent3="";break;}
case 235:{sComponent3="";break;}
case 236:{sComponent3="";break;}
case 237:{sComponent3="";break;}
case 238:{sComponent3="";break;}
case 239:{sComponent3="";break;}
case 240:{sComponent3="";break;}
case 241:{sComponent3="";break;}
case 242:{sComponent3="";break;}
case 243:{sComponent3="";break;}
case 244:{sComponent3="";break;}
case 245:{sComponent3="";break;}
case 246:{sComponent3="";break;}
default:{sComponent3="";break;}
}
return sComponent3;
}