//회복 private void AddSkill_Energy(ref SkillSlot List) { CharacterStatus Orderstat; //스텟받아올 변수 Skill Energy = new Skill(Priority.ENERGY, "Energy"); //우선순위 = 가드, 이름 Guard설정 Energy.PassiveCount.Add("Switch", 0); //패시브카운트에 "RSPATTACK"추가 Energy.ActiveSkillSet(delegate(Skill skil) {//사용시 skil.GetOrder().DontDash = true; gameManager.ins.AnimationSetting(skil.Order, 0, CharacterAnim.AnimStasis.MANA); gameManager.ins.AnimationSetting(skil.Order, 1, CharacterAnim.AnimStasis.MANA); skil.PassiveCount["Switch"] = 1; });//액티브 스킬 사용 Energy.AddPassive(delegate(Skill skl) {//체크 Orderstat = gameManager.ins.UserStatus[skl.Order]; if (skl.PassiveCount["Switch"] == 1) { EffectManager.ins.EffectRun(skl.GetOrder().transform, Vector3.one, "Energy", false); CharacterAnim.ChangeAnimation(CharacterAnim.AnimStasis.MANA, skl.Order); Orderstat.CostPlus((int)(CostData.EnergyRecovery * gameManager.ins.TimingWeight[skl.Order])); SoundManager.ins.RunAudio("마나 채울때"); } }, "Decision");//시작시 발동 Energy.AddPassive(delegate(Skill skl) { if (skl.GetEnemy().Guard) { gameManager.ins.AnimationSetting(skl.Order, 1, CharacterAnim.AnimStasis.MANA); } } , "Hit"); Energy.AddPassive(delegate(Skill skl) { skl.GetOrder().DontDash = false; if (skl.PassiveCount["Switch"] == 1) { skl.PassiveCount["Switch"] = 0; } } , "End"); List.GetSlot("회복").SkillChange(Energy); }
//연속 private void AddSkill_Paper(ref SkillSlot List) {//위와 동일 CharacterStatus Orderstat; Skill NewSkill = new Skill(Priority.PAPER, "강"); NewSkill.PassiveCount.Add("RSPATTACK", Stop); NewSkill.PassiveCount.Add("Damage", DamageData.Strong); //패시브카운트에 "RSPATTACK"추가 NewSkill.PassiveCount.Add("Cost", CostData.Strong); //패시브카운트에 "Cost"추가 NewSkill.PassiveCount.Add("KnockBack", KnockBackData.Strong); //패시브카운트에 "KnockBack"추가 NewSkill.ActiveSkillSet(delegate(Skill skl) {//사용시 gameManager.ins.AnimationSetting(skl.Order, 0, CharacterAnim.AnimStasis.LATK); gameManager.ins.AnimationSetting(skl.Order, 1, CharacterAnim.AnimStasis.LATK); Debug.Log("CallThis - Skill_UseRock"); Orderstat = gameManager.ins.UserStatus[skl.Order]; skl.PassiveCount["RSPATTACK"] = Run; Orderstat.AttackType = Priority.PAPER; Orderstat.CostUse((int)skl.PassiveCount["Cost"]); SaveData.ins.AddData(SaveData.TYPE.PAPER, Orderstat.Controller, SaveData.Try, 1);//저장용 }); NewSkill.AddPassive(delegate(Skill skl) { //공격시 Orderstat = gameManager.ins.UserStatus[skl.Order]; if ((int)skl.PassiveCount["RSPATTACK"] == Run) //키누른게 이 함수가 맞는지 체크 { gameManager.ins.AnimationSetting(skl.Order, 2, CharacterAnim.AnimStasis.IDLE); DamageCalculator.ins.SetDamage((int)skl.PassiveCount["Damage"]); WallManager.ins.Move((int)(skl.PassiveCount["KnockBack"] * gameManager.ins.TimingWeight[skl.Order]), Orderstat.Enemy()); //벽이동 SaveData.ins.AddData(SaveData.TYPE.PAPER, Orderstat.Controller, SaveData.Success, 1); //저장용 skl.PassiveCount["RSPATTACK"] = Stop; } }, "Attack"); NewSkill.AddPassive(delegate(Skill skl) { Orderstat = gameManager.ins.UserStatus[skl.Order]; skl.PassiveCount["RSPATTACK"] = Stop; } , "End"); List.GetSlot("강").SkillChange(NewSkill); }
//압박 private void AddSkill_Rock(ref SkillSlot List) { CharacterStatus Orderstat; Skill NewSkill = new Skill(Priority.ROCK, "중"); //우선순위 = 압박, 이름 압박설정 NewSkill.PassiveCount.Add("RSPATTACK", Stop); //패시브카운트에 "RSPATTACK"추가 NewSkill.PassiveCount.Add("Damage", DamageData.Middle); //패시브카운트에 "RSPATTACK"추가 NewSkill.PassiveCount.Add("Cost", CostData.Middle); //패시브카운트에 "Cost"추가 NewSkill.PassiveCount.Add("KnockBack", KnockBackData.Middle); //패시브카운트에 "KnockBack"추가 NewSkill.ActiveSkillSet(delegate(Skill skl) {//사용시 gameManager.ins.AnimationSetting(skl.Order, 0, CharacterAnim.AnimStasis.MATK); gameManager.ins.AnimationSetting(skl.Order, 1, CharacterAnim.AnimStasis.MATK); Debug.Log("CallThis - Skill_UseRock"); Orderstat = gameManager.ins.UserStatus[skl.Order]; skl.PassiveCount["RSPATTACK"] = Run; Orderstat.AttackType = Priority.ROCK; Orderstat.CostUse((int)skl.PassiveCount["Cost"]); //코스트4 SaveData.ins.AddData(SaveData.TYPE.ROCK, Orderstat.Controller, SaveData.Try, 1); //저장용 }); //액티브 스킬 사용 NewSkill.AddPassive(delegate(Skill skl) { //공격시 Orderstat = gameManager.ins.UserStatus[skl.Order]; if ((int)skl.PassiveCount["RSPATTACK"] == Run) //키누른게 이 함수가 맞는지 체크 { gameManager.ins.AnimationSetting(skl.Order, 2, CharacterAnim.AnimStasis.IDLE); DamageCalculator.ins.SetDamage((int)skl.PassiveCount["Damage"]); //데미지 5 WallManager.ins.Move((int)(skl.PassiveCount["KnockBack"] * gameManager.ins.TimingWeight[skl.Order]), Orderstat.Enemy()); //벽이동 SaveData.ins.AddData(SaveData.TYPE.ROCK, Orderstat.Controller, SaveData.Success, 1); //저장용 } skl.PassiveCount["RSPATTACK"] = Stop; }, "Attack"); //공격시 발동 NewSkill.AddPassive(Skill_UseRSPEnd, "End"); //종료시 발동 List.GetSlot("중").SkillChange(NewSkill); //인자로 받은 리스트에 추가 }
//가드 private void AddSkill_Guard(ref SkillSlot List) { CharacterStatus Orderstat; //스텟받아올 변수 Skill guard = new Skill(Priority.GUARD, "Guard"); //우선순위 = 가드, 이름 Guard설정 guard.PassiveCount.Add("Cost", CostData.Guard); //패시브카운트에 "Cost"추가 guard.ActiveSkillSet(delegate(Skill skil) {//사용시 skil.GetOrder().DontDash = true; gameManager.ins.AnimationSetting(skil.Order, 0, CharacterAnim.AnimStasis.GUARD); gameManager.ins.AnimationSetting(skil.Order, 1, CharacterAnim.AnimStasis.GUARD); Orderstat = gameManager.ins.UserStatus[skil.Order]; SaveData.ins.AddData(SaveData.TYPE.GUARD, Orderstat.Controller, SaveData.Try, 1); Orderstat.Guard = true; Orderstat.AttackType = -1; Orderstat.CostUse((int)skil.PassiveCount["Cost"]); //코스트4 }); //액티브 스킬 사용 guard.AddPassive(delegate(Skill skil) { //맞았을떄 Orderstat = gameManager.ins.UserStatus[skil.Order]; if (Orderstat.Guard) { gameManager.ins.AnimationSetting(skil.Order, 1, CharacterAnim.AnimStasis.GUARD); SaveData.ins.AddData(SaveData.TYPE.GUARD, Orderstat.Controller, SaveData.Success, 1); if (Orderstat.WallDistance == 0) { if (Random.Range(1, 10) == 1) { float BlockPer = 0.5f - (1 - gameManager.ins.TimingWeight[skil.Order]); BlockPer = BlockPer < 0 ? 0 : BlockPer; DamageCalculator.ins.AddDamage("Multiple", BlockPer, "GuardBlock"); } } else { float BlockPer = 1 - gameManager.ins.TimingWeight[skil.Order]; BlockPer = BlockPer < 0 ? 0 : BlockPer; DamageCalculator.ins.AddDamage("Multiple", BlockPer, "GuardBlock"); } } }, "Hit"); //피격시 발동 guard.AddPassive(delegate(Skill skl) {//체크 Orderstat = gameManager.ins.UserStatus[skl.Order]; if (Orderstat.Guard) { CharacterAnim.ChangeAnimation(CharacterAnim.AnimStasis.GUARD, skl.Order); } }, "Decision"); //시작시 발동 guard.AddPassive(delegate(Skill skl) { //사후처리 skl.GetOrder().DontDash = false; Orderstat = gameManager.ins.UserStatus[skl.Order]; if (Orderstat.Guard) { Orderstat.Guard = false; } }, "Start");//시작시 발동 List.GetSlot("가드").SkillChange(guard); }