Beispiel #1
0
        public static void ENCHANTER_CALLLIGHTING(SkillBaseEventArgs bargument)
        {
            int Lvldiff;

            SkillUsageEventArgs.SkillMatrix matrix;
            Actor asource = bargument.Sender as Actor;
            Actor atarget = bargument.Target as Actor;

            if (asource != null && atarget != null && bargument.Context == Saga.Enumarations.SkillContext.SkillUse)
            {
                SkillUsageEventArgs arguments = (SkillUsageEventArgs)bargument;
                matrix        = arguments.GetDefaultSkillMatrix(asource, atarget);
                Lvldiff       = arguments.GetCappedLevelDifference(matrix);
                matrix[0, 3] += 70 + 30 * arguments.SkillLevel;
                matrix[1, 3] += 150 + (60 + (10 * arguments.SkillLevel));
                matrix[4, 3] += (Lvldiff * 120);

                if (arguments.IsMissed(matrix) || arguments.IsBlocked(matrix))
                {
                    return;
                }
                else
                {
                    arguments.CanCheckEquipmentDurabillity = true;
                    arguments.CanCheckWeaponDurabillity    = true;
                    arguments.Damage = arguments.GetDamage(matrix);
                    arguments.Damage = arguments.GetDefenseReduction(matrix, arguments.Damage);
                    arguments.IsCritical(matrix);
                }
            }
            else
            {
                bargument.Failed = true;
            }
        }
        public static void RECRUIT_ROTATINGFIRESHOT(SkillBaseEventArgs bargument)
        {
            int Lvldiff;

            SkillUsageEventArgs.SkillMatrix matrix;
            Actor asource = bargument.Sender as Actor;
            Actor atarget = bargument.Target as Actor;

            if (asource != null && atarget != null && bargument.Context == Saga.Enumarations.SkillContext.SkillUse)
            {
                SkillUsageEventArgs arguments = (SkillUsageEventArgs)bargument;
                matrix        = arguments.GetDefaultSkillMatrix(asource, atarget);
                Lvldiff       = arguments.GetCappedLevelDifference(matrix);
                matrix[1, 3] += 100 + (50 * arguments.SkillLevel);
                matrix[4, 3] += (Lvldiff * 120);

                asource.Status.CurrentLp -= 1;
                if (arguments.IsMissed(matrix) || arguments.IsBlocked(matrix))
                {
                    return;
                }
                else
                {
                    arguments.Damage = arguments.GetDamage(matrix);
                    arguments.Damage = arguments.GetDefenseReduction(matrix, arguments.Damage);
                    arguments.IsCritical(matrix);
                }
            }
            else
            {
                bargument.Failed = true;
            }
        }
Beispiel #3
0
        public static void RECRUIT_LURINGSHOT(SkillBaseEventArgs bargument)
        {
            int Lvldiff;

            SkillUsageEventArgs.SkillMatrix matrix;
            Actor asource = bargument.Sender as Actor;
            Actor atarget = bargument.Target as Actor;

            if (asource != null && atarget != null && bargument.Context == Saga.Enumarations.SkillContext.SkillUse)
            {
                SkillUsageEventArgs arguments = (SkillUsageEventArgs)bargument;
                matrix        = arguments.GetDefaultSkillMatrix(asource, atarget);
                Lvldiff       = arguments.GetCappedLevelDifference(matrix);
                matrix[4, 3] += (Lvldiff * 120);

                if (arguments.IsMissed(matrix) || arguments.IsBlocked(matrix))
                {
                    arguments.UpdateCancelAddition(1004901, 5000, 0, atarget);
                    return;
                }
                else
                {
                    arguments.CanCheckEquipmentDurabillity = true;
                    arguments.CanCheckWeaponDurabillity    = true;
                    arguments.Damage = 0;
                    arguments.Result = SkillBaseEventArgs.ResultType.NoDamage;
                    arguments.IsCritical(matrix);
                }
            }
            else
            {
                bargument.Failed = true;
            }
        }
