Exemple #1
0
        public void GainExp(int amount)
        {
            if (amount <= 0 || !ExpMetadataStorage.LevelExist((short)(Level + 1)))
            {
                return;
            }

            long newExp = Exp + amount + RestExp;

            if (RestExp > 0)
            {
                RestExp -= amount;
            }
            else
            {
                RestExp = 0;
            }

            while (newExp >= ExpMetadataStorage.GetExpToLevel(Level))
            {
                newExp -= ExpMetadataStorage.GetExpToLevel(Level);
                if (!LevelUp()) // If can't level up because next level doesn't exist, exit the loop
                {
                    newExp = 0;
                    break;
                }
            }

            Exp = newExp;
            Player.Session.Send(ExperiencePacket.ExpUp(amount, newExp, RestExp));
        }
Exemple #2
0
    public bool LevelUp()
    {
        if (!ExpMetadataStorage.LevelExist((short)(Level + 1)))
        {
            return(false);
        }

        Level++;

        Player.Stats.AddBaseStats(Player);
        Player.FieldPlayer.RecoverHp(FieldPlayer.Stats[StatId.Hp].Bonus);

        Session.FieldManager.BroadcastPacket(RevivalConfirmPacket.Send(FieldPlayer.ObjectId, 0));
        Session.FieldManager.BroadcastPacket(LevelUpPacket.LevelUp(FieldPlayer.ObjectId, Level));
        Session.FieldManager.BroadcastPacket(FieldObjectPacket.UpdateCharacterLevel(Player));

        Session.FieldManager.BroadcastPacket(JobPacket.SendJob(FieldPlayer));

        Session.Send(StatPacket.SetStats(FieldPlayer));
        Session.FieldManager.BroadcastPacket(StatPacket.UpdateFieldStats(FieldPlayer), Session);

        Session.Send(KeyTablePacket.SendFullOptions(Player.GameOptions));

        TrophyManager.OnLevelUp(Player);
        QuestHelper.GetNewQuests(Player);
        return(true);
    }
Exemple #3
0
    public void GainExp(int amount)
    {
        if (amount <= 0 || !ExpMetadataStorage.LevelExist((short)(Level + 1)))
        {
            return;
        }

        long newExp = Exp + amount + RestExp;

        if (RestExp > 0)
        {
            RestExp -= amount;
        }
        else
        {
            RestExp = 0;
        }

        while (newExp >= ExpMetadataStorage.GetExpToLevel(Level))
        {
            newExp -= ExpMetadataStorage.GetExpToLevel(Level);
            if (LevelUp())
            {
                continue;
            }

            newExp = 0;
            break;
        }

        Exp = newExp;
        Session.Send(ExperiencePacket.ExpUp(amount, newExp, RestExp));
    }
Exemple #4
0
    public void GainExp(long amount)
    {
        if (amount <= 0 || !ExpMetadataStorage.LevelExist((short)(Level + 1)))
        {
            return;
        }

        long newExp = Exp + amount + RestExp;

        if (RestExp > 0)
        {
            RestExp -= amount;
        }
        else
        {
            RestExp = 0;
        }

        bool hasLeveledUp = false;

        while (newExp >= ExpMetadataStorage.GetExpToLevel(Level))
        {
            newExp -= ExpMetadataStorage.GetExpToLevel(Level);
            if (LevelUp())
            {
                hasLeveledUp = true;
                continue;
            }

            newExp = 0;
            break;
        }

        Exp = newExp;
        Session.Send(ExperiencePacket.ExpUp(amount, newExp, RestExp));

        if (!hasLeveledUp)
        {
            return;
        }

        Session.FieldManager.BroadcastPacket(RevivalConfirmPacket.Send(FieldPlayer.ObjectId, 0));
        Session.FieldManager.BroadcastPacket(LevelUpPacket.LevelUp(FieldPlayer.ObjectId, Level));
        Session.FieldManager.BroadcastPacket(FieldObjectPacket.UpdateCharacterLevel(Player));

        // Find all new skills for current level
        HashSet <int> newSkillIds = SkillMetadataStorage.GetJobSkills(Player.Job)
                                    .Where(x => x.SkillLevels.First().SkillUpgrade.LevelRequired == Level)
                                    .Select(x => x.SkillId).ToHashSet();

        Session.FieldManager.BroadcastPacket(JobPacket.UpdateSkillTab(FieldPlayer, newSkillIds));

        Session.Send(StatPacket.SetStats(FieldPlayer));
        Session.FieldManager.BroadcastPacket(StatPacket.SetStats(FieldPlayer), Session);

        Session.Send(KeyTablePacket.SendFullOptions(Player.GameOptions));
        DatabaseManager.Characters.Update(Player);
    }
Exemple #5
0
        public bool LevelUp()
        {
            if (!ExpMetadataStorage.LevelExist((short)(Level + 1)))
            {
                return(false);
            }

            Level++;
            // TODO: Gain max HP and heal to max hp
            Player.StatPointDistribution.AddTotalStatPoints(5);
            Player.Session.Send(StatPointPacket.WriteTotalStatPoints(Player));
            Player.Session.Send(ExperiencePacket.LevelUp(Player.Session.FieldPlayer, Level));
            return(true);
        }
Exemple #6
0
        public bool LevelUp()
        {
            if (!ExpMetadataStorage.LevelExist((short)(Level + 1)))
            {
                return(false);
            }

            Level++;
            Player.StatPointDistribution.AddTotalStatPoints(5);
            Player.Session.FieldManager.BroadcastPacket(ExperiencePacket.LevelUp(Player.Session.FieldPlayer, Level));
            // TODO: Gain max HP
            Player.RecoverHp(Player.Stats[PlayerStatId.Hp].Max);
            Player.Session.Send(StatPointPacket.WriteTotalStatPoints(Player));

            QuestHelper.GetNewQuests(Player.Session, Level);
            return(true);
        }
Exemple #7
0
    public bool LevelUp()
    {
        if (!ExpMetadataStorage.LevelExist((short)(Level + 1)))
        {
            return(false);
        }

        Level++;

        Player.Stats.AddBaseStats(Player);
        Player.FieldPlayer.RecoverHp(FieldPlayer.Stats[StatAttribute.Hp].Bonus);

        Player.UpdateSocials();
        TrophyManager.OnLevelUp(Player);
        QuestHelper.GetNewQuests(Player);

        return(true);
    }
Exemple #8
0
    public bool LevelUp()
    {
        if (!ExpMetadataStorage.LevelExist((short)(Level + 1)))
        {
            return(false);
        }

        Level++;

        TrophyManager.OnLevelUp(Player);

        Player.Stats.AddBaseStats(Player);
        Player.FieldPlayer.RecoverHp(FieldPlayer.Stats[StatId.Hp].Bonus);

        Session.FieldManager.BroadcastPacket(ExperiencePacket.LevelUp(FieldPlayer.ObjectId, Level));
        Session.Send(StatPacket.SetStats(FieldPlayer));

        QuestHelper.GetNewQuests(Player);
        return(true);
    }
Exemple #9
0
    public override void Execute(GameCommandTrigger trigger)
    {
        Levels levels = trigger.Session.Player.Levels;

        levels.GainExp(ExpMetadataStorage.GetExpToLevel(levels.Level) - levels.Exp);
    }