Example #1
0
 public override bool Execute(SkillArgs Args)
 {
     Master_  = Args.Master;
     SkillID_ = Args.Skill.SkillID;
     EventManager.Register <NpcSkillEvent>(OnNpcSkillEvent);
     return(true);
 }
Example #2
0
        public override bool Execute(SkillArgs Args)
        {
            var Master = Args.Master;

            if (Master == null)
            {
                return(false);
            }

            var TargetList = FilterHelper.Find(Args.LockRule, new FilterArgs()
            {
                Master   = Master,
                Team     = Master.Team,
                Position = Master.Position,
                Radius   = Args.Skill.Radius,
                Rotation = Master.Rotation,
                Shape    = Args.Skill.Shape
            });

            foreach (var Target in TargetList)
            {
                if (!Target.IsValid())
                {
                    continue;
                }

                var Damage = CombatManager.Calculator.Calc(Master.CalcFinalAttr(NpcAttrIndex.Damage), 1);
                Target.OnHitDamage(Master, Args.Skill.Name, Damage);
                Target.TryToPlayHitSfx(Args.HitSfx);
            }

            return(true);
        }
Example #3
0
        public override bool Execute(SkillArgs Args)
        {
            var Master = Args.Master;

            if (Master == null)
            {
                return(false);
            }

            var TargetList = FilterHelper.Find(Args.LockRule, new FilterArgs()
            {
                Master   = Master,
                Team     = Master.Team,
                Position = Master.Position,
                Radius   = Args.Skill.Radius,
                Rotation = Master.Rotation,
                Shape    = Args.Skill.Shape
            });

            if (TargetList.Count > 0)
            {
                var Damage = CombatManager.Calculator.Calc(Master.CalcFinalAttr(NpcAttrIndex.Damage), 1);
                BulletManager.AddArrowBullet(
                    new ArrowBulletDescriptor(
                        new BaseBulletDescriptor(Args.Skill.Name, Args.Master.Position, Args.Master.Team, Damage),
                        TargetList[0].Position, 1000, new Color(0.5f, 0.3f, 0.4f)));
            }

            return(false);
        }
Example #4
0
    public override bool CheckChangeState_Prot(StateMachine machine, StateArgsBase args)
    {
        SkillArgs skillArgs = args as SkillArgs;

        //todo: 眩晕状态等等状态下禁止释放技能
        return(true);
    }
    public bool StopCurrentSkill()
    {
        if (currentSkill != null)
        {
            PlayAction("Idle");

            currentSkill.OnStop(currentSkillArgs);
            currentSkill     = null;
            currentSkillArgs = null;

            //
            if (Target != null)
            {
                if (Target.IsDead)
                {
                    // 发送,杀死对方,继续下一回合
                    GameEventManager.RaiseEvent(GameEventTypes.KillChess, this, Target);
                }
                else
                {
                    Target.UseNormalSkill();
                }
            }
        }

        return(true);
    }
Example #6
0
        public override bool Execute(SkillArgs Args)
        {
            var Master = Args.Master;

            if (Master == null)
            {
                return(false);
            }

            var TargetList = FilterHelper.Find(Args.LockRule, new FilterArgs()
            {
                Master   = Master,
                Team     = Master.Team,
                Position = Master.Position,
                Radius   = Args.Skill.Radius,
                Rotation = Master.Rotation,
                Shape    = Args.Skill.Shape
            });

            foreach (var Target in TargetList)
            {
                if (!Target.IsValid())
                {
                    continue;
                }

                Target.Action.SetTarget(Master);
            }

            return(true);
        }
Example #7
0
    protected ChessEntity GetTarget(SkillArgs args, string targetStr = "")
    {
        if (string.IsNullOrEmpty(targetStr))
        {
            targetStr = GetProp("Target");
        }

        if (string.IsNullOrEmpty(targetStr))
        {
            return(args.Owner);
        }

        targetStr = targetStr.ToLower();

        switch (targetStr)
        {
        case "owner":
            return(args.Owner);

        case "sender":
            return(args.Sender);

        case "target":
            return(args.Owner.Target);
        }

        return(args.Owner);
    }
