public L2Augmentation generateAugmentation(L2ItemInstance item, int skillId, int skillLvl, int type, int bonyID) {
int lifeStoneLevel = 10;
int lifeStoneGrade = 3;
// 0:yellow, 1:blue, 2:purple, 3:red
int resultColor = Rnd.get(0, 3);
int colorOffset = (resultColor * (STAT_SUBBLOCKSIZE * 10)) + ((lifeStoneLevel - 1) * STAT_SUBBLOCKSIZE);
int offset = ((3 - lifeStoneGrade) * STAT_BLOCKSIZE) + colorOffset;
int stat12 = bonyID == 0 ? Rnd.get(offset, offset + STAT_SUBBLOCKSIZE) : bonyID;
int stat34 = 0;
// generate a skill if neccessary
L2Skill skill = null;
AugmentationSkill temp;
switch (type) {
case 1: // chance skill
for (AugmentationSkill value : _chanceSkills) {
if (value._skillId == skillId) {
temp = value;
skill = temp.getSkill(skillLvl);
stat34 = temp.getAugmentationSkillId();
}
}
break;
case 2: // active skill
for (AugmentationSkill value : _activeSkills) {
if (value._skillId == skillId) {
temp = value;
skill = temp.getSkill(skillLvl);
stat34 = temp.getAugmentationSkillId();
}
}
break;
case 3: // passive skill
for (AugmentationSkill value : _passiveSkills) {
if (value._skillId == skillId) {
temp = value;
skill = temp.getSkill(skillLvl);
stat34 = temp.getAugmentationSkillId();
}
}
break;
default:
stat34 = Rnd.get(offset, offset + STAT_SUBBLOCKSIZE);
}
return new L2Augmentation(item, ((stat34 << 16) + stat12), skill, true);
}