Fixed CCOH, Fixed starting GP, Fixed DMFI languages, Fix cep weapon appearances, Fixed new player start up system. Added PC deleter. Added ACP 4.1. Full compile. Updated release archive.
847 lines
36 KiB
Plaintext
847 lines
36 KiB
Plaintext
//#include "_persist_01a"
|
|
#include "nw_i0_plot"
|
|
|
|
void CreateAnObject(string sResource, object oPC, int iStackSize);
|
|
void GetNextStackedItem(object oPC, string sItemTag, int iCount, int iMode, string sStackResRef);
|
|
void GetNextItemPossessedBy(object oPC, string sItemTag);
|
|
string CraftLookup(string sResRef, int iIngotType, int iJewelType);
|
|
//string ComponentLookup(int iIngotType, int iJewelType);
|
|
|
|
|
|
|
|
void main()
|
|
{
|
|
object oItem = GetInventoryDisturbItem();
|
|
object oPC = GetLastDisturbed();
|
|
object oSelf = OBJECT_SELF;
|
|
string sTag = GetTag(oItem);
|
|
string sSuccess = "";
|
|
string sFail = "";
|
|
string sItemResRef = "";
|
|
string sItemResRefPoor = "";
|
|
string sItemResRefExceptional = "";
|
|
int iRandom = 0;
|
|
int iSuccess = 0;
|
|
int iSuccess2 = 0;
|
|
int iSkillGain = 0;
|
|
int iComponent1 = 1;
|
|
int iComponent2 = 0;
|
|
int iComponent3 = 0;
|
|
int iComponent1Stackable = 0;
|
|
int iComponent2Stackable = 1;
|
|
int iComponent3Stackable = 0;
|
|
int iStackSize;
|
|
int iDifficulty;
|
|
string sComponent1 = "";
|
|
string sComponent2 = "";
|
|
string sComponent3 = "";
|
|
string sComponent1Name = "";
|
|
string sComponent2Name = "";
|
|
string sComponent3Name = "";
|
|
string sComponentResRef = "";
|
|
object oTemp = OBJECT_INVALID;
|
|
|
|
int iIngotType = GetLocalInt(oPC,"iUseIngotType"); // get the current ingot type used
|
|
int iIngotMod = iIngotType *25;// set the skill modifier for the ingot type used.
|
|
|
|
//Modifiers for Ingot Type
|
|
if (iIngotType==9) iIngotMod = 90; // Silver is little easier than Bronze
|
|
if (iIngotType==10) iIngotMod = 175; // Mithril is hard as Verite
|
|
if (iIngotType==11) iIngotMod = 200; // Adamantite is hard as Valorite
|
|
if (iIngotType==12) iIngotMod = 150; // Platinum is hard as Agapite
|
|
if (iIngotMod >0) iIngotMod = iIngotMod + 250;
|
|
|
|
int iJewelType = GetLocalInt(oPC,"iUseJewelType");
|
|
int iJewelMod = 0;
|
|
//Modifiers for Gem Type
|
|
if (iJewelType>0) iJewelMod = 50;
|
|
if (iJewelType>12) iJewelMod = 100;
|
|
if (iJewelType>25) iJewelMod = 150;
|
|
if (iJewelType>36) iJewelMod = 200;
|
|
if (iJewelType>42) iJewelMod = 250;
|
|
if (iJewelType>51) iJewelMod = 300;
|
|
|
|
int iJewelSkill = GetCampaignInt("UOACraft","iJewelSkill",oPC);
|
|
int iJewelChance = iJewelSkill;
|
|
|
|
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 craft by removing pattern tokens from this station.",oPC,FALSE);
|
|
}
|
|
|
|
// Check for ingot/gem type switch or non-flagswitch/pattern item
|
|
if (GetStringLeft(GetResRef(oItem),7)!="pattern")
|
|
{
|
|
if (sTag == "SWITCH_IRON"){SetLocalInt(oPC,"iUseIngotType",0);sComponent1 = "Iron";}
|
|
if (sTag == "SWITCH_DULL"){SetLocalInt(oPC,"iUseIngotType",1);sComponent1 = "Dull Copper";}
|
|
if (sTag == "SWITCH_SHADOW"){SetLocalInt(oPC,"iUseIngotType",2);sComponent1 = "Shadow Iron";}
|
|
if (sTag == "SWITCH_COPPER"){SetLocalInt(oPC,"iUseIngotType",3);sComponent1 = "Copper";}
|
|
if (sTag == "SWITCH_BRONZE"){SetLocalInt(oPC,"iUseIngotType",4);sComponent1 = "Bronze";}
|
|
if (sTag == "SWITCH_GOLD"){SetLocalInt(oPC,"iUseIngotType",5);sComponent1 = "Gold";}
|
|
if (sTag == "SWITCH_AGAPITE"){SetLocalInt(oPC,"iUseIngotType",6);sComponent1 = "Agapite";}
|
|
if (sTag == "SWITCH_VERITE"){SetLocalInt(oPC,"iUseIngotType",7);sComponent1 = "Verite";}
|
|
if (sTag == "SWITCH_VALORITE"){SetLocalInt(oPC,"iUseIngotType",8);sComponent1 = "Valorite";}
|
|
if (sTag == "SWITCH_SILVER"){SetLocalInt(oPC,"iUseIngotType",9);sComponent1 = "Silver";}
|
|
if (sTag == "SWITCH_MITHRIL"){SetLocalInt(oPC,"iUseIngotType",10);sComponent1 = "Mithril";}
|
|
if (sTag == "SWITCH_ADAMANTITE"){SetLocalInt(oPC,"iUseIngotType",11);sComponent1 = "Adamantite";}
|
|
if (sTag == "SWITCH_PLATINUM"){SetLocalInt(oPC,"iUseIngotType",12);sComponent1 = "Platinum";}
|
|
if (GetStringRight(sTag,4)=="1000")
|
|
{
|
|
SetLocalInt(oPC,"iUseJewelType",0);
|
|
sComponent2 = GetStringRight(GetName(oItem),GetStringLength(GetName(oItem))-4);
|
|
FloatingTextStringOnCreature("Preparing to craft without gemstones.",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)));
|
|
}
|
|
if (StringToInt(GetStringRight(sTag,3))>99)
|
|
{
|
|
SetLocalInt(oPC,"iUseJewelType",StringToInt(GetStringRight(sTag,3))-100);
|
|
sComponent2 = GetStringRight(GetName(oItem),GetStringLength(GetName(oItem))-4);
|
|
FloatingTextStringOnCreature("Preparing to use "+sComponent2+".",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)));
|
|
}
|
|
if (GetStringLeft(sTag,7)=="SWITCH_")
|
|
{
|
|
FloatingTextStringOnCreature("Re-tooling to use "+sComponent1+" ingots.",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;
|
|
}
|
|
|
|
CopyObject(oItem,GetLocation(oPC),OBJECT_SELF,GetTag(oItem));
|
|
DestroyObject(oItem);
|
|
|
|
//Skill Check Modifier Display for Bugtesting
|
|
if (GetStringLeft(GetResRef(oItem),7)=="pattern")
|
|
{
|
|
SendMessageToPC(oPC,"Jewel Modifier: "+IntToString(iJewelMod));
|
|
SendMessageToPC(oPC,"Ingot Modifier: "+IntToString(iIngotMod));
|
|
}
|
|
|
|
if (GetLocalInt(OBJECT_SELF,"iAmInUse") != 0)
|
|
{
|
|
SendMessageToPC(oPC,"You must wait until the current jewelry item is completed before starting another.");
|
|
return;
|
|
}
|
|
SetLocalInt(OBJECT_SELF,"iAmInUse",99);
|
|
DelayCommand(14.0,SetLocalInt(OBJECT_SELF,"iAmInUse",0));
|
|
|
|
// Set Ingot Tag and name based on ingot selection
|
|
switch (iIngotType)
|
|
{
|
|
case 0:{sComponent2 = "INGOT_IRON";sComponent2Name = "iron ingots";break;}
|
|
case 1:{sComponent2 = "INGOT_DULL";sComponent2Name = "dull copper ingots";break;}
|
|
case 2:{sComponent2 = "INGOT_SHADOW";sComponent2Name = "shadow iron ingots";break;}
|
|
case 3:{sComponent2 = "INGOT_COPPER";sComponent2Name = "copper ingots";break;}
|
|
case 4:{sComponent2 = "INGOT_BRONZE";sComponent2Name = "bronze ingots";break;}
|
|
case 5:{sComponent2 = "INGOT_GOLD";sComponent2Name = "gold ingots";break;}
|
|
case 6:{sComponent2 = "INGOT_AGAPITE";sComponent2Name = "agapite ingots";break;}
|
|
case 7:{sComponent2 = "INGOT_VERITE";sComponent2Name = "verite ingots";break;}
|
|
case 8:{sComponent2 = "INGOT_VALORITE";sComponent2Name = "valorite ingots";break;}
|
|
case 9:{sComponent2 = "INGOT_SILVER";sComponent2Name = "silver ingots";break;}
|
|
case 10:{sComponent2 = "INGOT_MITHRIL";sComponent2Name = "mithril ingots";break;}
|
|
case 11:{sComponent2 = "INGOT_ADAMANTITE";sComponent2Name = "adamantite ingots";break;}
|
|
case 12:{sComponent2 = "INGOT_PLATINUM";sComponent2Name = "platinum ingots";break;}
|
|
default:{FloatingTextStringOnCreature("Error in ingot selection..",oPC,FALSE);return;break;}
|
|
}
|
|
|
|
|
|
|
|
if (iJewelChance < 350)
|
|
{
|
|
iJewelChance = GetAbilityScore(oPC,ABILITY_DEXTERITY)*5;
|
|
iJewelChance = iJewelChance+(GetAbilityScore(oPC,ABILITY_WISDOM)*3);
|
|
iJewelChance = iJewelChance+(GetAbilityScore(oPC,ABILITY_CHARISMA)*2);
|
|
iJewelChance = iJewelChance*3;
|
|
if (iJewelChance>350)iJewelChance=350;
|
|
if (iJewelSkill > iJewelChance) iJewelChance=iJewelSkill;
|
|
}
|
|
|
|
//Begin Crafting Test
|
|
if (sTag == "pattern075")//RINGS
|
|
{
|
|
//iJewelChance = iJewelChance - 100;
|
|
if (iJewelType==0)
|
|
{
|
|
sSuccess = "You carefully mold the ring, smothing off any rough edges.";
|
|
sFail = "The metal shatters the mold as you try to craft the ring..";
|
|
sItemResRef = CraftLookup("Ring-Normal",iIngotType,0);
|
|
sItemResRefPoor = CraftLookup("Ring-Poor",iIngotType,0);
|
|
sItemResRefExceptional = CraftLookup("Ring-Exceptional",iIngotType,0);
|
|
sComponent1 = "ITEM_RINGMOLD"; // Ring mold
|
|
sComponent1Name = "ring molds";
|
|
}
|
|
else
|
|
{
|
|
sSuccess = "You carefully set the stone into the ring mount.";
|
|
sFail = "The gemstone shatters in your attempt to set it into the ring setting.";
|
|
sItemResRef = CraftLookup("Ring-Exceptional",iIngotType,iJewelType);
|
|
sComponent1 = CraftLookup("Ring-Exceptional",iIngotType,0);
|
|
sComponent1Name = "exceptional"+GetStringLeft(sComponent2Name,GetStringLength(sComponent2Name)-7)+" rings";
|
|
}
|
|
iComponent1 = 1; //1 Ring Mold or 1 Ring of selected Type
|
|
iComponent2 = 1; //1 Ingot or 1 Exceptional Gem
|
|
}
|
|
|
|
//Begin Crafting Test
|
|
if (sTag == "pattern096") //AMULETS
|
|
{
|
|
iJewelChance = iJewelChance - 100;
|
|
if (iJewelType==0)
|
|
{
|
|
sSuccess = "You carefully mold the amulet, smothing off any rough edges.";
|
|
sFail = "The metal shatters the mold as you try to craft the amulet..";
|
|
sItemResRef = CraftLookup("Amulet-Normal",iIngotType,0);
|
|
sItemResRefPoor = CraftLookup("Amulet-Poor",iIngotType,0);
|
|
sItemResRefExceptional = CraftLookup("Amulet-Exceptional",iIngotType,0);
|
|
sComponent1 = "ITEM_AMULETMOLD"; // Amulet mold
|
|
sComponent1Name = "amulet molds";
|
|
}
|
|
else
|
|
{
|
|
sSuccess = "You carefully set the stones into the amulet's mount.";
|
|
sFail = "One gemstone shatters in your attempt to set it into the amulet's setting.";
|
|
sItemResRef = CraftLookup("Amulet-Exceptional",iIngotType,iJewelType);
|
|
sComponent1 = CraftLookup("Amulet-Exceptional",iIngotType,0);
|
|
sComponent1Name = "exceptional"+GetStringLeft(sComponent2Name,GetStringLength(sComponent2Name)-9)+" amulets";
|
|
}
|
|
iComponent1 = 1; //1 Ring Mold or 1 Ring of selected Type
|
|
iComponent2 = 2; //2 Ingot or 2 Exceptional Gem
|
|
}
|
|
|
|
//Begin Crafting Test
|
|
if (sTag == "pattern097")//NECKLACES
|
|
{
|
|
iJewelChance = iJewelChance - 50;
|
|
if (iJewelType==0)
|
|
{
|
|
sSuccess = "You carefully mold the necklace, smothing off any rough edges.";
|
|
sFail = "The metal shatters the mold as you try to craft the necklace..";
|
|
sItemResRef = CraftLookup("Necklace-Normal",iIngotType,0);
|
|
sItemResRefPoor = CraftLookup("Necklace-Poor",iIngotType,0);
|
|
sItemResRefExceptional = CraftLookup("Necklace-Exceptional",iIngotType,0);
|
|
sComponent1 = "ITEM_NECKLACEMOLD"; // Necklace mold
|
|
sComponent1Name = "necklace molds";
|
|
}
|
|
else
|
|
{
|
|
sSuccess = "You carefully set the stone into the necklace.";
|
|
sFail = "The gemstone shatters in your attempt to set it into the necklace.";
|
|
sItemResRef = CraftLookup("Necklace-Exceptional",iIngotType,iJewelType);
|
|
sComponent1 = CraftLookup("Necklace-Exceptional",iIngotType,0);
|
|
sComponent1Name = "exceptional"+GetStringLeft(sComponent2Name,GetStringLength(sComponent2Name)-11)+" necklaces";
|
|
}
|
|
iComponent1 = 1; //1 Necklace Mold or 1 Necklace of selected Type
|
|
iComponent2 = 1; //1 Ingot or 1 Exceptional Gem
|
|
}
|
|
|
|
|
|
//Name the gem, if the type is not '0' - or 'No Gem'
|
|
switch(iJewelType)
|
|
{
|
|
case 0:{break;} //Do nothing.. sComponent2 is an ingot.. set earlier
|
|
case 1:{sComponent2="GEM_EX_EYEAGATE";sComponent2Name="Expertly Cut Eye Agate";break;}
|
|
case 2:{sComponent2="GEM_EX_HEMATITE";sComponent2Name="Expertly Cut Hematite";break;}
|
|
case 3:{sComponent2="GEM_EX_AZURITE";sComponent2Name="Expertly Cut Azurite";break;}
|
|
case 4:{sComponent2="GEM_EX_BANDEDAGATE";sComponent2Name="Expertly Cut Banded Agate";break;}
|
|
case 5:{sComponent2="GEM_EX_BLUEQUARTZ";sComponent2Name="Expertly Cut Blue Quartz";break;}
|
|
case 6:{sComponent2="GEM_EX_LAPISLAZULI";sComponent2Name="Expertly Cut Lapis Lazuli";break;}
|
|
case 7:{sComponent2="GEM_EX_MALACHITE";sComponent2Name="Expertly Cut Malachite";break;}
|
|
case 8:{sComponent2="GEM_EX_MOSSAGATE";sComponent2Name="Expertly Cut Moss Agate";break;}
|
|
case 9:{sComponent2="GEM_EX_OBSIDIAN";sComponent2Name="Expertly Cut Obsidian";break;}
|
|
case 10:{sComponent2="GEM_EX_RHODOCHROSITE";sComponent2Name="Expertly Cut Rhodochrosite";break;}
|
|
case 11:{sComponent2="GEM_EX_TIGEREYE";sComponent2Name="Expertly Cut Tiger Eye";break;}
|
|
case 12:{sComponent2="GEM_EX_TURQUOISE";sComponent2Name="Expertly Cut Turquoise";break;}
|
|
case 13:{sComponent2="GEM_EX_BLOODSTONE";sComponent2Name="Expertly Cut Bloodtsone";break;}
|
|
case 14:{sComponent2="GEM_EX_ONYX";sComponent2Name="Expertly Cut Onyx";break;}
|
|
case 15:{sComponent2="GEM_EX_ZIRCON";sComponent2Name="Expertly Cut Zircon";break;}
|
|
case 16:{sComponent2="GEM_EX_ROCKCRYSTAL";sComponent2Name="Expertly Cut Rock Crystal";break;}
|
|
case 17:{sComponent2="GEM_EX_SARDONYX";sComponent2Name="Expertly Cut Sardonyx";break;}
|
|
case 18:{sComponent2="GEM_EX_SMOKYQUARTZ";sComponent2Name="Expertly Cut Smoky Quartz";break;}
|
|
case 20:{sComponent2="GEM_EX_STARROSEQUARTZ";sComponent2Name="Expertly Cut Star Rose Quartz";break;}
|
|
case 19:{sComponent2="GEM_EX_CARNELIAN";sComponent2Name="Expertly Cut Carnelian";break;}
|
|
case 21:{sComponent2="GEM_EX_CHALCENDONY";sComponent2Name="Expertly Cut Chalcendony";break;}
|
|
case 22:{sComponent2="GEM_EX_CHRYSOPRASE";sComponent2Name="Expertly Cut Chrysoprase";break;}
|
|
case 23:{sComponent2="GEM_EX_CITRINE";sComponent2Name="Expertly Cut Citrine";break;}
|
|
case 24:{sComponent2="GEM_EX_JASPER";sComponent2Name="Expertly Cut Jasper";break;}
|
|
case 25:{sComponent2="GEM_EX_MOONSTONE";sComponent2Name="Expertly Cut Moonstone";break;}
|
|
case 26:{sComponent2="GEM_EX_ALEXANDRITE";sComponent2Name="Expertly Cut Alexandrite";break;}
|
|
case 27:{sComponent2="GEM_EX_AMBER";sComponent2Name="Expertly Cut Amber";break;}
|
|
case 28:{sComponent2="GEM_EX_AMETHYST";sComponent2Name="Expertly Cut Amethyst";break;}
|
|
case 29:{sComponent2="GEM_EX_TOURMALINE";sComponent2Name="Expertly Cut Tourmaline";break;}
|
|
case 30:{sComponent2="GEM_EX_WHITEPEARL";sComponent2Name="Expertly Cut White Pearl";break;}
|
|
case 31:{sComponent2="GEM_EX_REDSPINEL";sComponent2Name="Expertly Cut Red Spinel";break;}
|
|
case 32:{sComponent2="GEM_EX_CORAL";sComponent2Name="Expertly Cut Coral";break;}
|
|
case 33:{sComponent2="GEM_EX_REDGARNET";sComponent2Name="Expertly Cut Red Garnet";break;}
|
|
case 34:{sComponent2="GEM_EX_CHRYSOBERYL";sComponent2Name="Expertly Cut Chrysoberyl";break;}
|
|
case 35:{sComponent2="GEM_EX_JADE";sComponent2Name="Expertly Cut Jade";break;}
|
|
case 36:{sComponent2="GEM_EX_JET";sComponent2Name="Expertly Cut Jet";break;}
|
|
case 37:{sComponent2="GEM_EX_TOPAZ";sComponent2Name="Expertly Cut Topaz";break;}
|
|
case 38:{sComponent2="GEM_EX_PERIDOT";sComponent2Name="Expertly Cut Peridot";break;}
|
|
case 39:{sComponent2="GEM_EX_VIOLETGARNET";sComponent2Name="Expertly Cut Viloet Garnet";break;}
|
|
case 40:{sComponent2="GEM_EX_BLUESPINEL";sComponent2Name="Expertly Cut Blue Spinel";break;}
|
|
case 41:{sComponent2="GEM_EX_AQUAMARINE";sComponent2Name="Expertly Cut Aquamarine";break;}
|
|
case 42:{sComponent2="GEM_EX_BLACKPEARL";sComponent2Name="Expertly Cut Black Pearl";break;}
|
|
case 43:{sComponent2="GEM_EX_BLACKOPAL";sComponent2Name="Expertly Cut Black Opal";break;}
|
|
case 44:{sComponent2="GEM_EX_EMERALD";sComponent2Name="Expertly Cut Emerald";break;}
|
|
case 45:{sComponent2="GEM_EX_FIREOPAL";sComponent2Name="Expertly Cut Fire Opal";break;}
|
|
case 46:{sComponent2="GEM_EX_OPAL";sComponent2Name="Expertly Cut Opal";break;}
|
|
case 47:{sComponent2="GEM_EX_ORIENTALAMETHYST";sComponent2Name="Expertly Cut Oriental Amethyst";break;}
|
|
case 48:{sComponent2="GEM_EX_ORIENTALTOPAZ";sComponent2Name="Expertly Cut Oriental Topaz";break;}
|
|
case 49:{sComponent2="GEM_EX_STARRUBY";sComponent2Name="Expertly Cut Star Ruby";break;}
|
|
case 50:{sComponent2="GEM_EX_STARSAPPHIRE";sComponent2Name="Expertly Cut Star Sapphire";break;}
|
|
case 51:{sComponent2="GEM_EX_SAPPHIRE";sComponent2Name="Expertly Cut Sapphire";break;}
|
|
case 52:{sComponent2="GEM_EX_BLACKSAPPHIRE";sComponent2Name="Expertly Cut Black Sapphire";break;}
|
|
case 53:{sComponent2="GEM_EX_RUBY";sComponent2Name="Expertly Cut Ruby";break;}
|
|
case 54:{sComponent2="GEM_EX_ORIENTALEMERALD";sComponent2Name="Expertly Cut Oriental Emerald";break;}
|
|
case 55:{sComponent2="GEM_EX_JACINTH";sComponent2Name="Expertly Cut Jacinth";break;}
|
|
case 56:{sComponent2="GEM_EX_DIAMOND";sComponent2Name="Expertly Cut Diamond";break;}
|
|
default:
|
|
}
|
|
|
|
//Adjust skill chance for item + component difficulties
|
|
iJewelChance = iJewelChance - iIngotMod;
|
|
iJewelChance = iJewelChance - iJewelMod;
|
|
iJewelChance = iJewelChance - iDifficulty;
|
|
|
|
// check for components
|
|
if (GetNumItems(oPC,sComponent1) < iComponent1)
|
|
{
|
|
FloatingTextStringOnCreature("You do not have enough "+sComponent1Name+" to do this.",oPC,FALSE);
|
|
return;
|
|
}
|
|
if (iComponent2 > 0)
|
|
{
|
|
if (GetNumItems(oPC,sComponent2) < iComponent2)
|
|
{
|
|
FloatingTextStringOnCreature("You do not have enough "+sComponent2Name+" to do this.",oPC,FALSE);
|
|
return;
|
|
}
|
|
}
|
|
if (iComponent3 > 0)
|
|
{
|
|
if (GetNumItems(oPC,sComponent3) < iComponent3)
|
|
{
|
|
FloatingTextStringOnCreature("You do not have enough "+sComponent3Name+" to do this.",oPC,FALSE);
|
|
return;
|
|
}
|
|
}
|
|
|
|
//Assign Animations and sounds
|
|
AssignCommand(oPC,ActionPlayAnimation(ANIMATION_LOOPING_GET_MID,1.0,12.0));
|
|
PlaySound("as_na_steamshrt2");
|
|
AssignCommand(oPC,PlaySound("as_na_branchsnp2"));
|
|
DelayCommand(0.5,PlaySound("as_cv_chiseling3"));
|
|
DelayCommand(7.0,PlaySound("as_cv_branchsnp2"));
|
|
DelayCommand(8.2,PlaySound("as_cv_barglass1"));
|
|
DelayCommand(8.9,PlaySound("as_cv_barglass1"));
|
|
DelayCommand(9.5,PlaySound("as_cv_barglass1"));
|
|
DelayCommand(10.0,PlaySound("as_cv_barglass1"));
|
|
DelayCommand(10.5,PlaySound("as_cv_barglass1"));
|
|
DelayCommand(11.0,PlaySound("as_cv_barglass1"));
|
|
DelayCommand(11.5,PlaySound("as_cv_barglass1"));
|
|
|
|
// This snippet of code is cut-n-paste direct from ATS
|
|
// Reason for this is because I had no clue how to assign an increase
|
|
// in the z-axis of the location of the anvil for sparks to display.
|
|
// After reading through this code, it is obvious that vEffecrPos.z
|
|
// is the line which assigns this. Due to my own ignorance in this issue
|
|
// I have decided to leave this snippet of code intact with this credit to
|
|
// the original ATS script coders, whomever they may have been.
|
|
|
|
location locAnvil = GetLocation(OBJECT_SELF);
|
|
vector vEffectPos = GetPositionFromLocation(locAnvil);
|
|
vEffectPos.z += 1.0;
|
|
location locEffect = Location( GetAreaFromLocation(locAnvil), vEffectPos,GetFacingFromLocation(locAnvil) );
|
|
ApplyEffectAtLocation (DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_SPARKS_PARRY), locEffect);
|
|
DelayCommand(1.7, ApplyEffectAtLocation (DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_SPARKS_PARRY), locEffect));
|
|
DelayCommand(2.4, ApplyEffectAtLocation (DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_SPARKS_PARRY), locEffect));
|
|
DelayCommand(3.1, ApplyEffectAtLocation (DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_SPARKS_PARRY), locEffect));
|
|
DelayCommand(3.8, ApplyEffectAtLocation (DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_COM_SPARKS_PARRY), locEffect));
|
|
|
|
// end of ATS snippet ^^^^
|
|
//
|
|
|
|
|
|
DelayCommand(4.6,ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_SPECIAL_WHITE_ORANGE,FALSE),locEffect));
|
|
DelayCommand(5.9,ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_SPARKS_PARRY,FALSE),locEffect));
|
|
|
|
if (iJewelType==0)
|
|
{
|
|
DelayCommand(7.1,ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_SPECIAL_WHITE_BLUE,FALSE),locEffect));
|
|
DelayCommand(8.2,ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_SPECIAL_WHITE_BLUE,FALSE),locEffect));
|
|
DelayCommand(9.6,ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_SPECIAL_WHITE_BLUE,FALSE),locEffect));
|
|
DelayCommand(11.6,ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_ACID,FALSE),locEffect));
|
|
}
|
|
else
|
|
{
|
|
DelayCommand(7.1,ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_SPECIAL_RED_ORANGE,FALSE),locEffect));
|
|
DelayCommand(8.2,ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_SPARKS_PARRY,FALSE),locEffect));
|
|
DelayCommand(9.6,ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_SPARKS_PARRY,FALSE),locEffect));
|
|
DelayCommand(11.6,ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_ELECTRICAL,FALSE),locEffect));
|
|
}
|
|
|
|
|
|
// 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)));
|
|
}
|
|
}
|
|
}
|
|
|
|
if (Random(800)<=iJewelChance)
|
|
{
|
|
iSuccess = 1;
|
|
iSuccess2 = 1;
|
|
if (iJewelType==0) //Only for crafting blank rings/etc
|
|
{
|
|
iJewelChance = iJewelChance - 50;
|
|
if (Random(1000) <= iJewelChance) iSuccess2 = iSuccess2+1;
|
|
iJewelChance = iJewelChance-100;
|
|
if (Random(1000) <= iJewelChance) iSuccess2 = iSuccess2+1;
|
|
iJewelChance = iJewelChance + 150;
|
|
}
|
|
else
|
|
{
|
|
iSuccess2 = 2; //Corrected for making gem-laden items.. to use the correct sResRef variable.
|
|
}
|
|
if (iSuccess2 == 1)AssignCommand(oPC,DelayCommand(12.0,CreateAnObject(sItemResRefPoor,oPC,1)));
|
|
if (iSuccess2 == 2)AssignCommand(oPC,DelayCommand(12.0,CreateAnObject(sItemResRef,oPC,1)));
|
|
if (iSuccess2 == 3)AssignCommand(oPC,DelayCommand(12.0,CreateAnObject(sItemResRefExceptional,oPC,1)));
|
|
AssignCommand(oPC,DelayCommand(12.0,FloatingTextStringOnCreature(sSuccess,oPC,FALSE)));
|
|
if (Random(1000) >= iJewelSkill)
|
|
{
|
|
if (d10(1)+1 >= iJewelChance/100) iSkillGain = 1;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (iJewelType==0)
|
|
{
|
|
DelayCommand(11.8,PlaySound("as_cv_claybreak1"));
|
|
}
|
|
else
|
|
{
|
|
DelayCommand(11.8,PlaySound("as_cv_glasbreak1"));
|
|
}
|
|
AssignCommand(oPC,DelayCommand(12.0,FloatingTextStringOnCreature(sFail,oPC,FALSE)));
|
|
}
|
|
//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);
|
|
DelayCommand(10.0,SetLocalInt(oPC,"iSkillGain",0));
|
|
}
|
|
}
|
|
|
|
// Do skill gains
|
|
if (iSkillGain ==1)
|
|
{
|
|
string sOldSkill = "";
|
|
string sOldSkill2 = "";
|
|
iJewelSkill++;
|
|
sOldSkill2 = IntToString(iJewelSkill);
|
|
sOldSkill = "."+GetStringRight(sOldSkill2,1);
|
|
if (iJewelSkill > 9)
|
|
{
|
|
sOldSkill = GetStringLeft(sOldSkill2,GetStringLength(sOldSkill2)-1)+sOldSkill;
|
|
}
|
|
else
|
|
{
|
|
sOldSkill = "0"+sOldSkill;
|
|
}
|
|
if (iJewelSkill <= 1000)
|
|
{
|
|
//DelayCommand(13.0,SetTokenPair(oPC,12,4,iJewelSkill));
|
|
DelayCommand(13.0,SetCampaignInt("UOACraft","iJewelSkill",iJewelSkill,oPC));
|
|
DelayCommand(13.0,SendMessageToPC(oPC,"===================================="));
|
|
DelayCommand(13.0,SendMessageToPC(oPC,"Your skill in jewelcraft has gone up!"));
|
|
DelayCommand(13.0,SendMessageToPC(oPC,"Current jewelcraft skill : "+ sOldSkill+"%"));
|
|
DelayCommand(13.0,SendMessageToPC(oPC,"===================================="));
|
|
if (GetLocalInt(GetModule(),"_UOACraft_XP")!=0) DelayCommand(12.9,GiveXPToCreature(oPC,GetLocalInt(GetModule(),"_UOACraft_XP")));
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void CreateAnObject(string sResource, object oPC, int iStackSize)
|
|
{
|
|
CreateItemOnObject(sResource,oPC,iStackSize);
|
|
return;
|
|
}
|
|
|
|
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 GetNextItemPossessedBy(object oPC, string sItemTag)
|
|
{
|
|
object oTemp = GetItemPossessedBy(oPC,sItemTag);
|
|
DestroyObject(oTemp);
|
|
return;
|
|
}
|
|
|
|
|
|
string CraftLookup(string sResRef, int iIngotType, int iJewelType)
|
|
{
|
|
if (iJewelType==0) //Blank Jewelry
|
|
{
|
|
switch (iIngotType)
|
|
{
|
|
case 0:
|
|
{
|
|
if (sResRef=="Ring-Normal") return "ring_iron_001";
|
|
if (sResRef=="Ring-Poor") return "ring_iron_002";
|
|
if (sResRef=="Ring-Exceptional") return "ring_iron_003";
|
|
if (sResRef=="Amulet-Normal") return "ammy_iron_001";
|
|
if (sResRef=="Amulet-Poor") return "ammy_iron_002";
|
|
if (sResRef=="Amulet-Exceptional") return "ammy_iron_003";
|
|
if (sResRef=="Necklace-Normal") return "neck_iron_001";
|
|
if (sResRef=="Necklace-Poor") return "neck_iron_002";
|
|
if (sResRef=="Necklace-Exceptional") return "neck_iron_003";
|
|
break;
|
|
}
|
|
case 1:
|
|
{
|
|
if (sResRef=="Ring-Normal") return "ring_dull_001";
|
|
if (sResRef=="Ring-Poor") return "ring_dull_002";
|
|
if (sResRef=="Ring-Exceptional") return "ring_dull_003";
|
|
if (sResRef=="Amulet-Normal") return "ammy_dull_001";
|
|
if (sResRef=="Amulet-Poor") return "ammy_dull_002";
|
|
if (sResRef=="Amulet-Exceptional") return "ammy_dull_003";
|
|
if (sResRef=="Necklace-Normal") return "neck_dull_001";
|
|
if (sResRef=="Necklace-Poor") return "neck_dull_002";
|
|
if (sResRef=="Necklace-Exceptional") return "neck_dull_003";
|
|
break;
|
|
}
|
|
case 2:
|
|
{
|
|
if (sResRef=="Ring-Normal") return "ring_shadow_001";
|
|
if (sResRef=="Ring-Poor") return "ring_shadow_002";
|
|
if (sResRef=="Ring-Exceptional") return "ring_shadow_003";
|
|
if (sResRef=="Amulet-Normal") return "ammy_shadow_001";
|
|
if (sResRef=="Amulet-Poor") return "ammy_shadow_002";
|
|
if (sResRef=="Amulet-Exceptional") return "ammy_shadow_003";
|
|
if (sResRef=="Necklace-Normal") return "neck_shadow_001";
|
|
if (sResRef=="Necklace-Poor") return "neck_shadow_002";
|
|
if (sResRef=="Necklace-Exceptional") return "neck_shadow_003";
|
|
break;
|
|
}
|
|
case 3:
|
|
{
|
|
if (sResRef=="Ring-Normal") return "ring_copper_001";
|
|
if (sResRef=="Ring-Poor") return "ring_copper_002";
|
|
if (sResRef=="Ring-Exceptional") return "ring_copper_003";
|
|
if (sResRef=="Amulet-Normal") return "ammy_copper_001";
|
|
if (sResRef=="Amulet-Poor") return "ammy_copper_002";
|
|
if (sResRef=="Amulet-Exceptional") return "ammy_copper_003";
|
|
if (sResRef=="Necklace-Normal") return "neck_copper_001";
|
|
if (sResRef=="Necklace-Poor") return "neck_copper_002";
|
|
if (sResRef=="Necklace-Exceptional") return "neck_copper_003";
|
|
break;
|
|
}
|
|
case 4:
|
|
{
|
|
if (sResRef=="Ring-Normal") return "ring_bronze_001";
|
|
if (sResRef=="Ring-Poor") return "ring_bronze_002";
|
|
if (sResRef=="Ring-Exceptional") return "ring_bronze_003";
|
|
if (sResRef=="Amulet-Normal") return "ammy_bronze_001";
|
|
if (sResRef=="Amulet-Poor") return "ammy_bronze_002";
|
|
if (sResRef=="Amulet-Exceptional") return "ammy_bronze_003";
|
|
if (sResRef=="Necklace-Normal") return "neck_bronze_001";
|
|
if (sResRef=="Necklace-Poor") return "neck_bronze_002";
|
|
if (sResRef=="Necklace-Exceptional") return "neck_bronze_003";
|
|
break;
|
|
}
|
|
case 5:
|
|
{
|
|
if (sResRef=="Ring-Normal") return "ring_gold_001";
|
|
if (sResRef=="Ring-Poor") return "ring_gold_002";
|
|
if (sResRef=="Ring-Exceptional") return "ring_gold_003";
|
|
if (sResRef=="Amulet-Normal") return "ammy_gold_001";
|
|
if (sResRef=="Amulet-Poor") return "ammy_gold_002";
|
|
if (sResRef=="Amulet-Exceptional") return "ammy_gold_003";
|
|
if (sResRef=="Necklace-Normal") return "neck_gold_001";
|
|
if (sResRef=="Necklace-Poor") return "neck_gold_002";
|
|
if (sResRef=="Necklace-Exceptional") return "neck_gold_003";
|
|
break;
|
|
}
|
|
case 6:
|
|
{
|
|
if (sResRef=="Ring-Normal") return "ring_agapite_001";
|
|
if (sResRef=="Ring-Poor") return "ring_agapite_002";
|
|
if (sResRef=="Ring-Exceptional") return "ring_agapite_003";
|
|
if (sResRef=="Amulet-Normal") return "ammy_agapite_001";
|
|
if (sResRef=="Amulet-Poor") return "ammy_agapite_002";
|
|
if (sResRef=="Amulet-Exceptional") return "ammy_agapite_003";
|
|
if (sResRef=="Necklace-Normal") return "neck_agapite_001";
|
|
if (sResRef=="Necklace-Poor") return "neck_agapite_002";
|
|
if (sResRef=="Necklace-Exceptional") return "neck_agapite_003";
|
|
break;
|
|
}
|
|
case 7:
|
|
{
|
|
if (sResRef=="Ring-Normal") return "ring_verite_001";
|
|
if (sResRef=="Ring-Poor") return "ring_verite_002";
|
|
if (sResRef=="Ring-Exceptional") return "ring_verite_003";
|
|
if (sResRef=="Amulet-Normal") return "ammy_verite_001";
|
|
if (sResRef=="Amulet-Poor") return "ammy_verite_002";
|
|
if (sResRef=="Amulet-Exceptional") return "ammy_verite_003";
|
|
if (sResRef=="Necklace-Normal") return "neck_verite_001";
|
|
if (sResRef=="Necklace-Poor") return "neck_verite_002";
|
|
if (sResRef=="Necklace-Exceptional") return "neck_verite_003";
|
|
break;
|
|
}
|
|
case 8:
|
|
{
|
|
if (sResRef=="Ring-Normal") return "ring_val_001";
|
|
if (sResRef=="Ring-Poor") return "ring_val_002";
|
|
if (sResRef=="Ring-Exceptional") return "ring_val_003";
|
|
if (sResRef=="Amulet-Normal") return "ammy_val_001";
|
|
if (sResRef=="Amulet-Poor") return "ammy_val_002";
|
|
if (sResRef=="Amulet-Exceptional") return "ammy_val_003";
|
|
if (sResRef=="Necklace-Normal") return "neck_val_001";
|
|
if (sResRef=="Necklace-Poor") return "neck_val_002";
|
|
if (sResRef=="Necklace-Exceptional") return "neck_val_003";
|
|
break;
|
|
}
|
|
case 9:
|
|
{
|
|
if (sResRef=="Ring-Normal") return "ring_silver_001";
|
|
if (sResRef=="Ring-Poor") return "ring_silver_002";
|
|
if (sResRef=="Ring-Exceptional") return "ring_silver_003";
|
|
if (sResRef=="Amulet-Normal") return "ammy_silver_001";
|
|
if (sResRef=="Amulet-Poor") return "ammy_silver_002";
|
|
if (sResRef=="Amulet-Exceptional") return "ammy_silver_003";
|
|
if (sResRef=="Necklace-Normal") return "neck_silver_001";
|
|
if (sResRef=="Necklace-Poor") return "neck_silver_002";
|
|
if (sResRef=="Necklace-Exceptional") return "neck_silver_003";
|
|
break;
|
|
}
|
|
case 10:
|
|
{
|
|
if (sResRef=="Ring-Normal") return "ring_mithril_001";
|
|
if (sResRef=="Ring-Poor") return "ring_mithril_002";
|
|
if (sResRef=="Ring-Exceptional") return "ring_mithril_003";
|
|
if (sResRef=="Amulet-Normal") return "ammy_mithril_001";
|
|
if (sResRef=="Amulet-Poor") return "ammy_mithril_002";
|
|
if (sResRef=="Amulet-Exceptional") return "ammy_mithril_003";
|
|
if (sResRef=="Necklace-Normal") return "neck_mithril_001";
|
|
if (sResRef=="Necklace-Poor") return "neck_mithril_002";
|
|
if (sResRef=="Necklace-Exceptional") return "neck_mithril_003";
|
|
break;
|
|
}
|
|
case 11:
|
|
{
|
|
if (sResRef=="Ring-Normal") return "ring_admnt_001";
|
|
if (sResRef=="Ring-Poor") return "ring_admnt_002";
|
|
if (sResRef=="Ring-Exceptional") return "ring_admnt_003";
|
|
if (sResRef=="Amulet-Normal") return "ammy_admnt_001";
|
|
if (sResRef=="Amulet-Poor") return "ammy_admnt_002";
|
|
if (sResRef=="Amulet-Exceptional") return "ammy_admnt_003";
|
|
if (sResRef=="Necklace-Normal") return "neck_admnt_001";
|
|
if (sResRef=="Necklace-Poor") return "neck_admnt_002";
|
|
if (sResRef=="Necklace-Exceptional") return "neck_admnt_003";
|
|
break;
|
|
}
|
|
case 12:
|
|
{
|
|
if (sResRef=="Ring-Normal") return "ring_platnum_001";
|
|
if (sResRef=="Ring-Poor") return "ring_platnum_002";
|
|
if (sResRef=="Ring-Exceptional") return "ring_platnum_003";
|
|
if (sResRef=="Amulet-Normal") return "ammy_platnum_001";
|
|
if (sResRef=="Amulet-Poor") return "ammy_platnum_002";
|
|
if (sResRef=="Amulet-Exceptional") return "ammy_platnum_003";
|
|
if (sResRef=="Necklace-Normal") return "neck_platnum_001";
|
|
if (sResRef=="Necklace-Poor") return "neck_platnum_002";
|
|
if (sResRef=="Necklace-Exceptional") return "neck_platnum_003";
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
return "ring_iron_001";
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (iJewelType>0) //Gem-Added to Jewelry
|
|
{
|
|
//SendMessageToPC(GetFirstPC(),"---------JEWELRY INFORMATION-----------");
|
|
string sTempNum = IntToString(100+iJewelType);
|
|
string sTempRet;
|
|
string sTempRet2;
|
|
string sTempRet3;
|
|
|
|
if (GetStringLeft(sResRef,4)=="Ring") sTempRet2="ring_";
|
|
if (GetStringLeft(sResRef,6)=="Amulet") sTempRet2="ammy_";
|
|
if (GetStringLeft(sResRef,8)=="Necklace") sTempRet2="neck_";
|
|
|
|
switch (iIngotType)
|
|
{
|
|
case 1:{sTempRet = "dull_";break;}
|
|
case 2:{sTempRet = "shadow_";break;}
|
|
case 3:{sTempRet = "copper_";break;}
|
|
case 4:{sTempRet = "bronze_";break;}
|
|
case 5:{sTempRet = "gold_";break;}
|
|
case 6:{sTempRet = "agapite_";break;}
|
|
case 7:{sTempRet = "verite_";break;}
|
|
case 8:{sTempRet = "val_";break;}
|
|
case 9:{sTempRet = "silver_";break;}
|
|
case 10:{sTempRet = "mithril_";break;}
|
|
case 11:{sTempRet = "admnt_";break;}
|
|
case 12:{sTempRet = "platnum_";break;}
|
|
default:{sTempRet = "iron_";break;}
|
|
}
|
|
sTempRet3=sTempRet2+sTempRet+sTempNum;
|
|
//SendMessageToPC(GetFirstPC(),sTempRet3+" -- "+sResRef);
|
|
return sTempRet3;
|
|
}
|
|
|
|
return "ring_iron_002"; //An error has occurred.. return least valueable ring
|
|
}
|