Пример #1
0
        public Skill(string[] temps)
        {
            int offset = 0;

            ID               = temps[offset].ToString(); offset++;
            Name             = temps[offset].ToString(); offset++;
            Ico              = temps[offset].ToString(); offset++;
            SkillType        = (Global.SkillType) int.Parse(temps[offset]); offset++;
            SkillMono        = temps[offset].ToString(); offset++;
            SkillEndDelay    = float.Parse(temps[offset].ToString()); offset++;
            IsPassiveSkill   = temps[offset].ToString() == "0" ? false : true; offset++;
            SkillEffectPaths = new List <string>();
            SkillEffectPaths.AddRange(temps[offset].ToString().Split(new string[] { "|" }, System.StringSplitOptions.RemoveEmptyEntries)); offset++;
            ActiveState       = (Global.BuffActiveState) int.Parse(temps[offset]); offset++;
            TargetType        = (Global.SkillTargetType) int.Parse(temps[offset]); offset++;
            Level             = int.Parse(temps[offset]); offset++;
            CostHeroProperty  = new HeroProperty(temps[offset]); offset++;
            DelayTurn         = int.Parse(temps[offset]); offset++;
            CauseHeroProperty = new HeroProperty(temps[offset]); offset++;
            HurtHeroProperty  = new HeroProperty(temps[offset]); offset++;
            CriticalChance    = int.Parse(temps[offset]); offset++;
            SkillBuff         = new List <Buff>();
            string[] buffs = temps[offset].ToString().Split(';'); offset++;
            for (int i = 0; i < buffs.Length; i++)
            {
                string[] bf = buffs[i].Split('|');
                if (bf.Length == 2)
                {
                    SkillBuff.Add(new Buff(bf[0], int.Parse(bf[1])));
                }
            }
            Description = temps[offset].ToString(); offset++;
        }
Пример #2
0
 /// <summary>
 /// 编辑器使用的构造函数
 /// </summary>
 /// <param name="ID">ID</param>
 /// <param name="Level">等级</param>
 public Skill(string ID, int Level)
 {
     this.ID                = ID;
     this.Level             = Level;
     this.Name              = "新技能";
     this.Ico               = "";
     this.SkillType         = Global.SkillType.Physic;
     this.SkillMono         = "BaseSkill";
     this.SkillEndDelay     = 0f;
     this.IsPassiveSkill    = false;
     this.SkillEffectPaths  = new List <string>();
     this.ActiveState       = Global.BuffActiveState.Actioning;
     this.TargetType        = Global.SkillTargetType.None;
     this.CostHeroProperty  = new HeroProperty();
     this.DelayTurn         = 0;
     this.CauseHeroProperty = new HeroProperty();
     this.HurtHeroProperty  = new HeroProperty();
     this.CriticalChance    = 0;
     this.SkillBuff         = new List <Buff>();
     this.Description       = "技能描述";
 }
