Example #1
0
    public static Song SongJsonToSong(SongJson songJson)
    {
        //Notes
        List <Note> notes = new List <Note>();

        if (songJson.Notes != null)
        {
            foreach (NoteJson noteJson in songJson.Notes)
            {
                Note.Direction direction = GetDirection(noteJson.Key);
                notes.Add(new Note(direction, noteJson.Beat, noteJson.Duration));
            }
        }

        //Effects
        List <Effect> effects = new List <Effect>();

        if (songJson.Effects != null)
        {
            foreach (EffectJson effectJson in songJson.Effects)
            {
                Effect.EffectType type = GetEffect(effectJson.Effect);
                effects.Add(new Effect(type, effectJson.Beat, effectJson.Scale));
            }
        }

        //Audio
        AudioClip clip = AssetLoader.GetClipFromFile(songJson.Backtrack);

        return(new Song(notes, effects, clip, songJson.BPM, songJson.NoteSpeed));
    }
Example #2
0
        public static bool CanUseEffect(Effect.EffectType effectType)
        {
            bool canUseInPhase = CanUseEffectInThisPhase(effectType);
            if (!canUseInPhase)
            {
                return false;
            }
            if (effectType == Effect.EffectType.AegisOfZeus_IgnoreDeadliness_single)
            {
                if (Game.instance.Casualties == 0)
                {
                    return false;
                }
            }
            
            if (effectType == Effect.EffectType.HelmOfHades_MoveMonsterToDiscardPile_single)
            {
                List<OneCardManager> enclist = Visual.instance.GetCurrentEncounter();
                foreach (var VARIABLE in enclist)
                {
                    if (VARIABLE.cardAsset.type == CardType.monster)
                    {
                        return true;
                    }
                }
                return false;
            }

            if (effectType == Effect.EffectType.OrpheusLyre_StopLevelUpMonsterInVictoryPile_single)
            {
                if (Game.instance.winningPile.Count > 0)
                {
                    return true;
                }

                return false;
            }

            if (effectType == Effect.EffectType.ApolloBow_RollDice6_single)
            {
                List<OneCardManager> encList = Visual.instance.GetCurrentEncounter();
                foreach (var VARIABLE in encList)
                {


                    if (VARIABLE.cardAsset.resolved == ResolvedType.notresolved)
                    {
                        if (VARIABLE.cardAsset.type == CardType.monster || VARIABLE.cardAsset.type == CardType.treasure)
                        {
                            return true;
                        }
                    }
                }

                return false;
            }
            
            
            return true;
        }
        private static void raiseNewEffect(Effect.EffectType effectType)
        {
            if (Effect.arrayOfViewableEffects.Contains(effectType))
            {
                Effect      effect = new Effect(effectType);
                EffectActor actor  = EffectActor.CreateNewEffectActor(effect).GetComponent <EffectActor>();
                actor.ShowHalo();
            }

            EffectEvents.DoEffect(effectType);
        }
Example #4
0
        private static bool HaveEffectByType(Effect.EffectType effectType)
        {
            foreach (Effect effect in Game.instance.CardEffects)
            {
                if (effect.Type == effectType)
                {
                    return true;
                }
            }

            return false;
        }
Example #5
0
    public void SelectEffect(Effect.EffectType effectType, int effectPower)
    {
        switch (effectType)
        {
        case Effect.EffectType.ChangeLife:

            m_playerUIController.ChangeLife(effectPower);
            break;

        case Effect.EffectType.ChangeInfection:
            m_playerUIController.ChangeInfection(effectPower);
            break;
        }
    }
Example #6
0
 public Skill(Skill skill)
 {
     id            = skill.id;
     name          = skill.name;
     description   = skill.description;
     currCooldown  = 0;
     cooldown      = skill.cooldown;
     iconName      = skill.iconName;
     boundaryRange = skill.boundaryRange;
     duration      = skill.duration;
     targetLimit   = skill.targetLimit;
     effectType    = skill.effectType;
     successChance = skill.successChance;
 }
