#include "_persist_01a"

void main()
{
  object oPC = GetLastOpenedBy();
  int iSmithSkill = GetTokenPair(oPC,13,4); // Weaponsmith
  int iSmithChance = iSmithSkill;
  int iArmorSkill = GetTokenPair(oPC,13,5); // ArmorCraft
  int iArmorChance = iArmorSkill;
  int iIngotType = GetLocalInt(oPC,"iUseIngotType");
  int iIngotMod = iIngotType*25;

  if (iSmithChance < 350)
   {
    iSmithChance = GetAbilityScore(oPC,ABILITY_STRENGTH)*5;
    iSmithChance = iSmithChance+(GetAbilityScore(oPC,ABILITY_DEXTERITY)*3);
    iSmithChance = iSmithChance+(GetAbilityScore(oPC,ABILITY_INTELLIGENCE)*2);
    iSmithChance = iSmithChance*3;
    if (iSmithChance>350)iSmithChance=350;
    if (iSmithSkill > iSmithChance) iSmithChance=iSmithSkill;
   }
 if (iArmorChance < 350)
   {
    iArmorChance = GetAbilityScore(oPC,ABILITY_STRENGTH)*5;
    iArmorChance = iArmorChance+(GetAbilityScore(oPC,ABILITY_DEXTERITY)*3);
    iArmorChance = iArmorChance+(GetAbilityScore(oPC,ABILITY_INTELLIGENCE)*2);
    iArmorChance = iArmorChance*3;
    if (iArmorChance>350)iArmorChance=350;
    if (iArmorSkill > iArmorChance) iArmorChance=iArmorSkill;
   }


 // Create Ingot Type FlagSwitches
 if (iIngotType != 0)CreateItemOnObject("flagswitch010",OBJECT_SELF,1);
 if (iIngotType != 1)CreateItemOnObject("flagswitch011",OBJECT_SELF,1);
 if (iIngotType != 2)CreateItemOnObject("flagswitch012",OBJECT_SELF,1);
 if (iIngotType != 3)CreateItemOnObject("flagswitch013",OBJECT_SELF,1);
 if (iIngotType != 4)CreateItemOnObject("flagswitch014",OBJECT_SELF,1);
 if (iIngotType != 5)CreateItemOnObject("flagswitch015",OBJECT_SELF,1);
 if (iIngotType != 6)CreateItemOnObject("flagswitch016",OBJECT_SELF,1);
 if (iIngotType != 7)CreateItemOnObject("flagswitch017",OBJECT_SELF,1);
 if (iIngotType != 8)CreateItemOnObject("flagswitch018",OBJECT_SELF,1);
 if (iIngotType != 9)CreateItemOnObject("flagswitch019",OBJECT_SELF,1);
 if (iIngotType != 10)CreateItemOnObject("flagswitch020",OBJECT_SELF,1);
 if (iIngotType != 11)CreateItemOnObject("flagswitch021",OBJECT_SELF,1);
 if (iIngotType != 12)CreateItemOnObject("flagswitch022",OBJECT_SELF,1);
 SendMessageToPC(oPC,"iIngotType : "+IntToString(iIngotType));

 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

 // Modify the skill based on current ingot selection
 if (iIngotMod >0) iIngotMod = iIngotMod + 250;
 iSmithChance = iSmithChance - iIngotMod;
 iArmorChance = iArmorChance - iIngotMod;

   // Create tokens for items
   if (iSmithChance>0){CreateItemOnObject("pattern022",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Metal Studs"); }       /// Metal Studs (For studded leather)
   if (iSmithChance>0){ CreateItemOnObject("pattern069",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Sling Bullets"); }      /// Normal Sling Bullets
   if (iSmithChance>50){ CreateItemOnObject("pattern042",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Throwing Darts"); }     /// Normal Throwing Darts
   if (iSmithChance>50){ CreateItemOnObject("pattern021",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Shuriken"); }     /// Normal Shuriken
   if (iSmithChance>50){ CreateItemOnObject("pattern070",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Arrowheads"); }     /// Normal Arrowheads
   if (iSmithChance>50){ CreateItemOnObject("pattern062",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Bolt Tips"); }     /// Normal Bolt Tips
   if (iSmithChance>50){ CreateItemOnObject("pattern045",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Kama"); }     /// Normal Kama
   if (iSmithChance>100){ CreateItemOnObject("pattern032",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Dagger"); }    /// Normal Dagger
   if (iSmithChance>100){ CreateItemOnObject("pattern064",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Kukri");}     /// Normal Kukri
   if (iArmorChance>100){ CreateItemOnObject("pattern111",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Ringmail Armor"); }    /// Normal Ringmail Armor
   if (iSmithChance>150){ CreateItemOnObject("pattern027",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Shortsword"); }    /// Normal Shortsword
   if (iSmithChance>150){ CreateItemOnObject("pattern049",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Handaxe"); }    /// Normal Handaxe
   if (iSmithChance>150){ CreateItemOnObject("pattern039",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Throwing Axes"); }    /// Normal Throwing Axes
   if (iSmithChance>150){ CreateItemOnObject("pattern028",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Sickle"); }    /// Normal Sickle
   if (iArmorChance>150){ CreateItemOnObject("pattern201",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Horsehair Helmet"); }    /// Normal Horsehair Helmet
   if (iArmorChance>150){ CreateItemOnObject("pattern200",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Pot Helmet"); }    /// Normal Pot Helmet
   if (iArmorChance>150){ CreateItemOnObject("pattern202",OBJECT_SELF,1); SendMessageToPC(oPC,"Created Pattern Spike Helmet"); }   /// Normal Spike Helmet
   if (iArmorChance>150){ CreateItemOnObject("pattern203",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Stag Helmet"); }    /// Normal Stag Helmet
   if (iArmorChance>150){ CreateItemOnObject("pattern204",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Winged Helmet"); }    /// Normal Winged Helmet
   if (iSmithChance>200){ CreateItemOnObject("pattern031",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Mace");  }   /// Normal Mace
   if (iArmorChance >=250){ CreateItemOnObject("pattern029",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Small Shield"); }  /// Normal Small Shield
   if (iArmorChance >=250){ CreateItemOnObject("pattern110",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Chainmail Shirt"); }  /// Normal Chainmail Shirt
   if (iSmithChance >=250){ CreateItemOnObject("pattern046",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Longsword"); }  /// Normal Longsword
   if (iSmithChance >=250){ CreateItemOnObject("pattern040",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Light Flail"); }  /// Normal Light Flail
   if (iSmithChance >=250){ CreateItemOnObject("pattern044",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Light Hammer"); }  /// Normal Light Hammer
   if (iSmithChance >=250){ CreateItemOnObject("pattern024",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Rapier"); }  /// Normal Rapier
   if (iArmorChance >=300){ CreateItemOnObject("pattern108",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern scale mail armor"); }  /// Normal scale mail armor
   if (iSmithChance >=300){ CreateItemOnObject("pattern023",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Morning Star"); }  /// Normal Morning Star
   if (iSmithChance >=300){ CreateItemOnObject("pattern060",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Battleaxe"); }  /// Normal Battleaxe
   if (iSmithChance >=300){ CreateItemOnObject("pattern030",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Spear"); }  /// Normal Spear
   if (iSmithChance >=300){ CreateItemOnObject("pattern025",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Scimitar"); }  /// Normal Scimitar
   if (iArmorChance >=350){ CreateItemOnObject("pattern107",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Chainmail Armor"); }  /// Normal Chainmail Armor
   if (iArmorChance >=350){ CreateItemOnObject("pattern106",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Breastplate"); }  /// Normal Breastplate
   if (iSmithChance >=350){ CreateItemOnObject("pattern063",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Bastard Sword"); }  /// Normal Bastard Sword
   if (iSmithChance >=350){ CreateItemOnObject("pattern057",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Large Shield"); }  /// Normal Large Shield
   if (iSmithChance >=350){ CreateItemOnObject("pattern048",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Heavy Flail"); }  /// Normal Heavy Flail
   if (iSmithChance >=350){ CreateItemOnObject("pattern050",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Warhammer"); }  /// Normal Warhammer
   if (iSmithChance >=350){ CreateItemOnObject("pattern056",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Katana"); }  /// Normal Katana
   if (iArmorChance >=400){ CreateItemOnObject("pattern100",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Banded Mail Armor"); }  /// Normal Banded Mail Armor
   if (iArmorChance >=400){ CreateItemOnObject("pattern105",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Splint Mail Armor"); }  /// Normal Splint Mail Armor
   if (iSmithChance >=400){ CreateItemOnObject("pattern053",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Greatsword"); }  /// Normal Greatsword
   if (iSmithChance >=400){ CreateItemOnObject("pattern020",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Halberd"); }  /// Normal Halberd
   if (iSmithChance >=400){ CreateItemOnObject("pattern026",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Scythe"); }  /// Normal Scythe
   if (iArmorChance >=450){ CreateItemOnObject("pattern102",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Half Plate Armor"); }  /// Normal Half Plate Armor
   if (iArmorChance >=450){ CreateItemOnObject("pattern043",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Tower Shield"); }  /// Normal Tower Shield
   if (iArmorChance >=450){ CreateItemOnObject("pattern033",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Dire Mace"); }  /// Normal Dire Mace
   if (iArmorChance >=450){ CreateItemOnObject("pattern059",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Double Axe"); }  /// Normal Double Axe
   if (iArmorChance >=500){ CreateItemOnObject("pattern101",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Full Plate Armor"); }  /// Normal Full Plate Armor
   if (iArmorChance >=500){ CreateItemOnObject("pattern041",OBJECT_SELF,1);SendMessageToPC(oPC,"Created Pattern Two-Bladed Sword");}   /// Normal Two-Bladed Sword


 // Search for and destroy any hidden 'body bags' from prior incarnations of this placeable
 object oSearchForBag = GetNearestObjectByTag("Body Bag",OBJECT_SELF,1);
 if (oSearchForBag == OBJECT_INVALID)return;
 object oBagItem = OBJECT_INVALID;
 if (GetDistanceToObject(oSearchForBag)<= 0.2)
  {
   //SendMessageToPC(GetFirstPC(),"Body bag found.. destroying contents..");
   oBagItem = GetFirstItemInInventory(oSearchForBag);
   while (oBagItem != OBJECT_INVALID)
    {
     //SendMessageToPC(GetFirstPC(),"Destroying : "+GetName(oBagItem));
     DestroyObject(oBagItem);
     oBagItem = GetNextItemInInventory(oSearchForBag);
    }
   DestroyObject(oSearchForBag,1.0);
  }

}