}                                                        //!< パッシブスキル情報:汎用パラメータ15



    private MasterDataDefineLabel.AutoPlaySkillType _Get_AutoPlaySkillType()
    {
        MasterDataDefineLabel.AutoPlaySkillType ret_val = MasterDataDefineLabel.AutoPlaySkillType.NONE;

        if (skill_type == MasterDataDefineLabel.PassiveSkillCategory.AUTO_PLAY_SKILL)
        {
            ret_val = (MasterDataDefineLabel.AutoPlaySkillType)skill_param_00;
        }

        return(ret_val);
    }
Beispiel #2
0
 /// <summary>
 /// スキル効果を適用
 /// </summary>
 /// <param name="passive_skill_master"></param>
 /// <param name="member_index"></param>
 /// <param name="is_link_member"></param>
 /// <param name="dest_param_ai"></param>
 public void applySkill(MasterDataSkillPassive passive_skill_master, GlobalDefine.PartyCharaIndex member_index, bool is_link_member)
 {
     for (MasterDataDefineLabel.AutoPlaySkillType skill_type = MasterDataDefineLabel.AutoPlaySkillType.NONE + 1; skill_type < MasterDataDefineLabel.AutoPlaySkillType.MAX; skill_type++)
     {
         bool is_exist = passive_skill_master.Check_AutoPlaySkillType(skill_type);
         if (is_exist)
         {
             applySkill(skill_type, member_index, is_link_member);
         }
     }
 }
    // 指定したタイプのオートプレイスキルを持っているかどうか
    public bool Check_AutoPlaySkillType(MasterDataDefineLabel.AutoPlaySkillType skill_type)
    {
        MasterDataSkillPassive wrk_master = this;

        while (wrk_master != null)
        {
            if (wrk_master._Get_AutoPlaySkillType() == skill_type)
            {
                return(true);
            }

            wrk_master = BattleParam.m_MasterDataCache.useSkillPassive((uint)wrk_master.add_fix_id);
        }

        return(false);
    }
