178 lines
6.4 KiB
Plaintext
178 lines
6.4 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Name(ASG_RULE) Reaearch: Book in Lecuturn?
|
|
//:: FileName
|
|
//:: Copyright (c) 2001 Bioware Corp.
|
|
//:://////////////////////////////////////////////
|
|
/*
|
|
This works with the any Lecturn desigend for research
|
|
checks to see if lecturn is within 15m, and if a book is in it.
|
|
It does not care wich book at this time.
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Donny Wilbanks
|
|
//:: Created On: 09/07/02
|
|
//:://////////////////////////////////////////////
|
|
|
|
#include "nw_o0_itemmaker"
|
|
#include "asg_include_mics"
|
|
|
|
void main()
|
|
{
|
|
|
|
int iResult = FALSE;
|
|
object oLecturn =GetNearestObjectByTag("ASG_LECTURN");
|
|
object oSelf = OBJECT_SELF;
|
|
object oPC = GetPCSpeaker();
|
|
object oItem = GetFirstItemInInventory(oLecturn);
|
|
object oChest = GetLocalObject(OBJECT_SELF,"ASG_MIC_CHEST");
|
|
// Make sure all old ones have been cleared
|
|
SetLocalInt(OBJECT_SELF,"ASG_RESEARCH_OPTION_01",FALSE);
|
|
SetLocalInt(OBJECT_SELF,"ASG_RESEARCH_OPTION_02",FALSE);
|
|
SetLocalInt(OBJECT_SELF,"ASG_RESEARCH_OPTION_03",FALSE);
|
|
SetLocalInt(OBJECT_SELF,"ASG_RESEARCH_OPTION_04",FALSE);
|
|
SetLocalInt(OBJECT_SELF,"ASG_RESEARCH_OPTION_05",FALSE);
|
|
SetLocalInt(OBJECT_SELF,"ASG_RESEARCH_OPTION_06",FALSE);
|
|
// Test to make sure object is valid
|
|
// Load Array information
|
|
int iMaxArray = GetLocalInt(OBJECT_SELF,"ASG_MIC_TOTALLIST");
|
|
string asItemName = "ASG_MIC_ITEMNAME";
|
|
string asItemTag = "ASG_MIC_ITEMTAG";
|
|
int iContinue = TRUE;
|
|
// ** Search Area for Magical Focus
|
|
object oFocusLevel = GetNearestObjectByTag("asg_magicfocus_1",OBJECT_SELF);
|
|
int iFmod = 0;
|
|
if (GetIsObjectValid(oFocusLevel))
|
|
{
|
|
iFmod = 5;
|
|
}
|
|
else
|
|
{
|
|
oFocusLevel = GetNearestObjectByTag("asg_magicfocus_2",OBJECT_SELF);
|
|
if (GetIsObjectValid(oFocusLevel))
|
|
{
|
|
iFmod = 10;
|
|
}
|
|
else
|
|
{
|
|
oFocusLevel = GetNearestObjectByTag("asg_magicfocus_3",OBJECT_SELF);
|
|
if (GetIsObjectValid(oFocusLevel))
|
|
{
|
|
iFmod = 20;
|
|
}
|
|
else
|
|
{
|
|
oFocusLevel = GetNearestObjectByTag("asg_magicfocus_4",OBJECT_SELF);
|
|
if (GetIsObjectValid(oFocusLevel))
|
|
{
|
|
iFmod = 100;
|
|
}
|
|
else
|
|
{
|
|
oFocusLevel = GetNearestObjectByTag("asg_magicfocus_5",OBJECT_SELF);
|
|
if (GetIsObjectValid(oFocusLevel))
|
|
{
|
|
iFmod = -20;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// **
|
|
if (iContinue==TRUE)
|
|
{
|
|
int iCurListPoint = GetLocalInt(OBJECT_SELF,"ASG_MIC_CURRENTLISTPOINT");
|
|
if (iCurListPoint<1) iCurListPoint = 0;
|
|
int iK = iCurListPoint; if (iK>iMaxArray) iK = iMaxArray;
|
|
int iGPValue;
|
|
int iSkill_SpellCraft;
|
|
int iDC;
|
|
int iSlot = 0;
|
|
|
|
string sSlotBase = "ASG_RESEARCH_OPTION_0";
|
|
string sSlotBPBase = "ASG_BLUEPRINT_0";
|
|
string sSlot;
|
|
string sSlotBP;
|
|
string sItemName;
|
|
string sItemTag;
|
|
int iToken;
|
|
int iMlevel;
|
|
int iHD;
|
|
string sArDiv = GetLocalString(OBJECT_SELF,"ASG_MIC_MAGICTYPE");
|
|
if (sArDiv=="A")
|
|
{
|
|
iHD = GetHitDice(oPC);
|
|
}else
|
|
{
|
|
iHD = GetHitDice(oPC);
|
|
}
|
|
while (iContinue == TRUE)
|
|
{
|
|
sItemName = GetLocalArrayString(OBJECT_SELF,asItemName,iK);
|
|
sItemTag = GetLocalArrayString(OBJECT_SELF,asItemTag,iK);
|
|
object oItem = GetItemPossessedBy(oChest,sItemTag);
|
|
if (GetIsObjectValid(oItem))
|
|
{
|
|
SetIdentified(oItem,TRUE);
|
|
iGPValue = GetGoldPieceValue(oItem);
|
|
iMlevel = 1;
|
|
|
|
iMlevel = FindItemLevel(oItem);
|
|
if (iFmod<0) iMlevel = iMlevel + iFmod; else iMlevel = iMlevel - iFmod;
|
|
if (iMlevel<0) iMlevel = 1;
|
|
|
|
// FindItemLevel(object oItem)
|
|
/*
|
|
if (iGPValue>0 && iGPValue<500) iMlevel = 1;
|
|
else if (iGPValue>499 && iGPValue<750) iMlevel = 2;
|
|
else if (iGPValue>749 && iGPValue<1750) iMlevel = 3;
|
|
else if (iGPValue>1749 && iGPValue<2500) iMlevel = 4;
|
|
else if (iGPValue>2549 && iGPValue<5000) iMlevel = 5;
|
|
else if (iGPValue>4999 && iGPValue<7500) iMlevel = 6;
|
|
else if (iGPValue>7499 && iGPValue<10000) iMlevel = 7;
|
|
else if (iGPValue>9999 && iGPValue<13500) iMlevel = 8;
|
|
else if (iGPValue>13499 && iGPValue<17000) iMlevel = 9;
|
|
else if (iGPValue>16999 && iGPValue<20000) iMlevel = 10;
|
|
else if (iGPValue>19999)
|
|
{
|
|
iMlevel = 10+((iGPValue-20000)/8000);
|
|
if (iGPValue>99999) iMlevel = iGPValue/5000;
|
|
}
|
|
*/
|
|
iDC = iMlevel;
|
|
/*
|
|
int iType = GetBaseItemType(oItem);
|
|
// Check for Scrolls and Potions
|
|
if (iType == BASE_ITEM_POTIONS || iType == BASE_ITEM_SCROLL)
|
|
{
|
|
iDC = iDC * 3;
|
|
}
|
|
if (iFmod<0) iDC = iDC + (iFmod*-1);
|
|
else
|
|
{ iDC = iDC - iFmod; }
|
|
*/
|
|
iSlot++;
|
|
if (iDC<0) iDC = 1;
|
|
sSlotBP = sSlotBPBase + IntToString(iSlot);
|
|
sSlot = sSlotBase + IntToString(iSlot);
|
|
SetLocalInt(OBJECT_SELF,sSlot,TRUE);
|
|
SetLocalString(OBJECT_SELF,sSlotBP,sItemTag);
|
|
iToken = 197010+iSlot;
|
|
SetLocalInt(OBJECT_SELF,"ASG_MIC_ITEMRESEARCHCD_"+IntToString(iSlot)+"_",iDC);
|
|
SetLocalObject(OBJECT_SELF,"ASG_MIC_ITEMTOBUILD_ITEM_0"+IntToString(iSlot),oItem);
|
|
if (iHD>=iDC)
|
|
{
|
|
SetCustomToken(iToken,"[B] "+sItemName+" LV ("+IntToString(iDC)+")");
|
|
}
|
|
else
|
|
{
|
|
SetCustomToken(iToken,"[X] "+sItemName+" LV ("+IntToString(iDC)+")");
|
|
}
|
|
}
|
|
iK++; if (iSlot>5 || iK>iMaxArray) iContinue = FALSE;
|
|
}
|
|
SetLocalInt(OBJECT_SELF,"ASG_MIC_CURRENTLISTPOINT",iK);
|
|
}
|
|
// Send Player Message - Bonus
|
|
|
|
}
|