Beispiel #4
0
        public static void SWORDMAN_LONGSWORD(SkillBaseEventArgs bargument)
        {
            int Lvldiff;

            SkillUsageEventArgs.SkillMatrix matrix;
            Actor asource = bargument.Sender as Actor;
            Actor atarget = bargument.Target as Actor;

            if (asource != null && atarget != null && bargument.Context == Saga.Enumarations.SkillContext.SkillUse)
            {
                SkillUsageEventArgs arguments = (SkillUsageEventArgs)bargument;
                Singleton.Additions.ApplyAddition(arguments.Addition, asource);
                matrix        = arguments.GetDefaultSkillMatrix(asource, atarget);
                Lvldiff       = arguments.GetCappedLevelDifference(matrix);
                matrix[4, 3] += (Lvldiff * 120);
                Singleton.Additions.DeapplyAddition(arguments.Addition, asource);

                if (arguments.IsMissed(matrix) || arguments.IsBlocked(matrix))
                {
                    return;
                }
                else
                {
                    arguments.CanCheckEquipmentDurabillity = true;
                    arguments.CanCheckWeaponDurabillity    = true;
                    arguments.Damage = arguments.GetDamage(matrix);
                    arguments.Damage = arguments.GetDefenseReduction(matrix, arguments.Damage);
                    arguments.IsCritical(matrix);
                }
            }
            else
            {
                bargument.Failed = true;
            }
        }
Beispiel #5
0
        private static void BaseMagicalAttack(SkillBaseEventArgs bargument)
        {
            int Lvldiff;

            SkillUsageEventArgs.SkillMatrix matrix;
            Actor asource = bargument.Sender as Actor;
            Actor atarget = bargument.Target as Actor;

            if (asource != null && atarget != null && bargument.Context == Saga.Enumarations.SkillContext.SkillUse)
            {
                SkillUsageEventArgs arguments = (SkillUsageEventArgs)bargument;
                matrix        = arguments.GetMagicalSkillMatrix(asource, atarget);
                Lvldiff       = arguments.GetCappedLevelDifference(matrix);
                matrix[4, 3] += (Lvldiff * 120);
                matrix[0, 1]  = 0; matrix[1, 1] = 0;

                if (arguments.IsMissed(matrix) || arguments.IsBlocked(matrix))
                {
                    return;
                }
                else
                {
                    arguments.CanCheckEquipmentDurabillity = true;
                    arguments.CanCheckWeaponDurabillity    = true;
                    arguments.Damage = arguments.GetDamage(matrix);
                    arguments.Damage = arguments.GetDefenseReduction(matrix, arguments.Damage);
                    arguments.IsCritical(matrix);
                }
            }
            else
            {
                bargument.Failed = true;
            }
        }
Beispiel #6
0
        public static void RECRUIT_AIMINGSHOT(SkillBaseEventArgs bargument)
        {
            int Lvldiff;

            SkillUsageEventArgs.SkillMatrix matrix;
            Actor asource = bargument.Sender as Actor;
            Actor atarget = bargument.Target as Actor;

            if (asource != null && atarget != null && bargument.Context == Saga.Enumarations.SkillContext.SkillUse)
            {
                SkillUsageEventArgs arguments = (SkillUsageEventArgs)bargument;
                matrix        = arguments.GetDefaultSkillMatrix(asource, atarget);
                Lvldiff       = arguments.GetCappedLevelDifference(matrix);
                matrix[2, 3]  = 1200 + (int)((double)matrix[2, 3] * (double)((double)0.5 - ((double)0.05 * (double)arguments.SkillLevel)));
                matrix[4, 3] += (Lvldiff * 120);

                if (arguments.IsMissed(matrix) || arguments.IsBlocked(matrix))
                {
                    return;
                }
                else
                {
                    arguments.CanCheckEquipmentDurabillity = true;
                    arguments.CanCheckWeaponDurabillity    = true;
                    arguments.Damage = arguments.GetDamage(matrix);
                    arguments.Damage = arguments.GetDefenseReduction(matrix, arguments.Damage);
                    arguments.IsCritical(matrix);
                }
            }
            else
            {
                bargument.Failed = true;
            }
        }
