Looks like near the top of the script:
int iMineChance = GetCampaignInt(“UOACraft”,“iMiningSkill”,oPC);
Entire Script I’m Looking at:
//#include "_persist_01a"
void main()
{
object oPC = GetLastAttacker(OBJECT_SELF);
if (oPC==OBJECT_INVALID) oPC = GetLastDamager();
if (oPC==OBJECT_INVALID) return;
object oWeapon = OBJECT_INVALID;
string sMyTag = GetTag(OBJECT_SELF);
string sItemResRef = "";
string sOreType = "";
int iRandom = Random(1000);
int iSkillGain = 0;
string sOldSkill = "";
string sOldSkill2 = "";
int iTemp = 0;
int iSuccess = 0;
oWeapon = GetItemInSlot(INVENTORY_SLOT_LEFTHAND,oPC);
if (GetTag(oWeapon)!= "MINERS_PICK")
{
oWeapon = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oPC);
if (GetTag(oWeapon)!= "MINERS_PICK")
{
FloatingTextStringOnCreature("You must have a pickaxe or a miner's pick equipped in order to mine!",oPC);
return;
}
}
int iTotalPickUsed = GetLocalInt(oWeapon,"iPickUsed");
//int iMineChance = GetTokenPair(oPC,14,1);
int iMineChance = GetCampaignInt("UOACraft","iMiningSkill",oPC);
if (iMineChance < 350)
{
iTemp = GetAbilityScore(oPC,ABILITY_STRENGTH)*5;
iTemp = iTemp + (GetAbilityScore(oPC, ABILITY_INTELLIGENCE)*2);
iTemp = iTemp + (GetAbilityScore(oPC,ABILITY_DEXTERITY)*3);
iTemp = iTemp*3;
if (iTemp >350) iTemp = 350;
}
if (iMineChance > iTemp)
{
if (iRandom <= iMineChance) iSuccess = 1;
}
else
{
if (iRandom <= iTemp) iSuccess = 1;
}
if (iSuccess == 0)
{
if (d12(1) == 1)
{
switch (d8(1))
{
case 1:{FloatingTextStringOnCreature("You dig and find nothing.",oPC,FALSE);break;}
case 2:{FloatingTextStringOnCreature("Your back aches...",oPC,FALSE);break;}
case 3:{FloatingTextStringOnCreature("You know there has to be ore here somewhere..",oPC,FALSE);break;}
case 4:{FloatingTextStringOnCreature("Your arms are tired...",oPC,FALSE);break;}
case 5:{FloatingTextStringOnCreature("You dig and dig and dig...",oPC,FALSE);break;}
case 6:{FloatingTextStringOnCreature("Fragments of stone and earth pile up at your feet...",oPC,FALSE);break;}
case 7:{FloatingTextStringOnCreature("You pause to sharpen your digging tool...",oPC,FALSE);break;}
default:{FloatingTextStringOnCreature("You dig and dig some more...",oPC,FALSE);break;}
}
}
return;
}
int iRemaining = GetLocalInt(OBJECT_SELF,"iRemaining");
if (iRemaining==0)
{
iRemaining = d4(3)+11;
SetLocalInt(OBJECT_SELF,"iRemaining",iRemaining);
}
if (iRemaining==1) return;
iRandom = Random(1000);
if (iRandom >= iMineChance)
{
if (d10(1)+1 >= iMineChance/100) iSkillGain = 1;
}
//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(oPC,DelayCommand(10.0,SetLocalInt(oPC,"iSkillGain",0)));
}
}
if (iSkillGain == 1)
{
iMineChance++;
sOldSkill2 = IntToString(iMineChance);
sOldSkill = "."+GetStringRight(sOldSkill2,1);
if (iMineChance > 9)
{
sOldSkill = GetStringLeft(sOldSkill2,GetStringLength(sOldSkill2)-1)+sOldSkill;
}
else
{
sOldSkill = "0"+sOldSkill;
}
if (iMineChance <= 1000)
{
//SetTokenPair(oPC,14,1,iMineChance);
SetCampaignInt("UOACraft","iMiningSkill",iMineChance,oPC);
SendMessageToPC(oPC,"=================================");
SendMessageToPC(oPC,"Your skill in mining has gone up!");
SendMessageToPC(oPC,"Current mining skill : "+ sOldSkill+"%");
SendMessageToPC(oPC,"=================================");
if (GetLocalInt(GetModule(),"_UOACraft_XP")!=0) GiveXPToCreature(oPC,GetLocalInt(GetModule(),"_UOACraft_XP"));
}
}
if (sMyTag == "MINE_IRON")
{
sItemResRef = "ore001";
sOreType = "Iron";
}
if (sMyTag == "MINE_DULL")
{
sItemResRef = "ore001";
sOreType = "Iron";
if (iMineChance >=650)
{
if (d10(1)>4)
{
sItemResRef = "ore002";
sOreType = "Dull Copper";
}
}
}
if (sMyTag == "MINE_SHADOW")
{
sItemResRef = "ore001";
sOreType = "Iron";
if (iMineChance >=700)
{
if (d10(1)>4)
{
sItemResRef = "ore003";
sOreType = "Shadow Iron";
}
}
}
if (sMyTag == "MINE_COPPER")
{
sItemResRef = "ore001";
sOreType = "Iron";
if (iMineChance >=750)
{
if (d10(1)>4)
{
sItemResRef = "ore004";
sOreType = "Copper";
}
}
}
if (sMyTag == "MINE_BRONZE")
{
sItemResRef = "ore001";
sOreType = "Iron";
if (iMineChance >=800)
{
if (d10(1)>4)
{
sItemResRef = "ore005";
sOreType = "Bronze";
}
}
}
if (sMyTag == "MINE_GOLD")
{
sItemResRef = "ore001";
sOreType = "Iron";
if (iMineChance >=850)
{
if (d10(1)>4)
{
sItemResRef = "ore006";
sOreType = "Gold";
}
}
}
if (sMyTag == "MINE_AGAPITE")
{
sItemResRef = "ore001";
sOreType = "Iron";
if (iMineChance >=900)
{
if (d10(1)>4)
{
sItemResRef = "ore007";
sOreType = "Agapite";
}
}
}
if (sMyTag == "MINE_VERITE")
{
sItemResRef = "ore001";
sOreType = "Iron";
if (iMineChance >=950)
{
if (d10(1)>4)
{
sItemResRef = "ore008";
sOreType = "Verite";
}
}
}
if (sMyTag == "MINE_VALORITE")
{
sItemResRef = "ore001";
sOreType = "Iron";
if (iMineChance >=990)
{
if (d10(1)>4)
{
sItemResRef = "ore009";
sOreType = "Valorite";
}
}
}
if (sMyTag == "MINE_SILVER")
{
sItemResRef = "ore001";
sOreType = "Iron";
if (iMineChance >=770)
{
if (d10(1)>4)
{
sItemResRef = "ore010";
sOreType = "Silver";
}
}
}
if (sMyTag == "MINE_MITHRIL")
{
sItemResRef = "ore001";
sOreType = "Iron";
if (iMineChance >=950)
{
if (d10(1)>4)
{
sItemResRef = "ore011";
sOreType = "Mithril";
}
}
}
if (sMyTag == "MINE_ADAMANTITE")
{
sItemResRef = "ore001";
sOreType = "Iron";
if (iMineChance >=990)
{
if (d10(1)>4)
{
sItemResRef = "ore012";
sOreType = "Adamantite";
}
}
}
if (sMyTag == "MINE_PLATINUM")
{
sItemResRef = "ore001";
sOreType = "Iron";
if (iMineChance >=900)
{
if (d10(1)>4)
{
sItemResRef = "ore013";
sOreType = "Platinum";
}
}
}
if (sMyTag == "_UOA_DepositofCoal")
{
sItemResRef = "item_coal";
sOreType = "Lump of Coal";
//if (iMineChance >=900)
// {
// if (d10(1)>4)
// {
// sItemResRef = "ore013";
// sOreType = "Platinum";
// }
// }
}
CreateItemOnObject(sItemResRef,oPC,1);
iRemaining=iRemaining-1;
SetLocalInt(OBJECT_SELF,"iRemaining",iRemaining);
if (iRemaining==1)
{
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(1000,DAMAGE_TYPE_MAGICAL,DAMAGE_POWER_NORMAL),OBJECT_SELF);
}
if (sOreType!="Lump of Coal")
{
FloatingTextStringOnCreature("You dig up some "+sOreType+" ore.",oPC,FALSE);
}
else
{
FloatingTextStringOnCreature("You dig up a "+sOreType+".",oPC,FALSE);
}
if (Random(1000)<=50)
{
int iGemType = 1;
int iCount = 5;
for (iCount; iCount>0; iCount--)
{
if (Random(1000)>200) break;
iGemType++;
}
CreateItemOnObject("gemstone00"+IntToString(iGemType),oPC,1);
AssignCommand(oPC,DelayCommand(1.0,FloatingTextStringOnCreature("... and an unknown gemstone.",oPC,FALSE)));
}
//AssignCommand(oPC,DelayCommand(1.5,ClearAllActions()));
// ensure "iSkillGain" oPC variable is not perma-set to 99 thus preventing all skill gains
if (GetLocalInt(oPC,"iSkillGain")!=0) AssignCommand(oPC,DelayCommand(10.0,SetLocalInt(oPC,"iSkillGain",0)));
iTotalPickUsed++;
if (iTotalPickUsed >100)
{
FloatingTextStringOnCreature("Your pick has broken while digging..",oPC,FALSE);
DestroyObject(oWeapon);
iTotalPickUsed = 0;
}
else
{
SetLocalInt(oWeapon,"iPickUsed",iTotalPickUsed);
}
}