Example #8
0
        public SkillIconItem(Transform Parent, BaseSkill Skill, RectTransform CancelObj, bool IsRect /*temp*/)
        {
            this.Skill = Skill;

            IconTransform = AssetManager.CreatePrefabSync(new AssetUri(IsRect ? "prefabs/skillicon.prefab" : "prefabs/newskillIcon.prefab")).transform;
            IconTransform.SetParent(Parent, false);
            UIHelper.GetComponent <Image>(IconTransform, "BG/Icon").sprite = AssetManager.CreateAssetSync <Sprite>(new AssetUri(Skill.Icon));
            UIHelper.GetComponent <Image>(IconTransform, "BG/Mask").sprite = AssetManager.CreateAssetSync <Sprite>(new AssetUri(Skill.Icon));

            Mask_            = IconTransform.Find("BG/Mask").GetComponent <Image>();
            Mask_.fillAmount = 1;

            CDText_ = IconTransform.Find("CD").GetComponent <Text>();
            CDText_.gameObject.SetActive(false);

            NameText_      = IconTransform.Find("Name").GetComponent <Text>();
            NameText_.text = Skill.Name;

            Selector_ = SkillLibrary.Get(Skill.SkillID).Selector.Clone();
            var Args = new SkillArgs(Skill)
            {
                CancelObj = CancelObj
            };

            Selector_.BindCarrier(IconTransform, Args, (SArgs) =>
            {
                Skill.Master.Skill.UseSkill(SArgs);
            });
        }
Example #9
0
    public override bool OnEntry(SkillArgs args)
    {
        if (!base.OnEntry(args))
        {
            return(false);
        }

        ChessEntity attack   = GetTarget(args, damageTarget);
        ChessEntity beAttack = GetTarget(args, beDamageTarget);

        if (attack == null || beAttack == null)
        {
            return(false);
        }

        int damage = (int)attack.chessObj.chess_attack;

        damage -= (int)beAttack.chessObj.chess_defense;

        if (damage <= 0)
        {
            damage = 1;
        }

        beAttack.BeAttack(damage);

        return(true);
    }
Example #10
0
        public override bool Execute(SkillArgs Args)
        {
            BuffManager.AddBuff(new TriggerBuff(new TriggerBuffDescriptor(Args.Skill.Name, 5, 0.5f, 0, true,
                                                                          new NpcAttrModifyInfo(NpcAttrIndex.Speed, 0.5f, 0), Args.Skill.Radius, 1),
                                                Args.Position, Args.Master.Team.Opposite()));

            return(true);
        }
Example #11
0
    protected bool RunningChild(SkillArgs args, int index)
    {
        if (childList == null || childList.Count <= index)
        {
            return(false);
        }

        return(childList[index].OnEntry(args));
    }
Example #12
0
        public override bool Execute(SkillArgs Args)
        {
            Master_  = Args.Master;
            SkillID_ = Args.Skill.SkillID;
            var Level = Master_.Skill.GetSkillLevel(SkillID_);

            Master_.Data.Attr.ApplyBase(NpcAttrIndex.AddMp, Level * 10);
            return(true);
        }
Example #13
0
        public override bool Execute(SkillArgs Args)
        {
            var BulletDesc = new BombBulletDescriptor(
                new BaseBulletDescriptor(Args.Skill.Name, new Vector2(Args.Position.x, 400), CombatTeam.A, 500),
                Args.Position, 200, Args.Skill.Radius);

            BulletManager.AddBombBullet(BulletDesc);
            return(true);
        }
Example #14
0
    public virtual bool OnEntry(SkillArgs args)
    {
        if (args == null)
        {
            return(false);
        }

        return(true);
    }
Example #15
0
        public override bool Execute(SkillArgs Args)
        {
            var BulletDesc = new LaserBulletDescriptor(
                new BaseBulletDescriptor(Args.Skill.Name, Configure.CoreTopPosition, CombatTeam.A, 100),
                180, 360, 300, 500);

            BulletManager.AddLaserBullet(BulletDesc);
            return(true);
        }
Example #16
0
    public bool OnFinish(SkillArgs args)
    {
        if (args.Owner != null)
        {
            args.Owner.StopCurrentSkill();
        }

        return(true);
    }
Example #17
0
        public override bool Execute(SkillArgs Args)
        {
            var Offset = MathHelper.RandVec2(100);

            var Npc = NpcManager.AddNpc(Args.Skill.Name, Configure.CoreBasePosition + Offset, CombatTeam.A, 2,
                                        NpcManager.GenerateInitAttr(200, 200, 0, 100, 10, 2, 0, 500, 30));

            Npc.Skill.AddNpcSkill(2011); // 箭雨-主动
            return(true);
        }