Beispiel #4
0
        /// <summary>
        /// スキル効果を適用
        /// </summary>
        /// <param name="skill_type"></param>
        /// <param name="passive_skill_master"></param>
        /// <param name="member_index"></param>
        /// <param name="is_link_member"></param>
        /// <param name="dest_param_ai"></param>
        public void applySkill(MasterDataDefineLabel.AutoPlaySkillType skill_type, GlobalDefine.PartyCharaIndex member_index, bool is_link_member)
        {
            CostInfo cost_info         = null;
            int      work_panel_plus   = 0;
            bool     work_is_resurrect = false;
            int      skip_on_hands     = 0;

            switch (skill_type)
            {
            case MasterDataDefineLabel.AutoPlaySkillType.SKILL1_SELF:
                cost_info = _getActiveSkillCost(member_index, 0);
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.SKILL1_LEADER:
                cost_info = _getActiveSkillCost(GlobalDefine.PartyCharaIndex.LEADER, 0);
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.SKILL2_SELF:
                cost_info = _getActiveSkillCost(member_index, 1);
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.SKILL2_LEADER:
                cost_info = _getActiveSkillCost(GlobalDefine.PartyCharaIndex.LEADER, 1);
                break;


            case MasterDataDefineLabel.AutoPlaySkillType.TOGETHER_NAUGHT:
                cost_info = new CostInfo(MasterDataDefineLabel.ElementType.NAUGHT, MasterDataDefineLabel.ElementType.NAUGHT, MasterDataDefineLabel.ElementType.NAUGHT, MasterDataDefineLabel.ElementType.NAUGHT, MasterDataDefineLabel.ElementType.NAUGHT);
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.TOGETHER_FIRE:
                cost_info = new CostInfo(MasterDataDefineLabel.ElementType.FIRE, MasterDataDefineLabel.ElementType.FIRE, MasterDataDefineLabel.ElementType.FIRE, MasterDataDefineLabel.ElementType.FIRE, MasterDataDefineLabel.ElementType.FIRE);
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.TOGETHER_WATER:
                cost_info = new CostInfo(MasterDataDefineLabel.ElementType.WATER, MasterDataDefineLabel.ElementType.WATER, MasterDataDefineLabel.ElementType.WATER, MasterDataDefineLabel.ElementType.WATER, MasterDataDefineLabel.ElementType.WATER);
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.TOGETHER_LIGHT:
                cost_info = new CostInfo(MasterDataDefineLabel.ElementType.LIGHT, MasterDataDefineLabel.ElementType.LIGHT, MasterDataDefineLabel.ElementType.LIGHT, MasterDataDefineLabel.ElementType.LIGHT, MasterDataDefineLabel.ElementType.LIGHT);
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.TOGETHER_DARK:
                cost_info = new CostInfo(MasterDataDefineLabel.ElementType.DARK, MasterDataDefineLabel.ElementType.DARK, MasterDataDefineLabel.ElementType.DARK, MasterDataDefineLabel.ElementType.DARK, MasterDataDefineLabel.ElementType.DARK);
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.TOGETHER_WIND:
                cost_info = new CostInfo(MasterDataDefineLabel.ElementType.WIND, MasterDataDefineLabel.ElementType.WIND, MasterDataDefineLabel.ElementType.WIND, MasterDataDefineLabel.ElementType.WIND, MasterDataDefineLabel.ElementType.WIND);
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.TOGETHER_HEAL:
                cost_info = new CostInfo(MasterDataDefineLabel.ElementType.HEAL, MasterDataDefineLabel.ElementType.HEAL, MasterDataDefineLabel.ElementType.HEAL, MasterDataDefineLabel.ElementType.HEAL, MasterDataDefineLabel.ElementType.HEAL);
                break;


            case MasterDataDefineLabel.AutoPlaySkillType.TRY_RESURRECT:
                work_is_resurrect = true;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.SKIP_ON_SKILL1_SELF:
                m_SkipOnSkillFormeds[0, (int)member_index] = true;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.SKIP_ON_SKILL1_LEADER:
                m_SkipOnSkillFormeds[0, (int)GlobalDefine.PartyCharaIndex.LEADER] = true;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.SKIP_ON_SKILL2_SELF:
                m_SkipOnSkillFormeds[1, (int)member_index] = true;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.SKIP_ON_SKILL2_LEADER:
                m_SkipOnSkillFormeds[1, (int)GlobalDefine.PartyCharaIndex.LEADER] = true;
                break;


            case MasterDataDefineLabel.AutoPlaySkillType.SKIP_ON_HANDS_1:
                skip_on_hands = 1;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.SKIP_ON_HANDS_2:
                skip_on_hands = 2;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.SKIP_ON_HANDS_3:
                skip_on_hands = 3;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.SKIP_ON_HANDS_4:
                skip_on_hands = 4;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.SKIP_ON_HANDS_5:
                skip_on_hands = 5;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.SKIP_ON_HANDS_6:
                skip_on_hands = 6;
                break;


            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_PLUS_1:
                work_panel_plus = 1;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_PLUS_2:
                work_panel_plus = 2;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_PLUS_3:
                work_panel_plus = 3;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_PLUS_4:
                work_panel_plus = 4;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_PLUS_5:
                work_panel_plus = 5;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_PLUS_6:
                work_panel_plus = 6;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_PLUS_7:
                work_panel_plus = 7;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_PLUS_8:
                work_panel_plus = 8;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_PLUS_9:
                work_panel_plus = 9;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_PLUS_10:
                work_panel_plus = 10;
                break;


            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_DOWN_1:
                work_panel_plus = -1;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_DOWN_2:
                work_panel_plus = -2;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_DOWN_3:
                work_panel_plus = -3;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_DOWN_4:
                work_panel_plus = -4;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_DOWN_5:
                work_panel_plus = -5;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_DOWN_6:
                work_panel_plus = -6;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_DOWN_7:
                work_panel_plus = -7;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_DOWN_8:
                work_panel_plus = -8;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_DOWN_9:
                work_panel_plus = -9;
                break;

            case MasterDataDefineLabel.AutoPlaySkillType.PANEL_DOWN_10:
                work_panel_plus = -10;
                break;
            }

            if (cost_info != null)
            {
                int link_idx = (is_link_member ? 1 : 0);
                for (int skill_idx = 0; skill_idx < m_SkillCosts.GetLength(2); skill_idx++)
                {
                    if (m_SkillCosts[link_idx, (int)member_index, skill_idx] == null)
                    {
                        SkillCost skill_cost = new SkillCost();
                        skill_cost.m_CostInfo = cost_info;
                        m_SkillCosts[link_idx, (int)member_index, skill_idx] = skill_cost;
                        break;
                    }
                }
            }

            m_PanelPutCount += work_panel_plus;

            m_IsTryResurrect |= work_is_resurrect;

            if (m_SkipOnHands == 0)
            {
                m_SkipOnHands = skip_on_hands;
            }
        }
