Quote:
Originally Posted by ImmuneOne
Decreasing chances because of bulkers, good concept. A bit unfair though.
|
I interpreted it as some sort of jibe at TQ, implying they gave bulkers a higher chance of upgrading than others. (who knows, they may have).
Chances for upgrading level and quality from the EO source:
At the processing of upgrading we have a check to upgrade, this is the same for both level and quality.
Code:
int nRateSucc = RateSuccForEquipLevel(pEquipItem);
if( RandGet(100) < nRateSucc ) { //Upgrade };
RateSuccForEquipLevel:
Code:
int CMsgDataArray::RateSuccForEquipLevel(CItemPtr pEquipItem)
{
IF_NOT(pEquipItem)
return 0;
int nLevel = pEquipItem->GetLevel();
if (pEquipItem->IsShield() || pEquipItem->IsArmor() || pEquipItem->IsHelmet())
{
if (nLevel>=0 && nLevel < 2) return 100;
else if(nLevel>=2 && nLevel < 4) return 35;
else if(nLevel>=4 && nLevel < 6) return 20;
else if(nLevel>=6 && nLevel < 7) return 10;
else if(nLevel>=7 && nLevel < 8) return 7;
else if(nLevel>=8 && nLevel < 9) return 4;
}
else
{
if (nLevel>=0 && nLevel < 4) return 100;
else if(nLevel>=4 && nLevel < 7) return 35;
else if(nLevel>=7 && nLevel < 10) return 20;
else if(nLevel>=10 && nLevel < 13) return 10;
else if(nLevel>=13 && nLevel < 16) return 7;
else if(nLevel>=16 && nLevel < 19) return 4;
else if(nLevel>=19&&nLevel<22) return 2;
}
return 0;
}
bReset is false when the RandGet() method is called, its an optional parameter in the BaseFunc header.
Code:
static _int64 RandSeed = 3721 ;
int RandGet(int nMax, BOOL bReset)
{
if (bReset)
RandSeed = ::TimeGet();
_int64 x = 0xffffffff;
double i ;
unsigned long final ;
RandSeed *= ((_int64)134775813);
RandSeed += 1 ;
RandSeed = RandSeed % x ;
i = ((double)RandSeed) / (double)0xffffffff ;
final = (long) (nMax * i) ;
return (int)final;
}
And the chance upgrade for quality:
Code:
int CMsgDataArray::RateSuccForQuality(CItemPtr pEquipItem)
{
int iQuality = pEquipItem->GetQuality();
if (iQuality==0) return 30;
else if(iQuality==1) return 12;
else if(iQuality==2) return 6;
else if(iQuality==3) return 4;
return 0;
}
Hope this helps you :)