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="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="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); }