107 lines
3.8 KiB
Plaintext
107 lines
3.8 KiB
Plaintext
int lsn=1;
|
|
//lsstype=3
|
|
|
|
void SetItemLocals()
|
|
{
|
|
SetLocalString(OBJECT_SELF, "lsn1", "bladiumgreatswor");
|
|
SetLocalInt(OBJECT_SELF, "lsc_bladiumgreatswor", 4);
|
|
SetLocalString(OBJECT_SELF, "lsi1_bladiumgreatswor", "blackdiamond");
|
|
SetLocalString(OBJECT_SELF, "lsi2_bladiumgreatswor", "blackdiamond");
|
|
SetLocalString(OBJECT_SELF, "lsi3_bladiumgreatswor", "adamantiumingot");
|
|
SetLocalString(OBJECT_SELF, "lsi4_bladiumgreatswor", " gold 100000");
|
|
SetLocalInt(OBJECT_SELF, "lss_bladiumgreatswor", -10);
|
|
SetLocalInt(OBJECT_SELF, "lsv_bladiumgreatswor", VFX_FNF_STRIKE_HOLY);
|
|
// In the above, as you can see, the blueprints for items are easily customizable.
|
|
// Simply replace bladium*** or whatever the BLUEPRINT is, with your item.
|
|
// The materials required are shown in the quotations to the right of the blueprint,
|
|
// But you must remember when changing them, to input the TAG, unlike the item to be crafted,
|
|
// in which you input the BLUEPRINT. So, in short, if you wanted to change this script to be
|
|
// compatible for your own item, say, an Adamantine Greatsword, whose blueprint was,
|
|
// AGSWORD, and you wanted the required materials to be a Silver Shard, a Black Bar, and
|
|
// 100 gp, the script would look like:
|
|
|
|
//void SetItemLocals()
|
|
//{ Below this, AGSWORD is BLUEPRINT of the item to be crafted!
|
|
//SetLocalString(OBJECT_SELF, "lsn1", "AGSWORD");
|
|
//SetLocalInt(OBJECT_SELF, "lsc_AGSWORD", 3);
|
|
//SetLocalString(OBJECT_SELF, "lsi1_AGSWORD", "SilverShard"); <-- These are the TAGS of the required material, remember that!
|
|
//SetLocalString(OBJECT_SELF, "lsi2_AGSWORD", "BlackBar"); <--
|
|
//SetLocalString(OBJECT_SELF, "lsi3_AGSWORD", " gold 100");
|
|
//SetLocalInt(OBJECT_SELF, "lss_AGSWORD", -10);
|
|
//SetLocalInt(OBJECT_SELF, "lsv_AGSWORD", VFX_FNF_STRIKE_HOLY); <-- You can also change the visual that the player recieves when successfully crafted an item.
|
|
// Just go to Constants, on the upper-right bar, scroll down to the 'vfx' section, and replace mine with the one of your choice!
|
|
}
|
|
|
|
void CreateGold(object oTarget, int nAmount)
|
|
{
|
|
CreateItemOnObject("nw_it_gold001", oTarget, nAmount);
|
|
}
|
|
|
|
void main()
|
|
{
|
|
object oOwner=GetPCSpeaker();
|
|
|
|
SetItemLocals();
|
|
|
|
if (lsn==0) return;
|
|
|
|
object oItem;
|
|
int bOkay, nGold, nCount, nNum, nLoop, nLoops, nHasGold, nVis;
|
|
string sCur, sReq;
|
|
|
|
for (nLoop=1; nLoop<=lsn; nLoop++)
|
|
{
|
|
sCur=GetLocalString(OBJECT_SELF, "lsn"+IntToString(nLoop));
|
|
|
|
nNum=GetLocalInt(OBJECT_SELF, "lsc_"+sCur);
|
|
|
|
for (nLoops=1; nLoops<=nNum; nLoops++)
|
|
{
|
|
|
|
sReq=GetLocalString(OBJECT_SELF, "lsi"+IntToString(nLoops)+"_"+sCur);
|
|
if (GetStringLeft(sReq, 8)==" gold ")
|
|
{
|
|
nGold=StringToInt(GetStringRight(sReq, GetStringLength(sReq)-8));
|
|
if (GetGold(oOwner)>=nGold) nCount++;
|
|
|
|
}
|
|
else if (GetItemPossessedBy(oOwner, sReq)!=OBJECT_INVALID)
|
|
{
|
|
SetLocalObject(OBJECT_SELF, "ls__"+IntToString(nLoops), GetItemPossessedBy(oOwner, sReq));
|
|
|
|
nCount++;
|
|
}
|
|
}
|
|
|
|
if (GetLocalInt(OBJECT_SELF, "lss_"+sCur)==-10) bOkay=TRUE;
|
|
else if (GetLastSpell()==GetLocalInt(OBJECT_SELF, "lss_"+sCur)) bOkay=TRUE;
|
|
else bOkay=FALSE;
|
|
|
|
if (bOkay && (nCount==nNum)) bOkay=TRUE;
|
|
else bOkay=FALSE;
|
|
if (bOkay==TRUE)
|
|
{
|
|
|
|
if (nGold>0)
|
|
TakeGoldFromCreature(nGold, oOwner, TRUE);
|
|
for (nLoops=1; nLoops<=nNum; nLoops++)
|
|
{
|
|
oItem=GetLocalObject(OBJECT_SELF, "ls__"+IntToString(nLoops));
|
|
DestroyObject(oItem);
|
|
}
|
|
CreateItemOnObject(sCur, oOwner);
|
|
int nVis=GetLocalInt(OBJECT_SELF, "lsv_"+sCur);
|
|
if (nVis!=-10) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(nVis), oOwner);
|
|
}
|
|
|
|
oItem=OBJECT_INVALID;
|
|
bOkay=FALSE;
|
|
nGold=0;
|
|
nCount=0;
|
|
sCur="";
|
|
sReq="";
|
|
nNum=0;
|
|
}
|
|
}
|
|
|