Пример #3
0
        /// <summary>
        /// 获取当前技能的目标对象列表
        /// </summary>
        /// <param name="attacker">技能发起者</param>
        /// <param name="skillTarget">技能目标类型</param>
        /// <returns>返回目标对象列表</returns>
        public List <HeroMono> SkillTarget(HeroMono attacker, Global.SkillTargetType skillTarget)
        {
            List <HeroMono> result = new List <HeroMono>();

            switch (skillTarget)
            {
            case Global.SkillTargetType.None:
                break;

            case Global.SkillTargetType.OneEnemy:
                result.AddRange(GetAliveTarget(!attacker.IsPlayerHero, 1));
                break;

            case Global.SkillTargetType.TwoEnemy:
                result.AddRange(GetAliveTarget(!attacker.IsPlayerHero, 2));
                break;

            case Global.SkillTargetType.ThreeEnemy:
                result.AddRange(GetAliveTarget(!attacker.IsPlayerHero, 3));
                break;

            case Global.SkillTargetType.FourEnemy:
                result.AddRange(GetAliveTarget(!attacker.IsPlayerHero, 4));
                break;

            case Global.SkillTargetType.FiveEnemy:
                result.AddRange(GetAliveTarget(!attacker.IsPlayerHero, 5));
                break;

            case Global.SkillTargetType.AllEnemy:
                if (attacker.IsPlayerHero)
                {
                    result.AddRange(GetEnemyTeamAlive());
                }
                else
                {
                    result.AddRange(GetPlayerTeamAlive());
                }
                break;

            case Global.SkillTargetType.Self:
                result.Add(attacker);
                break;

            case Global.SkillTargetType.OneSelf:
                result.AddRange(GetAliveTarget(attacker.IsPlayerHero, 1));
                break;

            case Global.SkillTargetType.TwoSelf:
                result.AddRange(GetAliveTarget(attacker.IsPlayerHero, 2));
                break;

            case Global.SkillTargetType.ThreeSelf:
                result.AddRange(GetAliveTarget(attacker.IsPlayerHero, 3));
                break;

            case Global.SkillTargetType.FourSelf:
                result.AddRange(GetAliveTarget(attacker.IsPlayerHero, 4));
                break;

            case Global.SkillTargetType.FiveSelf:
                result.AddRange(GetAliveTarget(attacker.IsPlayerHero, 5));
                break;

            case Global.SkillTargetType.AllSelf:
                if (attacker.IsPlayerHero)
                {
                    result.AddRange(GetPlayerTeamAlive());
                }
                else
                {
                    result.AddRange(GetEnemyTeamAlive());
                }
                break;

            case Global.SkillTargetType.OneEnemyWithDead:
                result.AddRange(GetTarget(!attacker.IsPlayerHero, 1));
                break;

            case Global.SkillTargetType.TwoEnemyWithDead:
                result.AddRange(GetTarget(!attacker.IsPlayerHero, 2));
                break;

            case Global.SkillTargetType.ThreeEnemyWithDead:
                result.AddRange(GetTarget(!attacker.IsPlayerHero, 3));
                break;

            case Global.SkillTargetType.FourEnemyWithDead:
                result.AddRange(GetTarget(!attacker.IsPlayerHero, 4));
                break;

            case Global.SkillTargetType.FiveEnemyWithDead:
                result.AddRange(GetTarget(!attacker.IsPlayerHero, 5));
                break;

            case Global.SkillTargetType.AllEnemyWithDead:
                if (!attacker.IsPlayerHero)
                {
                    result.AddRange(_PlayerTeam);
                }
                else
                {
                    result.AddRange(_EnemyTeam);
                }
                break;

            case Global.SkillTargetType.OneSelfWithDead:
                result.AddRange(GetTarget(attacker.IsPlayerHero, 1));
                break;

            case Global.SkillTargetType.TwoSelfWithDead:
                result.AddRange(GetTarget(attacker.IsPlayerHero, 2));
                break;

            case Global.SkillTargetType.ThreeSelfWithDead:
                result.AddRange(GetTarget(attacker.IsPlayerHero, 3));
                break;

            case Global.SkillTargetType.FourSelfWithDead:
                result.AddRange(GetTarget(attacker.IsPlayerHero, 4));
                break;

            case Global.SkillTargetType.FiveSelfWithDead:
                result.AddRange(GetTarget(attacker.IsPlayerHero, 5));
                break;

            case Global.SkillTargetType.AllSelfWithDead:
                if (attacker.IsPlayerHero)
                {
                    result.AddRange(_PlayerTeam);
                }
                else
                {
                    result.AddRange(_EnemyTeam);
                }
                break;

            case Global.SkillTargetType.OneDeadEnemy:
                result.AddRange(GetDeadTarget(!attacker.IsPlayerHero, 1));
                break;

            case Global.SkillTargetType.TwoDeadEnemy:
                result.AddRange(GetDeadTarget(!attacker.IsPlayerHero, 2));
                break;

            case Global.SkillTargetType.ThreeDeadEnemy:
                result.AddRange(GetDeadTarget(!attacker.IsPlayerHero, 3));
                break;

            case Global.SkillTargetType.FourDeadEnemy:
                result.AddRange(GetDeadTarget(!attacker.IsPlayerHero, 4));
                break;

            case Global.SkillTargetType.FiveDeadEnemy:
                result.AddRange(GetDeadTarget(!attacker.IsPlayerHero, 5));
                break;

            case Global.SkillTargetType.AllDeadEnemy:
                if (!attacker.IsPlayerHero)
                {
                    result.AddRange(GetPlayerTeamDead());
                }
                else
                {
                    result.AddRange(GetEnemyTeamDead());
                }
                break;

            case Global.SkillTargetType.OneDeadSelf:
                result.AddRange(GetDeadTarget(attacker.IsPlayerHero, 1));
                break;

            case Global.SkillTargetType.TwoDeadSelf:
                result.AddRange(GetDeadTarget(attacker.IsPlayerHero, 2));
                break;

            case Global.SkillTargetType.ThreeDeadSelf:
                result.AddRange(GetDeadTarget(attacker.IsPlayerHero, 3));
                break;

            case Global.SkillTargetType.FourDeadSelf:
                result.AddRange(GetDeadTarget(attacker.IsPlayerHero, 4));
                break;

            case Global.SkillTargetType.FiveDeadSelf:
                result.AddRange(GetDeadTarget(attacker.IsPlayerHero, 5));
                break;

            case Global.SkillTargetType.AllDeadSelf:
                if (attacker.IsPlayerHero)
                {
                    result.AddRange(GetPlayerTeamDead());
                }
                else
                {
                    result.AddRange(GetEnemyTeamDead());
                }
                break;
            }
            return(result);
        }