Example #7
0
 public Skill(int Id, string Name, string Description, int Cooldown, string IconName, int BoundaryRange, int Duration, TargetType TargetLimit, Effect.EffectType EffectType, float SuccessChance = 1.0f)
 {
     id            = Id;
     name          = Name;
     description   = Description;
     currCooldown  = 0;
     cooldown      = Cooldown;
     iconName      = IconName;
     boundaryRange = BoundaryRange;
     duration      = Duration;
     targetLimit   = TargetLimit;
     effectType    = EffectType;
     successChance = SuccessChance;
 }
        private static void removeSingleEffects()
        {
            EffectActor[] listOfEffectActors = Visual.instance.EffectGroup.GetComponentsInChildren <EffectActor>();
            foreach (EffectActor effectActor in listOfEffectActors)
            {
                Effect.EffectType t = effectActor.effect.Type;
                if (Effect.contEffects.Contains(t))
                {
                    continue;
                }

                GameManager.instance.StartCoroutine(RemoveSingleEffectCoroutine(effectActor));
            }
        }
Example #9
0
 public void RemoveEffect(GameObject source, Effect.EffectType effectType)
 {
     switch (effectType)
     {
     case Effect.EffectType.VelocityChange:
         for (int i = 0; i < velocityChange.Count; i++)
         {
             if (velocityChange[i].source == source)
             {
                 velocityChange.RemoveAt(i);
                 i--;
             }
         }
         break;
     }
 }
Example #10
0
        public static void DoEffect(Effect.EffectType effectType)
        {
            if (effectType == Effect.EffectType.PansFlute_DiscardTop2Cards_single)
            {
                GameManager.instance.StartCoroutine(PansFluteEffectCoroutine());
            }


            if (effectType == Effect.EffectType.WingedSandals_ReturnAdventureCard_single)
            {
                new CommmandDiscardCurrentEncounter().AddToQueue();
                new GoToNextGamePhase(GamePhase.StartNewTurn).AddToQueue();
            }

            if (effectType == Effect.EffectType.Cornucopia_Recover2Crew_single)
            {
                GameLogicEvents.eventRestoreCrew.Invoke(effectType);
            }
        }
        public static void RestoreCrew(Effect.EffectType effectType)
        {
            int treasureCrewValue = 0;

            if (effectType == Effect.EffectType.Ambrosia_Recover3Crew_single)
            {
                treasureCrewValue = 3;
            }

            if (effectType == Effect.EffectType.Cornucopia_Recover2Crew_single)
            {
                treasureCrewValue = 2;
            }


            int newCrewValue = Game.instance.CrewNumber + treasureCrewValue;

            newCrewValue             = Math.Min(newCrewValue, GameLogic.GetCrewStartingCount());
            Game.instance.CrewNumber = newCrewValue;
        }
Example #12
0
    public virtual void AddEffect(Effect effect)
    {
        Effect.EffectType checkingType = effect.effectType;

        if (effect.isStackable)
        {
            if (effect.maxStacksCount > effects.Count(x => x.effectType == checkingType))
            {
                goto Adding; //перепрыгиваем к добавлению
            }
            else
            {
                return;
            }
        }

        Effect similarTypeEffect = effects.Find(x => x.effectType == checkingType);

        if (similarTypeEffect)
        {
            if (similarTypeEffect.strength > effect.strength)
            {
                return;
            }
            else if (!effect.isRepeatable)
            {
                effects.Remove(similarTypeEffect);
            }
            else
            {
                similarTypeEffect.Duration = effect.Duration;
                return;
            }
        }

Adding: //добавление эффекта в список и упорядочивание по приоритету
        effects.Add(effect.Clone());
        effects.OrderBy(ef => ef.priority);
    }
 private static void RestoreCrewByCard(Effect.EffectType type)
 {
     GameLogicModifyGame.RestoreCrew(type);
     EffectEvents.ShowRestoreCrew();
     Visual.instance.UpdateCrewCounter();
 }