Beispiel #5
0
    private void setSkillInfo()
    {
        int panel_put_count_base = PANEL_PUT_COUNT_BASE;

#if BUILD_TYPE_DEBUG
        // パネル配置数をデバッグメニューの値で上書き
        {
            int debug_panel_put_count = BattleDebugMenu.getAutoPlayPanelPutCount();
            if (debug_panel_put_count > 0)
            {
                panel_put_count_base = debug_panel_put_count;
            }
        }
#endif //BUILD_TYPE_DEBUG

        m_SkillWorksInfo.init(panel_put_count_base);

        // オートプレイスキルの効果を集約
        bool is_applied_ailment = false;
        for (int member_idx = 0; member_idx < MEMBER_ORDER.Length; member_idx++)
        {
            GlobalDefine.PartyCharaIndex member_type = MEMBER_ORDER[member_idx];

            CharaOnce chara_once = BattleParam.m_PlayerParty.getPartyMember(member_type, CharaParty.CharaCondition.SKILL_PASSIVE);
            if (chara_once != null)
            {
#if BUILD_TYPE_DEBUG
                // デバッグメニューで設定されたスキルを適用
                {
                    MasterDataDefineLabel.AutoPlaySkillType[] debug_skills = BattleDebugMenu.getAutoPlaySkill(member_type);
                    if (debug_skills.IsNullOrEmpty() == false)
                    {
                        for (int debug_skill_idx = 0; debug_skill_idx < debug_skills.Length; debug_skill_idx++)
                        {
                            MasterDataDefineLabel.AutoPlaySkillType debug_skill_type = debug_skills[debug_skill_idx];
                            m_SkillWorksInfo.applySkill(debug_skill_type, member_type, false);
                        }
                    }
                }
#endif //BUILD_TYPE_DEBUG

                // メインユニットのパッシブスキル
                {
                    MasterDataSkillPassive passive_skill_master = BattleParam.m_MasterDataCache.useSkillPassive(chara_once.m_CharaMasterDataParam.skill_passive);
                    if (passive_skill_master != null)
                    {
                        m_SkillWorksInfo.applySkill(passive_skill_master, member_type, false);
                    }
                }

                // リンクユニットのパッシブスキル
                if (chara_once.m_LinkParam != null &&
                    chara_once.m_LinkParam.m_CharaID != 0
                    )
                {
                    MasterDataParamChara link_chara_master = BattleParam.m_MasterDataCache.useCharaParam(chara_once.m_LinkParam.m_CharaID);
                    if (link_chara_master != null)
                    {
                        MasterDataSkillPassive link_passive_skill_master = BattleParam.m_MasterDataCache.useSkillPassive(link_chara_master.link_skill_passive);
                        if (link_passive_skill_master != null)
                        {
                            m_SkillWorksInfo.applySkill(link_passive_skill_master, member_type, true);
                        }
                    }
                }

                // 状態異常にあるオートプレイ用スキルを反映
                if (is_applied_ailment == false)
                {
                    is_applied_ailment = true;
                    StatusAilmentChara status_ailment_chara = BattleParam.m_PlayerParty.m_Ailments.getAilment(member_type);
                    if (status_ailment_chara != null)
                    {
                        for (int ailment_idx = 0; ailment_idx < status_ailment_chara.GetAilmentCount(); ailment_idx++)
                        {
                            StatusAilment status_ailment = status_ailment_chara.GetAilment(ailment_idx);
                            if (status_ailment != null)
                            {
                                if (status_ailment.nType == MasterDataDefineLabel.AilmentType.AUTO_PLAY_SKILL)
                                {
                                    MasterDataStatusAilmentParam ailment_param = BattleParam.m_MasterDataCache.useAilmentParam((uint)status_ailment.nMasterDataStatusAilmentID);
                                    if (ailment_param != null)
                                    {
                                        MasterDataDefineLabel.AutoPlaySkillType auto_play_skill_type = ailment_param.Get_AUTO_PLAY_SKILL_TYPE();
                                        m_SkillWorksInfo.applySkill(auto_play_skill_type, member_type, false);
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }

        m_SkillWorksInfo.fix();
    }
Beispiel #6
0
 public MasterDataDefineLabel.AutoPlaySkillType Get_AUTO_PLAY_SKILL_TYPE()
 {
     MasterDataDefineLabel.AutoPlaySkillType ret_val = (MasterDataDefineLabel.AutoPlaySkillType)param01;
     return(ret_val);
 }