Example #1
0
    //도발 ''


    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);
    }
Example #2
0
    //회복
    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);
    }
Example #3
0
    //연속
    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);
    }
Example #4
0
    //압박
    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);
    }
Example #6
0
    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);
    }
Example #9
0
    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);
    }
Example #10
0
    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);
    }
Example #11
0
    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);
    }
Example #12
0
    //가드
    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);
    }