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++; }
/// <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)); } } } }
/// <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 = "技能描述"; }
/// <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]); }
/// <summary> /// 不做任何判断直接执行一个技能 /// </summary> /// <param name="skill"></param> public void ExcuteSkill(Global.SkillType skill) { _Skills[skill].ExcuteSkill(BattleController.Instance.SkillTarget(this, _Skills[skill].TargetType)); }