public MonsterInfo( byte[] source, uint index, uint offset ) { HP = source[offset]; Attack = source[offset + 1]; Defense = source[offset + 2]; Speed = source[offset + 3]; SpAttack = source[offset + 4]; SpDefense = source[offset + 5]; Type1 = (MonsterType) source[offset + 6]; Type2 = (MonsterType) source[offset + 7]; CatchRate = source[offset + 8]; BaseXpYield = source[offset + 9]; EffortYield = (uint) ( source[offset + 10] | ( source[offset + 11] << 8 ) ); Item1 = (uint) ( source[offset + 12] | ( source[offset + 13] << 8 ) ); Item2 = (uint) ( source[offset + 14] | ( source[offset + 15] << 8 ) ); Gender = source[offset + 16]; StepsToHatch = source[offset + 17]; BaseFriendship = source[offset + 18]; LevelUpType = (ExperienceRate) source[offset + 19]; EggGroup1 = source[offset + 20]; EggGroup2 = source[offset + 21]; Ability1 = source[offset + 22]; Ability2 = source[offset + 23]; SafariRate = source[offset + 24]; Color = source[offset + 25]; Name = NameList.Get( index ); }
public static uint CalculatedLevel( ExperienceRate rate, uint exp ) { for( uint i = 100; i >= 1; i-- ) { if( BigEnoughForLevel( LookupTable[rate], exp, i ) ) return i; } return 1; }
void TestCalculations( ExperienceRate rate, uint[] levels ) { var length = levels.Last() + 1000; int e = 1; for( uint i = 0; i < length; i++ ) { if( levels.Any( ll => i == ll ) ) e++; Assert.AreEqual( e, LevelLookup.CalculatedLevel( rate, i ) ); } }