Beispiel #7
0
        public static void SWORDMAN_COURAGEOUSASSAULT(SkillBaseEventArgs bargument)
        {
            int Lvldiff;

            SkillUsageEventArgs.SkillMatrix matrix;
            Actor asource = bargument.Sender as Actor;
            Actor atarget = bargument.Target as Actor;

            if (asource != null && atarget != null && bargument.Context == Saga.Enumarations.SkillContext.SkillUse)
            {
                SkillUsageEventArgs arguments = (SkillUsageEventArgs)bargument;
                matrix        = arguments.GetDefaultSkillMatrix(asource, atarget);
                Lvldiff       = arguments.GetCappedLevelDifference(matrix);
                matrix[4, 3] += (Lvldiff * 120);

                if (arguments.IsMissed(matrix) || arguments.IsBlocked(matrix))
                {
                    return;
                }
                else
                {
                    arguments.CanCheckEquipmentDurabillity = true;
                    arguments.CanCheckWeaponDurabillity    = true;
                    arguments.Damage = arguments.GetDamage(matrix);
                    arguments.Damage = arguments.GetDefenseReduction(matrix, arguments.Damage);

                    switch (asource.Status.CurrentLp)
                    {
                    case 1:
                        arguments.Damage += (uint)(7 + arguments.SkillLevel);
                        break;

                    case 2:
                        arguments.Damage += (uint)(13 + arguments.SkillLevel * 2);
                        break;

                    case 3:
                        arguments.Damage += (uint)(21 + arguments.SkillLevel * 3);
                        break;

                    case 4:
                        arguments.Damage += (uint)(29 + arguments.SkillLevel * 4);
                        break;

                    case 5:
                        arguments.Damage += (uint)(37 + arguments.SkillLevel * 5);
                        break;
                    }

                    asource.Status.CurrentLp = 0;
                    asource.Status.Updates  |= 1;
                    arguments.IsCritical(matrix);
                }
            }
            else
            {
                bargument.Failed = true;
            }
        }
Beispiel #8
0
        public static void RECRUIT_POLLEOSHOT(SkillBaseEventArgs bargument)
        {
            int Lvldiff;

            SkillUsageEventArgs.SkillMatrix matrix;
            Actor asource = bargument.Sender as Actor;
            Actor atarget = bargument.Target as Actor;

            if (asource != null && atarget != null && bargument.Context == Saga.Enumarations.SkillContext.SkillUse)
            {
                SkillUsageEventArgs arguments = (SkillUsageEventArgs)bargument;
                matrix        = arguments.GetDefaultSkillMatrix(asource, atarget);
                Lvldiff       = arguments.GetCappedLevelDifference(matrix);
                matrix[4, 3] += (Lvldiff * 120);

                switch (asource.Status.CurrentLp)
                {
                case 1:
                    matrix.matrix[1, 2] += (9 + 1 * arguments.SkillLevel);
                    break;

                case 2:
                    matrix.matrix[1, 2] += (19 + 2 * arguments.SkillLevel);
                    break;

                case 3:
                    matrix.matrix[1, 2] += (30 + 3 * arguments.SkillLevel);
                    break;

                case 4:
                    matrix.matrix[1, 2] += (42 + 4 * arguments.SkillLevel);
                    break;

                case 5:
                    matrix.matrix[1, 2] += (55 + 5 * arguments.SkillLevel);
                    break;
                }

                asource.Status.CurrentLp = 0;
                if (arguments.IsMissed(matrix) || arguments.IsBlocked(matrix))
                {
                    return;
                }
                else
                {
                    arguments.CanCheckEquipmentDurabillity = true;
                    arguments.CanCheckWeaponDurabillity    = true;
                    arguments.Damage = arguments.GetDamage(matrix);
                    arguments.Damage = arguments.GetDefenseReduction(matrix, arguments.Damage);
                    arguments.IsCritical(matrix);
                }
            }
            else
            {
                bargument.Failed = true;
            }
        }
