Пример #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="skill">使用的技能</param>
 /// <param name="isDelay">是否要蓄力,默认不需要</param>
 public void Attack(Global.SkillType skill)
 {
     //判断技能是否可以释放
     if (!_Skills[skill].CanUseSkill())
     {
         _Skills[skill].ExcutedSkill(null);
         return;
     }
     if (_Skills.ContainsKey(skill))
     {
         //检查技能是否正在蓄力
         if (_Skills[skill].IsDelayTurn())
         {
             _Skills[skill].ExcutedSkill(null);
         }
         else
         {
             //首先去除技能的消耗
             _Skills[skill].Cost();
             //检查技能是否需要蓄力
             if (_Skills[skill].MaxDelayTurn > 0)
             {
                 _Skills[skill].CurrentDelayTurn = _Skills[skill].MaxDelayTurn;
                 _Skills[skill].ExcutedSkill(null);
             }
             else
             {
                 _Skills[skill].ExcuteSkill(BattleController.Instance.SkillTarget(this, _Skills[skill].TargetType));
             }
         }
     }
 }
Пример #3
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       = "技能描述";
 }
Пример #4
0
 /// <summary>
 /// 被一个英雄使用一个技能攻击之后的防守
 /// </summary>
 /// <param name="skill">使用的技能</param>
 /// <param name="attacker">攻击者</param>
 public void Defense(Global.SkillType skill, HeroMono attacker)
 {
     //防御的时候是判断技能属于物理还是防御,然后叠加,然后检测是否有技能对此攻击技能有影响,还有buff的影响
     SkillController.Instance.DefenseSkill(attacker, this, attacker._Skills[skill]);
 }
Пример #5
0
 /// <summary>
 /// 不做任何判断直接执行一个技能
 /// </summary>
 /// <param name="skill"></param>
 public void ExcuteSkill(Global.SkillType skill)
 {
     _Skills[skill].ExcuteSkill(BattleController.Instance.SkillTarget(this, _Skills[skill].TargetType));
 }