Example #18
0
    public override bool OnLeave(SkillArgs args)
    {
        if (!base.OnLeave(args))
        {
            return(false);
        }

        TimerManager.Instance.RemoveTimer(string.Format("FlowTime_{0}", args.Index));
        return(true);
    }
Example #19
0
    protected bool RunningChild(SkillArgs args, string childName, int index = 0)
    {
        SkillBase combat = FindChild(childName, index);

        if (combat == null)
        {
            return(false);
        }

        return(combat.OnEntry(args));
    }
Example #20
0
    private void OnCombatFlowCallBack(object[] arg1)
    {
        SkillArgs args = (SkillArgs)arg1[0];

        if (args.FlowIndex < 0 || args.FlowIndex >= childList.Count)
        {
            return;
        }

        childList[args.FlowIndex].OnEntry(args);
    }
Example #21
0
        public override bool Execute(SkillArgs Args)
        {
            var BulletDesc = new BackBulletDescriptor(
                new BaseBulletDescriptor(Args.Skill.Name, Args.Master.Position, CombatTeam.A, 1),
                Args.Direction, Configure.WindowWidth,
                new Vector2(400, 82),
                200);

            BulletManager.AddBackBullet(BulletDesc);
            return(true);
        }
Example #22
0
    public virtual bool OnStop(SkillArgs args)
    {
        if (args == null)
        {
            return(false);
        }

        OnLeave(args);

        return(true);
    }
Example #23
0
    protected bool RunningChild(SkillArgs args)
    {
        for (int idx = 0; idx < childList.Count; idx++)
        {
            if (!childList[idx].OnEntry(args))
            {
                return(false);
            }
        }

        return(true);
    }
Example #24
0
        public void BindCarrier(Transform Carrier, SkillArgs Args, Action <SkillArgs> OnUsed)
        {
            if (Carrier_ != null)
            {
                Dispose();
            }

            Carrier_ = Carrier;
            Args_    = Args;
            OnUsed_  = OnUsed;
            OnBindCarrier();
        }
Example #25
0
    public override bool OnStop(SkillArgs args)
    {
        if (!base.OnStop(args))
        {
            return(false);
        }

        TimerManager.Instance.RemoveTimer(string.Format("CombatFlow_{0}", args.Index));

        childList[args.FlowIndex].OnStop(args);

        return(true);
    }
Example #26
0
        public override bool Execute(SkillArgs Args)
        {
            var Offset = MathHelper.RandVec2(100);

            var Npc = NpcManager.AddNpc(Args.Skill.Name, Configure.CoreBasePosition + Offset, CombatTeam.A, 2,
                                        NpcManager.GenerateInitAttr(200, 200, 0, 100, 10, 10, 0, 30, 30));

            Npc.Skill.AddNpcSkill(2006);         // 减速陷阱-主动
            Npc.Skill.AddNpcSkill(2009);         // 嘲讽-主动
            Npc.Skill.AddNpcSkill(2010);         // 分身-主动
            Npc.Skill.AddPassiveSkill(3001, -1); // 荆棘-被动
            return(true);
        }
Example #27
0
    public override bool OnEntry(SkillArgs args)
    {
        if (!base.OnEntry(args))
        {
            return(false);
        }

        if (!string.IsNullOrEmpty(m_action_name))
        {
            args.Owner.PlayAction(m_action_name);
        }

        return(true);
    }
Example #28
0
        public override bool Execute(SkillArgs Args)
        {
            var Master = Args.Master;

            if (Master == null)
            {
                return(false);
            }

            var Slave = NpcManager.AddNpc($"{Master.Name}_clone", Master.Position + MathHelper.RandVec2(100), Master.Team, Master.Scale.x, Master.Data.Attr.GetValues());

            Slave.Actor.SetDirection(Master.Actor.Direction);
            return(true);
        }
Example #29
0
    public override bool OnEntry(SkillArgs args)
    {
        if (!base.OnEntry(args))
        {
            return(false);
        }

        for (int idx = 0; idx < childList.Count; idx++)
        {
            childList[idx].OnEntry(args);
        }

        return(true);
    }
Example #30
0
    public override bool OnEntry(SkillArgs args)
    {
        if (!base.OnEntry(args))
        {
            return(false);
        }

        RunningChild(args, "StartPut");

        // 2、开定时器
        TimerManager.Instance.AddOnceTimer(string.Format("FlowTime_{0}", args.Index), m_time_list[0], OnTimerCallback, args, 0);

        return(true);
    }