Beispiel #9
0
        public static void RECRUIT_FINALBLOW(SkillBaseEventArgs bargument)
        {
            int Lvldiff;

            SkillUsageEventArgs.SkillMatrix matrix;
            Actor asource = bargument.Sender as Actor;
            Actor atarget = bargument.Target as Actor;

            if (asource != null && atarget != null && bargument.Context == Saga.Enumarations.SkillContext.SkillUse)
            {
                //Apply additions and deapply after
                SkillUsageEventArgs arguments = (SkillUsageEventArgs)bargument;
                Singleton.Additions.ApplyAddition(arguments.Addition, asource);
                matrix = arguments.GetDefaultSkillMatrix(asource, atarget);
                Singleton.Additions.DeapplyAddition(arguments.Addition, asource);

                //Calculation
                Lvldiff       = arguments.GetCappedLevelDifference(matrix);
                matrix[4, 3] += (Lvldiff * 120);

                //Remove all LP
                asource.Status.CurrentLp = 0;
                asource.Status.Updates  |= 1;

                if (arguments.IsMissed(matrix) || arguments.IsBlocked(matrix))
                {
                    return;
                }
                else
                {
                    arguments.CanCheckEquipmentDurabillity = true;
                    arguments.CanCheckWeaponDurabillity    = true;
                    arguments.Damage = arguments.GetDamage(matrix);
                    arguments.Damage = arguments.GetDefenseReduction(matrix, arguments.Damage);
                    if (arguments.Damage >= atarget.Status.CurrentHp)
                    {
                        asource.Status.CurrentLp = 7;
                    }
                    arguments.IsCritical(matrix);
                }
            }
            else
            {
                bargument.Failed = true;
            }
        }
Beispiel #10
0
        public static void THIEF_HEMORRAGE(SkillBaseEventArgs bargument)
        {
            int Lvldiff;

            SkillUsageEventArgs.SkillMatrix matrix;
            Actor asource = bargument.Sender as Actor;
            Actor atarget = bargument.Target as Actor;

            if (asource != null && atarget != null && bargument.Context == Saga.Enumarations.SkillContext.SkillUse)
            {
                SkillUsageEventArgs arguments = (SkillUsageEventArgs)bargument;
                matrix        = arguments.GetDefaultSkillMatrix(asource, atarget);
                Lvldiff       = arguments.GetCappedLevelDifference(matrix);
                matrix[1, 2]  = (int)((double)(matrix[1, 2]) * (double)(0.7 + 0.05 * arguments.SkillLevel));
                matrix[2, 3]  = (int)((double)(matrix[2, 3]) * (double)(1.3 + 0.05 * arguments.SkillLevel));
                matrix[4, 3] += (Lvldiff * 120);

                if (arguments.IsMissed(matrix) || arguments.IsBlocked(matrix))
                {
                    return;
                }
                else
                {
                    if (Common.Skills.HasAddition(atarget, arguments.Addition))
                    {
                        Common.Skills.UpdateAddition(atarget, arguments.Addition, 30000);                         // Increase Timing of Bleeding
                        arguments.CanCheckEquipmentDurabillity = true;
                        arguments.CanCheckWeaponDurabillity    = true;
                        arguments.DoLpIncrease(asource);
                        arguments.Damage = arguments.GetDamage(matrix);
                        arguments.Damage = arguments.GetDefenseReduction(matrix, arguments.Damage);
                        arguments.IsCritical(matrix);
                    }
                    else
                    {
                        return;
                    }
                }
            }
            else
            {
                bargument.Failed = true;
            }
        }
