PHP Code:
/// <summary>
/// 转世
/// </summary>
/// <param name="jobid">职业</param>
public void RebornTo(byte jobid)
{
if (this.Reborn > 1)
return;
if (this.Reborn == 0)
{
byte OldPro = this.Profession;
byte OldLevel = Level;
byte newLevel = 15;
string AtrStr = "";
string[] tmp;
#region 重置属性点
switch (jobid)
{
case 11:
//勇士
AtrStr = Albetros.Game.Calculations.Experience.TrojanStats[newLevel];
tmp = AtrStr.Split(',');
for (int i = 0; i < tmp.Length;i++ )
{
StatPoint += Convert.ToUInt16(tmp[i]);
}
break;
case 21:
//战士
AtrStr = Albetros.Game.Calculations.Experience.WarriorStats[newLevel];
tmp = AtrStr.Split(',');
for (int i = 0; i < tmp.Length;i++ )
{
StatPoint += Convert.ToUInt16(tmp[i]);
}
break;
case 41:
//弓手
AtrStr = Albetros.Game.Calculations.Experience.ArcherStats[newLevel];
tmp = AtrStr.Split(',');
for (int i = 0; i < tmp.Length; i++)
{
StatPoint += Convert.ToUInt16(tmp[i]);
}
break;
case 51:
//忍者
AtrStr = Albetros.Game.Calculations.Experience.NinjaStats[newLevel];
tmp = AtrStr.Split(',');
for (int i = 0; i < tmp.Length; i++)
{
StatPoint += Convert.ToUInt16(tmp[i]);
}
break;
case 61:
//武僧
AtrStr = Albetros.Game.Calculations.Experience.MonkStats[newLevel];
tmp = AtrStr.Split(',');
for (int i = 0; i < tmp.Length; i++)
{
StatPoint += Convert.ToUInt16(tmp[i]);
}
break;
case 131:
case 141:
//道士
AtrStr = Albetros.Game.Calculations.Experience.TaoistStats[newLevel];
tmp = AtrStr.Split(',');
for (int i = 0; i < tmp.Length; i++)
{
StatPoint += Convert.ToUInt16(tmp[i]);
}
break;
}
//超过130转世每级加3点
if (OldLevel >= 130)
{
for (int i = 0; i < OldLevel - 129; i++)
{
StatPoint += 3;
}
}
#endregion
this.Reborn = 1;
this.Level = newLevel;
this.Profession = jobid;
#region 技能重置
ushort[] tmpSkills = null;
OldPro /= 10;
jobid /= 10;
switch (OldPro)
{
case 1: // 勇士
switch (jobid)
{
case 5:
case 4: tmpSkills = new ushort[] { 1110, 1190 }; break;
case 14: tmpSkills = new ushort[] { 1110, 1190, 1270 }; break;
case 1: tmpSkills = new ushort[] { 3050 }; break;
case 2: tmpSkills = new ushort[] { 1110, 1190, 5100 }; break;
}
break;
case 2: // 战士
switch (jobid)
{
case 4:
case 14: tmpSkills = new ushort[] { 1020, 1040 }; break;
case 5:
case 1: tmpSkills = new ushort[] { 1040, 1015, 1320 }; break;
case 2: tmpSkills = new ushort[] { 3060 }; break;
case 13: tmpSkills = new ushort[] { 1020, 1040, 1025 }; break;
}
break;
case 4: // 弓手
switch (jobid)
{
case 4: tmpSkills = new ushort[] { 5000 }; break;
}
break;
case 5: // 忍者
switch (jobid)
{
case 5: tmpSkills = new ushort[] { 6000, 6001, 6002, 6003, 6010, 6011 }; break;
default: tmpSkills = new ushort[] { 6001 }; break;
}
break;
case 13: // 水道
switch (jobid)
{
case 13: tmpSkills = new ushort[] { 3090 }; break;
case 2:
case 5:
case 1: tmpSkills = new ushort[] { 1005, 1090, 1095, 1195, 1085 }; break;
case 14: tmpSkills = new ushort[] { 1050, 1175, 1075, 1055 }; break;
}
break;
case 14: // 火道
switch (jobid)
{
case 14: tmpSkills = new ushort[] { 3080 }; break;
case 13: tmpSkills = new ushort[] { 1120 }; break;
case 1:
case 2:
case 5:
case 4: tmpSkills = new ushort[] { 1000, 1001, 1005, 1195 }; break;
}
break;
}
this.Skills.Clear();
foreach (ushort skillId in tmpSkills)
{
if (!this.Skills.ContainsKey(skillId))
AddSkill(skillId, 0, 0);
}
#endregion
Albetros.Game.Handler.LowerAllItems(this);
}
}






