//도발 '' public void Skill_DefaultPassive(ref SkillSlot List)//게임시스템패시브(치명타, 방어추뎀, 다운추뎀) { CharacterStatus OrderStat; Skill Critical = new Skill("Critical");//치명타 Critical.PassiveCount.Add("Critical", ProbabilityData.Critical); Critical.PassiveCount.Add("BaseCritical", ProbabilityData.Critical); Critical.SetCharacter(List.GetComponent <CharacterStatus>().Controller); Critical.AddPassive( delegate(Skill skil) { OrderStat = gameManager.ins.UserStatus[skil.Order]; if (gameManager.ins.UserStatus[OrderStat.Enemy()].WallDistance == 0) { skil.PassiveCount["Critical"] += 80; } if (Random.Range(0, (100 / skil.PassiveCount["Critical"])) < 1) //5% { Debug.Log("크리티컬"); DamageCalculator.ins.AddDamage(DamageCalculator.MULTIPLE_s, 1.5f, "Critical"); SaveData.ins.AddData(SaveData.TYPE.CRITICAL, skil.Order, 1); } if (gameManager.ins.UserStatus[OrderStat.Enemy()].WallDistance == 0) { skil.PassiveCount["Critical"] -= 80; } } , "Attack"); List.AddPassiveSlot(Critical); Skill SuperArmor = new Skill("SuperArmor"); SuperArmor.SetCharacter(List.GetComponent <CharacterStatus>().Controller); SuperArmor.PassiveCount.Add("isHit", 0); SuperArmor.AddPassive(delegate(Skill skill) { skill.PassiveCount["isHit"] = 1; }, "Hit"); SuperArmor.AddPassive(delegate(Skill skill) { if (gameManager.ins.UserStatus[skill.Order].isSuperArmor && skill.PassiveCount["isHit"] == 1) { CharacterAnim.ChangeAnimation(CharacterAnim.AnimStasis.LAND, skill.Order); WallManager.ins.ResetPivot(); } skill.PassiveCount["isHit"] = 0; }, "WallSetting"); List.AddPassiveSlot(SuperArmor); }
//회복 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); //인자로 받은 리스트에 추가 }
Skill Golliath_Passive(int Order) { //증뎀10% , 피격데미지 10%감소 Skill SuperMuscle = new Skill("SuperMuscle"); SuperMuscle.SetCharacter(Order); SuperMuscle.PassiveCount.Add("DamageDecrease", 0.9f); SuperMuscle.PassiveCount.Add("DamageIncrease", 1.1f); SuperMuscle.AddPassive( delegate(Skill skil) { DamageCalculator.ins.AddDamage("Multiple", skil.PassiveCount["DamageDecrease"], "DamageDecrease"); }, "Hit"); SuperMuscle.AddPassive( delegate(Skill skil) { DamageCalculator.ins.AddDamage("Multiple", skil.PassiveCount["DamageIncrease"], "DamageIncrease"); }, "Attack"); ; return(SuperMuscle); }
Skill Golliath_Passive(int Order) { Skill MagmaPunch = new Skill("MagmaPunch"); MagmaPunch.SetCharacter(Order); MagmaPunch.PassiveCount.Add("ManaDamage", 0f); MagmaPunch.AddPassive( delegate(Skill skil) { if (MagmaPunch.PassiveCount.ContainsKey("ManaDamage")) { MagmaPunch.PassiveCount["ManaDamage"] = (float)skil.GetOrder().Cost / ((float)skil.GetOrder().MaxCost *2); } }, "KeyCheck"); MagmaPunch.AddPassive( delegate(Skill skil) { DamageCalculator.ins.AddDamage(DamageCalculator.MULTIPLE_s, 1f + MagmaPunch.PassiveCount["ManaDamage"], "ManaPunch"); }, "Attack"); ; return(MagmaPunch); }
public Skill StFighter_Passive(int Order) { //적이 가드면 50%확률로 치명타 Skill PerpectCounter = new Skill("PerpectCounter");//초기화 Debug.Log("스트리트 파이터 스킬 초기화"); PerpectCounter.SetCharacter(Order); PerpectCounter.AddPassive( delegate(Skill skil) { Skill sk = SkillManager.ins.GetSkill(Order, "Critical"); CharacterStatus EnemyStat = skil.GetEnemy(); Debug.Log("스트리트 파이터 스킬 들어옴"); if (EnemyStat.Guard) { if (UnityEngine.Random.Range(0, 2) == 0) //50% { Debug.Log("크리100%"); EnemyStat.Guard = false; sk.PassiveCount["Critical"] = 100; } } CharacterStatus OrderStat = gameManager.ins.UserStatus[Order]; }, "Decision"); PerpectCounter.AddPassive( delegate(Skill skil) { Skill sk = SkillManager.ins.GetSkill(Order, "Critical"); if (sk.PassiveCount["Critical"] == 100) { sk.PassiveCount["Critical"] = sk.PassiveCount["MaxCritical"]; } }, "End"); return(PerpectCounter); }
public Skill Assassin_Passive(int Order) { //5콤보시 1라이프 Skill BigCounter = new Skill("BigCounter");//초기화 BigCounter.SetCharacter(Order); BigCounter.AddPassive( delegate(Skill skil) { int Enemy = gameManager.ins.UserStatus[Order].Enemy(); SkillSlot OrderSlot = gameManager.ins.UserSlot[Order]; if (gameManager.ins.UserSlot[Enemy].GetPriority() == Priority.PAPER) { DamageCalculator.ins.AddDamage(DamageCalculator.PLUS_s, DamageData.Strong - DamageData.Weak, "SuperWeak"); } }, "Attack"); ; return(BigCounter); }
public Skill Sw_Passive(int Order) { //다운무효 , 피격데미지 10%감소 Skill Indomitable = new Skill("Indomitable"); Indomitable.SetCharacter(Order); CharacterStatus OrderStat; Indomitable.AddPassive( delegate(Skill skil) { OrderStat = skil.GetOrder(); if (OrderStat.Guard) { OrderStat.CostPlus(20); } }, "Hit"); return(Indomitable); }
public Skill Monk_Passive(int Order) { //압박 성공시키면 다음공격 50%추뎀 Skill FlowForce = new Skill("FlowForce");//초기화 FlowForce.SetCharacter(Order); FlowForce.AddPassive( delegate(Skill skil) { Debug.Log("몽크스킬실행"); SkillSlot OrderSlot = gameManager.ins.UserSlot[Order]; if (OrderSlot.GetPriority() == Priority.SCISSOR) { skil.GetOrder().CostPlus(10); } } , "Decision"); return(FlowForce); }
public Skill Cat_Passive(int Order) { //5콤보시 1라이프 Skill Blooding = new Skill("Blooding");//초기화 Blooding.SetCharacter(Order); Blooding.AddPassive( delegate(Skill skil) { int Enemy = gameManager.ins.UserStatus[Order].Enemy(); SkillSlot OrderSlot = gameManager.ins.UserSlot[Order]; if (gameManager.ins.UserStatus[Enemy].Guard || OrderSlot.GetPriority() != Priority.PAPER) { return; } float PowerDamage = 30; SkillManager.ins.DebuffSkillSet(Enemy, DebuffSkillList.LIST.Blooding, 3, PowerDamage); }, "Attack"); ; return(Blooding); }
//가드 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); }