예제 #1
0
        /// <summary>
        /// Get all debuffs for buff group
        /// </summary>
        /// <param name="prm">Buff type group </param>
        /// <returns>Array of all debuffs for buff group parameter</returns>
        public static BonusType[] GetDebuffsForParameter(BuffParameter prm)
        {
            switch (prm)
            {
            case BuffParameter.cooldown:
                return(new BonusType[] { BonusType.increase_cooldown_on_cnt, BonusType.increase_cooldown_on_pc });

            case BuffParameter.damage:
                return(new BonusType[] { BonusType.decrease_damage_on_cnt, BonusType.decrease_damage_on_pc });

            case BuffParameter.max_energy:
                return(new BonusType[] { BonusType.decrease_max_energy_on_cnt });

            case BuffParameter.optimal_distance:
                return(new BonusType[] { BonusType.decrease_optimal_distance_on_cnt, BonusType.decrease_optimal_distance_on_pc });

            case BuffParameter.resist:
                return(new BonusType[] { BonusType.decrease_resist_on_cnt, BonusType.decrease_resist_on_pc, BonusType.block_resist });

            case BuffParameter.speed:
                return(new BonusType[] { BonusType.decrease_speed_on_cnt, BonusType.decrease_speed_on_pc });

            case BuffParameter.crit_damage:
                return(new BonusType[] { BonusType.decrease_crit_damage_on_pc, BonusType.decrease_crit_damage_on_cnt });

            case BuffParameter.crit_chance:
                return(new BonusType[] { BonusType.decrease_crit_chance_on_cnt, BonusType.decrease_crit_chance_on_pc });

            case BuffParameter.max_hp:
                return(new BonusType[] { BonusType.decrease_max_hp_on_cnt, BonusType.decrease_max_hp_on_pc });

            case BuffParameter.hp:
                return(new BonusType[] { BonusType.decrease_healing_speed_on_pc });

            case BuffParameter.healing:
                return(new BonusType[] { BonusType.decrease_healing_on_cnt, BonusType.decrease_healing_on_pc });

            case BuffParameter.energy_cost:
                return(new BonusType[] { BonusType.increase_energy_cost_on_pc, BonusType.increase_energy_cost_on_cnt });

            case BuffParameter.dron_strength:
                return(new BonusType[] { BonusType.decrease_dron_strength_on_pc, BonusType.decrease_dron_strength_on_cnt });

            case BuffParameter.input_damage:
                return(new BonusType[] { BonusType.increase_input_damage_on_pc });

            default:
                return(new BonusType[] { });
            }
        }
예제 #2
0
        public override bool TryCast(NebulaObject source, PlayerSkill skill, out Hashtable info)
        {
            info = new Hashtable();
            if (!CheckForShotEnemy(source, skill))
            {
                return(false);
            }
            float dmgMult       = skill.data.Inputs.Value <float>("dmg_mult");
            float effectProb    = skill.data.Inputs.Value <float>("effect_prob");
            var   sourceWeapon  = source.GetComponent <BaseWeapon>();
            var   targetBonuses = source.GetComponent <PlayerTarget>().targetObject.GetComponent <PlayerBonuses>();

            bool mastery = RollMastery(source);

            if (mastery)
            {
                dmgMult    *= 2;
                effectProb *= 2;
            }
            WeaponHitInfo hit;
            var           shotInfo = sourceWeapon.Fire(out hit, skill.data.Id, dmgMult);

            if (hit.normalOrMissed)
            {
                if (Rand.Float01() < effectProb)
                {
                    BuffParameter prm     = CommonUtils.GetRandomEnumValue <BuffParameter>(new List <BuffParameter>());
                    BonusType[]   debuffs = BuffUtils.GetBuffsForParameter(prm);
                    foreach (var dbf in debuffs)
                    {
                        targetBonuses.RemoveBuffs(dbf);
                    }
                }
                source.GetComponent <MmoMessageComponent>().SendShot(EventReceiver.OwnerAndSubscriber, shotInfo);
                return(true);
            }
            else
            {
                source.GetComponent <MmoMessageComponent>().SendShot(EventReceiver.OwnerAndSubscriber, shotInfo);
                return(false);
            }
        }
예제 #3
0
        /// <summary>
        /// Return array of buffs for buff type parameter group
        /// </summary>
        /// <param name="prm">Parameter group</param>
        /// <returns>Array of buffs for parameter group</returns>
        public static BonusType[] GetBuffsForParameter(BuffParameter prm)
        {
            switch (prm)
            {
            case BuffParameter.cooldown:
                return(new BonusType[] { BonusType.decrease_cooldown_on_cnt, BonusType.decrease_cooldown_on_pc });

            case BuffParameter.damage:
                return(new BonusType[] { BonusType.increase_damage_on_cnt, BonusType.increase_damage_on_pc });

            case BuffParameter.max_energy:
                return(new BonusType[] { BonusType.increase_max_energy_on_cnt });

            case BuffParameter.optimal_distance:
                return(new BonusType[] { BonusType.increase_optimal_distance_on_cnt, BonusType.increase_optimal_distance_on_pc });

            case BuffParameter.resist:
                return(new BonusType[] { BonusType.increase_resist_on_cnt, BonusType.increase_resist_on_pc });

            case BuffParameter.speed:
                return(new BonusType[] { BonusType.increase_speed_on_cnt, BonusType.increase_speed_on_pc });

            case BuffParameter.crit_damage:
                return(new BonusType[] { BonusType.increase_crit_damage_on_cnt, BonusType.increase_crit_damage_on_pc });

            case BuffParameter.crit_chance:
                return(new BonusType[] { BonusType.increase_crit_chance_on_cnt, BonusType.increase_crit_chance_on_pc });

            case BuffParameter.max_hp:
                return(new BonusType[] { BonusType.increase_max_hp_on_cnt, BonusType.increase_max_hp_on_pc });

            case BuffParameter.hp:
                return(new BonusType[] { BonusType.increase_healing_speed_on_pc });

            case BuffParameter.healing:
                return(new BonusType[] { BonusType.increase_healing_on_cnt, BonusType.increase_healing_on_pc, BonusType.buff_41c });

            case BuffParameter.energy_cost:
                return(new BonusType[] { BonusType.decrease_energy_cost_on_pc, BonusType.decrease_energy_cost_on_cnt });

            case BuffParameter.dron_strength:
                return(new BonusType[] { BonusType.increase_dron_strength_on_cnt, BonusType.increase_dron_strength_on_pc });

            case BuffParameter.exp:
                return(new BonusType[] { BonusType.increase_exp_on_pc });

            case BuffParameter.input_damage:
                return(new BonusType[] { BonusType.decrease_input_damage_on_pc });

            case BuffParameter.reflection:
                return(new BonusType[] { BonusType.reflection_pc });

            case BuffParameter.restore_hp_on_sec:
                return(new BonusType[] { BonusType.restore_hp_at_sec_on_pc, BonusType.restore_hp_at_sec_on_cnt });

            case BuffParameter.absorb_damage:
                return(new BonusType[] { BonusType.absorb_damage_pc, BonusType.absorb_damage_cnt });

            case BuffParameter.convert_damage_to_hp:
                return(new BonusType[] { BonusType.convert_absorbed_damage_to_hp_pc });

            case BuffParameter.vampirism:
                return(new BonusType[] { BonusType.vampirism_pc });

            case BuffParameter.invisibility:
                return(new BonusType[] { BonusType.invisibility });

            default:
                return(new BonusType[] { });
            }
        }