Beispiel #11
0
        public static void THIEF_TEARINGWOUND(SkillBaseEventArgs bargument)
        {
            int  Lvldiff;
            int  rand;
            uint aID;

            SkillUsageEventArgs.SkillMatrix matrix;
            Actor asource = bargument.Sender as Actor;
            Actor atarget = bargument.Target as Actor;

            if (asource != null && atarget != null && bargument.Context == Saga.Enumarations.SkillContext.SkillUse)
            {
                SkillUsageEventArgs arguments = (SkillUsageEventArgs)bargument;
                matrix        = arguments.GetDefaultSkillMatrix(asource, atarget);
                Lvldiff       = arguments.GetCappedLevelDifference(matrix);
                rand          = (15 * arguments.SkillLevel);
                aID           = (uint)(50551200 + arguments.SkillLevel);
                matrix[1, 2]  = (int)((double)(matrix[1, 2]) * (double)(0.7 + 0.05 * arguments.SkillLevel));
                matrix[2, 3]  = (int)((double)(matrix[2, 3]) * (double)(1.3 + 0.05 * arguments.SkillLevel));
                matrix[4, 3] += (Lvldiff * 120);

                if (arguments.IsMissed(matrix) || arguments.IsBlocked(matrix))
                {
                    return;
                }
                else
                {
                    arguments.CanCheckEquipmentDurabillity = true;
                    arguments.CanCheckWeaponDurabillity    = true;
                    arguments.DoLpIncrease(asource);
                    arguments.Damage = arguments.GetDamage(matrix);
                    arguments.Damage = arguments.GetDefenseReduction(matrix, arguments.Damage);
                    arguments.IsCritical(matrix);
                    if (arguments.SkillRand(rand))                               // 15% x SkillLVL chance
                    {
                        Common.Skills.UpdateAddition(atarget, (uint)aID, 10000); // Bleeding
                    }
                }
            }
            else
            {
                bargument.Failed = true;
            }
        }
Beispiel #12
0
        public static void THIEF_FATALBLOW(SkillBaseEventArgs bargument)
        {
            int Lvldiff;
            int cLP;

            SkillUsageEventArgs.SkillMatrix matrix;
            Actor asource = bargument.Sender as Actor;
            Actor atarget = bargument.Target as Actor;

            if (asource != null && atarget != null && bargument.Context == Saga.Enumarations.SkillContext.SkillUse)
            {
                SkillUsageEventArgs arguments = (SkillUsageEventArgs)bargument;
                Singleton.Additions.ApplyAddition(arguments.Addition, asource);
                matrix        = arguments.GetDefaultSkillMatrix(asource, atarget);
                Lvldiff       = arguments.GetCappedLevelDifference(matrix);
                cLP           = asource.Status.CurrentLp;
                matrix[1, 3]  = (int)((double)matrix[1, 3] * (1.45 + 0.05 * arguments.SkillLevel) + ((cLP * (30 * arguments.SkillLevel)) * 2));
                matrix[0, 3] *= (int)(matrix[0, 3] * 1.2);
                matrix[4, 3] += (Lvldiff * 120);
                Singleton.Additions.DeapplyAddition(arguments.Addition, asource);

                if (arguments.IsMissed(matrix) || arguments.IsBlocked(matrix))
                {
                    return;
                }
                else
                {
                    arguments.CanCheckEquipmentDurabillity = true;
                    arguments.CanCheckWeaponDurabillity    = true;
                    arguments.Damage = arguments.GetDamage(matrix);
                    arguments.Damage = arguments.GetDefenseReduction(matrix, arguments.Damage);
                    arguments.IsCritical(matrix);
                }
            }
            else
            {
                bargument.Failed = true;
            }
        }
Beispiel #13
0
        public static void RECRUIT_PIERCINGSHOT(SkillBaseEventArgs bargument)
        {
            int Lvldiff;

            SkillUsageEventArgs.SkillMatrix matrix;
            Actor asource = bargument.Sender as Actor;
            Actor atarget = bargument.Target as Actor;

            if (asource != null && atarget != null && bargument.Context == Saga.Enumarations.SkillContext.SkillUse)
            {
                SkillUsageEventArgs arguments = (SkillUsageEventArgs)bargument;
                matrix  = arguments.GetDefaultSkillMatrix(asource, atarget);
                Lvldiff = arguments.GetCappedLevelDifference(matrix);

                //Increase both Maximum and minimum attack of yourself and removes the armor
                matrix.matrix[0, 0] += matrix[3, 0];
                matrix.matrix[1, 0] += matrix[3, 0];
                matrix.matrix[3, 0]  = 0;
                matrix[4, 3]        += (Lvldiff * 120);

                if (arguments.IsMissed(matrix) || arguments.IsBlocked(matrix))
                {
                    return;
                }
                else
                {
                    arguments.Damage = arguments.GetDamage(matrix);
                    arguments.Damage = arguments.GetDefenseReduction(matrix, arguments.Damage);
                    arguments.IsCritical(matrix);
                }
            }
            else
            {
                bargument.Failed = true;
            }
        }