Exemplo n.º 1
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);
    }
Exemplo n.º 2
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);
    }
Exemplo n.º 3
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);     //인자로 받은 리스트에 추가
    }
Exemplo n.º 4
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);
    }