Exemplo n.º 1
0
        public override bool TryCast(NebulaObject source, PlayerSkill skill, out Hashtable info)
        {
            info = new Hashtable();
            info.SetSkillUseState(Common.SkillUseState.normal);
            if (ShotToEnemyRestricted(source, skill))
            {
                info.SetSkillUseState(Common.SkillUseState.invalidTarget);
                return(false);
            }
            if (NotCheckDistance(source))
            {
                info.SetSkillUseState(Common.SkillUseState.tooFar);
                return(false);
            }

            var targetObject  = source.Target().targetObject;
            var targetBonuses = targetObject.Bonuses();
            var sourceMovable = source.Movable();

            float speedPc   = skill.GetFloatInput("speed_pc");
            float speedTime = skill.GetFloatInput("time");

            float speedValue = sourceMovable.maximumSpeed * speedPc;

            bool mastery = RollMastery(source);

            if (mastery)
            {
                speedTime *= 2;
            }

            Buff targetBuff = new Buff(skill.id, null, Common.BonusType.decrease_speed_on_cnt, speedTime, speedValue);

            targetBonuses.SetBuff(targetBuff, source);
            return(true);
        }