Example #14
0
    //actorを指定すると素早さ補正を反映したアクションを返す
    public static Action getActionByName(string actionName = "", BattleCharacter actor = null)
    {
        // new Effect文が長くなるのでここで転記しておく(ダサいけど多分読みやすくなるから許して)
        Effect.TargetType TARGET_SINGLE        = Effect.TargetType.TARGET_SINGLE;
        Effect.TargetType TARGET_SINGLE_RANDOM = Effect.TargetType.TARGET_SINGLE_RANDOM;
        Effect.TargetType TARGET_ALL           = Effect.TargetType.TARGET_ALL;
        Effect.TargetType ME = Effect.TargetType.ME;
        //Effect.TargetType ALLY_SINGLE_RANDOM = Effect.TargetType.ALLY_SINGLE_RANDOM;
        Effect.TargetType ALLY_ALL = Effect.TargetType.ALLY_ALL;

        Effect.EffectType DAMAGE = Effect.EffectType.DAMAGE;
        Effect.EffectType HEAL   = Effect.EffectType.HEAL;
        //Effect.EffectType BUFF = Effect.EffectType.BUFF;

        string description;             //上に出る説明
        int    waitTime;                //WT(発動にかかる時間)
        int    power = 1;               //基礎威力
        int    cost;                    //消費MP

        Action.Rarity           rarity; //レアリティ(コモン→レア→エピック→レジェンダリー)
        List <Effect>           effects    = new List <Effect>();
        List <Effect.Attribute> attributes = new List <Effect.Attribute>();

        switch (actionName)
        {
        case "":
            Debug.LogWarning("getActionByNameの空文字コンストラクタが呼ばれてる");
            return(new Action());

        case "攻撃":
            description = "通常の攻撃を行う。";
            waitTime    = 12;
            power       = 35;
            cost        = 0;
            rarity      = Action.Rarity.COMMON;
            effects.Add(new Effect(actionName, TARGET_SINGLE, power, DAMAGE));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "刺突":
            description = "すばやく敵を一突き。威力は大きくないが、隙が少ない。";
            waitTime    = 10;
            power       = 23;
            cost        = 0;
            rarity      = Action.Rarity.COMMON;
            effects.Add(new Effect(actionName, TARGET_SINGLE, power, DAMAGE));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "重撃":
            description = "大振りの一撃を加える。防御していない敵に対して非常に有効。";
            waitTime    = 18;
            power       = 131;
            cost        = 0;
            rarity      = Action.Rarity.COMMON;
            effects.Add(new Effect(actionName, TARGET_SINGLE, power, DAMAGE));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "双撃":
            description = "すばやく2連撃を行う。防御を崩したり詠唱妨害が得意。";
            waitTime    = 13;
            power       = 31;
            cost        = 0;
            rarity      = Action.Rarity.RARE;
            effects.Add(new Effect(actionName, TARGET_SINGLE, power, DAMAGE, 40));
            effects.Add(new Effect(actionName, TARGET_SINGLE, power, DAMAGE, 40));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "盾打":
            description = "障壁を1枚展開しつつ攻撃する。";
            waitTime    = 13;
            power       = 56;
            cost        = 0;
            rarity      = Action.Rarity.COMMON;
            effects.Add(new Effect(actionName, TARGET_SINGLE, power, DAMAGE));
            effects.Add(new Effect(actionName, ME, power, Buff.BuffID.GUARD));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "王衝":
            description = "3ターン目以降に威力が3倍となる一撃。そろそろ本気出す!";
            waitTime    = 12;
            power       = 30;
            cost        = 0;
            rarity      = Action.Rarity.EPIC;
            attributes.Add(Effect.Attribute.PETIT_KING);
            effects.Add(new Effect(actionName, TARGET_SINGLE, power, DAMAGE, 60, attributes));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "真王":
            description = "5ターン目以降に威力が7倍となる一撃。すべてを終わらせる時が来たようだな";
            waitTime    = 20;
            power       = 52;
            cost        = 0;
            rarity      = Action.Rarity.LEGENDARY;
            attributes.Add(Effect.Attribute.KING);
            effects.Add(new Effect(actionName, TARGET_SINGLE, power, DAMAGE, 60, attributes));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "王舞":
            description = "5ターン目以降威力7倍の7連撃。防壁を蹴散らす王者の突進。";
            waitTime    = 30;
            power       = 11;
            cost        = 0;
            rarity      = Action.Rarity.LEGENDARY;
            attributes.Add(Effect.Attribute.KING);
            effects.Add(new Effect(actionName, TARGET_SINGLE, (int)(power * 0.5), DAMAGE, 30, attributes));
            effects.Add(new Effect(actionName, TARGET_SINGLE, (int)(power * 0.6), DAMAGE, 30, attributes));
            effects.Add(new Effect(actionName, TARGET_SINGLE, (int)(power * 0.7), DAMAGE, 30, attributes));
            effects.Add(new Effect(actionName, TARGET_SINGLE, (int)(power * 0.8), DAMAGE, 30, attributes));
            effects.Add(new Effect(actionName, TARGET_SINGLE, (int)(power * 0.9), DAMAGE, 30, attributes));
            effects.Add(new Effect(actionName, TARGET_SINGLE, (int)(power * 1.1), DAMAGE, 30, attributes));
            effects.Add(new Effect(actionName, TARGET_SINGLE, (int)(power * 1.7), DAMAGE, 30, attributes));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "四爪":
            description = "ランダムな敵に合計4回攻撃を行う。一回ごとの威力は低い。";
            waitTime    = 13;
            power       = 14;
            cost        = 0;
            rarity      = Action.Rarity.RARE;
            effects.Add(new Effect(actionName, TARGET_SINGLE_RANDOM, power, DAMAGE, 30));
            effects.Add(new Effect(actionName, TARGET_SINGLE_RANDOM, power, DAMAGE, 30));
            effects.Add(new Effect(actionName, TARGET_SINGLE_RANDOM, power, DAMAGE, 30));
            effects.Add(new Effect(actionName, TARGET_SINGLE_RANDOM, power, DAMAGE, 30));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "大鎌":
            description = "大振りの攻撃で敵全体にダメージ。隙が大きいが威力も高い。";
            waitTime    = 14;
            power       = 61;
            cost        = 0;
            rarity      = Action.Rarity.COMMON;
            effects.Add(new Effect(actionName, TARGET_ALL, power, DAMAGE));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "火炎":
            description = "魔力の炎で敵単体に大ダメージ。魔法ダメージは防御を貫通する。";
            waitTime    = 14;
            power       = 82;
            cost        = 15;
            rarity      = Action.Rarity.COMMON;
            attributes.Add(Effect.Attribute.MAGIC);
            attributes.Add(Effect.Attribute.FIRE);
            effects.Add(new Effect(actionName, TARGET_SINGLE, power, DAMAGE, 60, attributes));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "治癒":
            description = "癒しの魔力を開放し、自身のHPを即座に(40+魔力Lv*16)程度回復する。";
            waitTime    = 14;
            power       = 40;
            cost        = 10;
            rarity      = Action.Rarity.COMMON;
            attributes.Add(Effect.Attribute.MAGIC);
            effects.Add(new Effect(actionName, ME, power, HEAL, 60, attributes));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "癒陣":
            description = "HPを50回復し、3ターンの間回復を続ける陣を生成。";
            waitTime    = 14;
            power       = 50;
            cost        = 25;
            rarity      = Action.Rarity.COMMON;
            attributes.Add(Effect.Attribute.MAGIC);
            effects.Add(new Effect(actionName, ME, power, Effect.EffectType.CONSTANTHEAL));
            effects.Add(new Effect(actionName, ME, power, Buff.BuffID.REGENERATE));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "防御":
            description = "物理障壁を周囲に展開し、次に受ける物理ダメージを50%以上軽減する。";
            waitTime    = 9;
            cost        = 0;
            rarity      = Action.Rarity.COMMON;
            effects.Add(new Effect(actionName, ME, power, Buff.BuffID.GUARD));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "双盾":
            description = "物理障壁を一度に2枚展開する。防壁の維持できる枚数は防御Lvで決まる。";
            waitTime    = 11;
            cost        = 10;
            rarity      = Action.Rarity.RARE;
            effects.Add(new Effect(actionName, ME, power, Buff.BuffID.GUARD));
            effects.Add(new Effect(actionName, ME, power, Buff.BuffID.GUARD));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "毒霧":
            description = "敵全体にわずかな魔法ダメージを与え、毒状態にする。";
            waitTime    = 12;
            power       = 24;
            cost        = 20;
            rarity      = Action.Rarity.COMMON;
            attributes.Add(Effect.Attribute.MAGIC);
            effects.Add(new Effect(actionName, TARGET_ALL, power, DAMAGE));
            effects.Add(new Effect(actionName, TARGET_ALL, power, Buff.BuffID.POISON));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "吸収":
            description = "敵一体の生命力に直接干渉し、一部を奪い取る。奪い取った分の半分を回復する。";
            waitTime    = 20;
            power       = 70;
            cost        = 20;
            rarity      = Action.Rarity.COMMON;
            attributes.Add(Effect.Attribute.MAGIC);
            effects.Add(new Effect(actionName, TARGET_SINGLE, power, DAMAGE, 60, attributes));
            effects.Add(new Effect(actionName, ME, power / 2, HEAL));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "雷光":
            description = "合計4回、ランダムな敵に強力な魔法ダメージを与える。";
            waitTime    = 27;
            power       = 85;
            cost        = 50;
            rarity      = Action.Rarity.EPIC;
            attributes.Add(Effect.Attribute.THUNDER);
            attributes.Add(Effect.Attribute.MAGIC);
            effects.Add(new Effect(actionName, TARGET_SINGLE_RANDOM, power, DAMAGE, 50, attributes));
            effects.Add(new Effect(actionName, TARGET_SINGLE_RANDOM, power, DAMAGE, 50, attributes));
            effects.Add(new Effect(actionName, TARGET_SINGLE_RANDOM, power, DAMAGE, 50, attributes));
            effects.Add(new Effect(actionName, TARGET_SINGLE_RANDOM, power, DAMAGE, 50, attributes));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "力溜":
            description = "しばらく筋力Lv+3。";
            waitTime    = 13;
            cost        = 20;
            rarity      = Action.Rarity.EPIC;
            effects.Add(new Effect(actionName, ME, power, Buff.BuffID.STRUP));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "集中":
            description = "しばらく魔力Lv+3。";
            waitTime    = 13;
            cost        = 20;
            rarity      = Action.Rarity.EPIC;
            effects.Add(new Effect(actionName, ME, power, Buff.BuffID.INTUP));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "響火":
            description = "槍に火の魔力をまとわせ、物理攻撃のあとに火属性ダメージを追加。";
            waitTime    = 13;
            cost        = 40;
            rarity      = Action.Rarity.EPIC;
            effects.Add(new Effect(actionName, ME, power, Buff.BuffID.ENCHANT_FIRE));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "加速":
            description = "しばらく速度Lv+3。";
            waitTime    = 13;
            cost        = 40;
            rarity      = Action.Rarity.EPIC;
            effects.Add(new Effect(actionName, ME, power, Buff.BuffID.SPDUP));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "幻閃":
            description = "ターン開始時に今ターゲットしている敵に対して攻撃。";
            waitTime    = 17;
            cost        = 20;
            rarity      = Action.Rarity.RARE;
            effects.Add(new Effect(actionName, ME, power, Buff.BuffID.ADDITIONAL_ATTACK));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "追幻":
            description = "ターン終了時にランダムな敵に対して強力な攻撃。";
            waitTime    = 18;
            cost        = 20;
            rarity      = Action.Rarity.RARE;
            effects.Add(new Effect(actionName, ME, power, Buff.BuffID.ADDITIONAL_ENDATTACK));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "幻閃起動":
            description = "幻閃による追撃。";
            waitTime    = 0;
            power       = 61;
            cost        = 0;
            rarity      = Action.Rarity.COMMON;
            effects.Add(new Effect(actionName, TARGET_SINGLE, power, DAMAGE));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "追幻起動":
            description = "追幻による追撃。";
            waitTime    = 0;
            power       = 129;
            cost        = 0;
            rarity      = Action.Rarity.COMMON;
            effects.Add(new Effect(actionName, TARGET_SINGLE_RANDOM, power, DAMAGE));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "衝撃":
            description = "魔力の塊をそのままぶつけて爆発させる。仕組みが単純なので高速に唱えられるが燃費が悪い。";
            waitTime    = 6;
            power       = 31;
            cost        = 15;
            rarity      = Action.Rarity.COMMON;
            attributes.Add(Effect.Attribute.MAGIC);
            effects.Add(new Effect(actionName, TARGET_SINGLE, power, DAMAGE, 60, attributes));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "破防":
            description = "気合(魔力)を入れて敵の防壁を全部破壊しつつ物理攻撃。";
            waitTime    = 14;
            power       = 77;
            cost        = 10;
            rarity      = Action.Rarity.RARE;
            attributes.Add(Effect.Attribute.REMOVE_SHIELD);
            effects.Add(new Effect(actionName, TARGET_SINGLE, power, DAMAGE, 60, attributes));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "魔槍":
            description = "魔力で体の動きをブーストして一撃を叩き込む。";
            waitTime    = 11;
            power       = 115;
            cost        = 15;
            rarity      = Action.Rarity.RARE;
            effects.Add(new Effect(actionName, TARGET_SINGLE, power, DAMAGE));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "残像":
            description = "ターン開始時に防壁を1枚追加。";
            waitTime    = 10;
            cost        = 20;
            rarity      = Action.Rarity.RARE;
            effects.Add(new Effect(actionName, ME, power, Buff.BuffID.AUTO_SHIELD));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "鏡射":
            description = "ターン終了時に現在ターゲットしている敵に魔法ダメージ。";
            waitTime    = 10;
            cost        = 10;
            rarity      = Action.Rarity.EPIC;
            effects.Add(new Effect(actionName, ME, power, Buff.BuffID.ADDITIONAL_MAGIC));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "鏡射起動":
            description = "鏡射による追撃。";
            waitTime    = 0;
            power       = 69;
            cost        = 0;
            rarity      = Action.Rarity.COMMON;
            attributes.Add(Effect.Attribute.MAGIC);
            effects.Add(new Effect(actionName, TARGET_SINGLE, power, DAMAGE, 60, attributes));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "凍結":
            description = "敵全体に強力な魔法ダメージを与える。";
            waitTime    = 16;
            power       = 65;
            cost        = 35;
            rarity      = Action.Rarity.RARE;
            attributes.Add(Effect.Attribute.MAGIC);
            effects.Add(new Effect(actionName, TARGET_ALL, power, DAMAGE, 90, attributes));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "烈風":
            description = "敵単体に強力な魔法ダメージを与える。";
            waitTime    = 12;
            power       = 101;
            cost        = 10;
            rarity      = Action.Rarity.RARE;
            attributes.Add(Effect.Attribute.MAGIC);
            effects.Add(new Effect(actionName, TARGET_SINGLE, power, DAMAGE, 60, attributes));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "瞬突":
            description = "すばやく正確な一撃を加える。";
            waitTime    = 9;
            power       = 51;
            cost        = 0;
            rarity      = Action.Rarity.RARE;
            effects.Add(new Effect(actionName, TARGET_SINGLE, power, DAMAGE, 60, attributes));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "獄炎":
            description = "敵全体に最高位の魔法ダメージを与える。";
            waitTime    = 26;
            power       = 215;
            cost        = 99;
            rarity      = Action.Rarity.LEGENDARY;
            attributes.Add(Effect.Attribute.MAGIC);
            effects.Add(new Effect(actionName, TARGET_ALL, power, DAMAGE, 60, attributes));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "霊祈":
            description = "ターン終了時にMPを回復。残りMPが少ないほど効果的。";
            waitTime    = 10;
            cost        = 20;
            rarity      = Action.Rarity.RARE;
            effects.Add(new Effect(actionName, ME, power, Buff.BuffID.REGENERATE_MP));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "集霊":
            description = "MPを40回復する。";
            waitTime    = 20;
            power       = 40;
            cost        = 0;
            rarity      = Action.Rarity.COMMON;
            effects.Add(new Effect(actionName, ME, power, Effect.EffectType.CONSTANTMPHEAL));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "高揚":
            description = "50Fの間、与えるダメージが2倍になる。";
            waitTime    = 15;
            cost        = 25;
            rarity      = Action.Rarity.COMMON;
            effects.Add(new Effect(actionName, ME, power, Buff.BuffID.EXALTED));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));


        //******************
        //敵限定アクション
        //******************
        case "ひっかき":
            description = "ねこのスタンダード攻撃。";
            waitTime    = 99;
            power       = 14;
            cost        = 0;
            rarity      = Action.Rarity.COMMON;
            effects.Add(new Effect(actionName, TARGET_SINGLE, power, DAMAGE));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "もくもく":
            description = "もくもくと曖昧なダメージ。";
            waitTime    = 99;
            power       = 25;
            cost        = 0;
            rarity      = Action.Rarity.COMMON;
            effects.Add(new Effect(actionName, TARGET_SINGLE, power, DAMAGE));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "打撃":
            description = "攻撃。";
            waitTime    = 99;
            power       = 21;
            cost        = 0;
            rarity      = Action.Rarity.COMMON;
            effects.Add(new Effect(actionName, TARGET_SINGLE, power, DAMAGE));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "爪":
            description = "両手でひっかいてくる。";
            waitTime    = 99;
            power       = 6;
            cost        = 0;
            rarity      = Action.Rarity.COMMON;
            effects.Add(new Effect(actionName, TARGET_SINGLE, power, DAMAGE));
            effects.Add(new Effect(actionName, TARGET_SINGLE, power, DAMAGE));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "ねこパンチ":
            description = "ねこの本気パンチ。いたい!";
            waitTime    = 99;
            power       = 38;
            cost        = 0;
            rarity      = Action.Rarity.COMMON;
            effects.Add(new Effect(actionName, TARGET_SINGLE, power, DAMAGE));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "するどい爪":
            description = "両手でひっかいてくる。二回ダメージ。";
            waitTime    = 99;
            power       = 17;
            cost        = 0;
            rarity      = Action.Rarity.COMMON;
            effects.Add(new Effect(actionName, TARGET_SINGLE, power, DAMAGE));
            effects.Add(new Effect(actionName, TARGET_SINGLE, power, DAMAGE));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "強パンチ":
            description = "ねこの会心の一撃。少し痛い。";
            waitTime    = 99;
            power       = 42;
            cost        = 0;
            rarity      = Action.Rarity.COMMON;
            effects.Add(new Effect(actionName, TARGET_SINGLE, power, DAMAGE));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "てしてし":
            description = "じゃれてくる。全然痛くない";
            waitTime    = 99;
            power       = 2;
            cost        = 0;
            rarity      = Action.Rarity.COMMON;
            effects.Add(new Effect(actionName, TARGET_SINGLE, power, DAMAGE));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "噛みつく":
            description = "強力な顎で噛み付いてくる。";
            waitTime    = 99;
            power       = 63;
            cost        = 0;
            rarity      = Action.Rarity.COMMON;
            effects.Add(new Effect(actionName, TARGET_SINGLE, power, DAMAGE));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "毒牙":
            description = "毒を持った牙による噛みつき。毒状態になる。";
            waitTime    = 99;
            power       = 34;
            cost        = 0;
            rarity      = Action.Rarity.COMMON;
            effects.Add(new Effect(actionName, TARGET_SINGLE, power, DAMAGE));
            effects.Add(new Effect(actionName, TARGET_SINGLE, 99, Buff.BuffID.POISON));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "強化":
            description = "一時的に身体を強化する。筋力魔力収魔速度防御を1Lv上昇。";
            waitTime    = 10;
            power       = 34;
            cost        = 0;
            rarity      = Action.Rarity.COMMON;
            effects.Add(new Effect(actionName, ME, 99, Buff.BuffID.POWERUP));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "魔王剣":
            description = "魔王だから剣も使えます。";
            waitTime    = 99;
            power       = 74;
            cost        = 0;
            rarity      = Action.Rarity.COMMON;
            effects.Add(new Effect(actionName, TARGET_SINGLE, power, DAMAGE));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "静電気":
            description = "ピリッとしてくる。";
            waitTime    = 8;
            power       = 17;
            cost        = 10;
            rarity      = Action.Rarity.COMMON;
            attributes.Add(Effect.Attribute.MAGIC);
            attributes.Add(Effect.Attribute.THUNDER);
            effects.Add(new Effect(actionName, TARGET_SINGLE, power, DAMAGE, 60, attributes));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "プチ火炎":
            description = "小規模な火炎攻撃。詠唱中に攻撃を当てることで妨害できる。";
            waitTime    = 13;
            power       = 51;
            cost        = 10;
            rarity      = Action.Rarity.COMMON;
            attributes.Add(Effect.Attribute.MAGIC);
            attributes.Add(Effect.Attribute.FIRE);
            effects.Add(new Effect(actionName, TARGET_SINGLE, power, DAMAGE, 60, attributes));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "大凍結":
            description = "本気で凍らせてくる。";
            waitTime    = 27;
            power       = 96;
            cost        = 10;
            rarity      = Action.Rarity.COMMON;
            attributes.Add(Effect.Attribute.MAGIC);
            effects.Add(new Effect(actionName, TARGET_SINGLE, power, DAMAGE, 60, attributes));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "障壁展開":
            description = "周囲の味方に障壁を配る。";
            waitTime    = 10;
            power       = 999;
            cost        = 10;
            rarity      = Action.Rarity.COMMON;
            attributes.Add(Effect.Attribute.MAGIC);
            effects.Add(new Effect(actionName, ALLY_ALL, 99, Buff.BuffID.GUARD, 60, attributes));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        case "二重障壁":
            description = "2枚の障壁を展開。";
            waitTime    = 10;
            power       = 999;
            cost        = 10;
            rarity      = Action.Rarity.COMMON;
            attributes.Add(Effect.Attribute.MAGIC);
            effects.Add(new Effect(actionName, ME, 99, Buff.BuffID.GUARD, 60, attributes));
            effects.Add(new Effect(actionName, ME, 99, Buff.BuffID.GUARD, 60, attributes));
            return(new Action(actionName, description, waitTime, cost, effects, rarity, actor));

        default:
            Debug.LogWarning("getActionByNameのdefault:が呼ばれてる");
            return(new Action());
        }
    }
Example #15
0
 public static bool CanUseEffectInThisPhase(Effect.EffectType effectType)
 {
     GamePhase[] phases = StateManager.dictEnabledPhases[effectType];
     return phases.Contains(Game.instance.CurrentState);
 }