public void LevelMagic(UserMagic magic) { byte exp = (byte)(Envir.Random.Next(3) + 1); if ((Settings.MentorSkillBoost) && (Info.Mentor != 0) && (Info.isMentor)) { Buff buff = Buffs.Where(e => e.Type == BuffType.Mentee).FirstOrDefault(); if (buff != null) { CharacterInfo Mentor = Envir.GetCharacterInfo(Info.Mentor); PlayerObject player = Envir.GetPlayer(Mentor.Name); if (player.CurrentMap == CurrentMap && Functions.InRange(player.CurrentLocation, CurrentLocation, Globals.DataRange) && !player.Dead) if (SkillNeckBoost == 1) exp *= 2; } } exp *= SkillNeckBoost; if (Level == 65535) exp = byte.MaxValue; int oldLevel = magic.Level; switch (magic.Level) { case 0: if (Level < magic.Info.Level1) return; magic.Experience += exp; if (magic.Experience >= magic.Info.Need1) { magic.Level++; magic.Experience = (ushort)(magic.Experience - magic.Info.Need1); RefreshStats(); } break; case 1: if (Level < magic.Info.Level2) return; magic.Experience += exp; if (magic.Experience >= magic.Info.Need2) { magic.Level++; magic.Experience = (ushort)(magic.Experience - magic.Info.Need2); RefreshStats(); } break; case 2: if (Level < magic.Info.Level3) return; magic.Experience += exp; if (magic.Experience >= magic.Info.Need3) { magic.Level++; magic.Experience = 0; RefreshStats(); } break; default: return; } if (oldLevel != magic.Level) { long delay = magic.GetDelay(); Enqueue(new S.MagicDelay { Spell = magic.Spell, Delay = delay }); } Enqueue(new S.MagicLeveled { Spell = magic.Spell, Level = magic.Level, Experience = magic.Experience }); }
public void LevelMagic(UserMagic magic) { byte exp = (byte)(Envir.Random.Next(3) + 1); if (HasSkillNecklace) exp *= 3; if (Level == 255) exp = byte.MaxValue; int oldLevel = magic.Level; switch (magic.Level) { case 0: if (Level < magic.Info.Level1) return; magic.Experience += exp; if (magic.Experience >= magic.Info.Need1) { magic.Level++; magic.Experience = (ushort)(magic.Experience - magic.Info.Need1); RefreshStats(); } break; case 1: if (Level < magic.Info.Level2) return; magic.Experience += exp; if (magic.Experience >= magic.Info.Need2) { magic.Level++; magic.Experience = (ushort)(magic.Experience - magic.Info.Need2); RefreshStats(); } break; case 2: if (Level < magic.Info.Level3) return; magic.Experience += exp; if (magic.Experience >= magic.Info.Need3) { magic.Level++; magic.Experience = 0; RefreshStats(); } break; default: return; } if (oldLevel != magic.Level) { long delay = magic.GetDelay(); Enqueue(new S.MagicDelay { Spell = magic.Spell, Delay = delay }); } Enqueue(new S.MagicLeveled { Spell = magic.Spell, Level = magic.Level, Experience = magic.Experience }); }