예제 #1
0
    /// <summary>
    /// アクティブスキルからブーストスキルの発動情報を抽出し追加
    /// </summary>
    /// <param name="active_skill_activity"></param>
    public void AddActivityBoostSkill(BattleSkillActivity active_skill_activity)
    {
        if (active_skill_activity == null ||
            active_skill_activity.m_SkillType != ESKILLTYPE.eACTIVE)
        {
            return;
        }

        // ブーストパネルを未使用の場合
        if (active_skill_activity.m_bBonusBoost == false)
        {
            return;
        }

        MasterDataSkillActive skillActiveParam = active_skill_activity.getMasterDataSkillActive();

        if (skillActiveParam == null ||
            skillActiveParam.skill_boost_id == 0)
        {
            return;
        }

        // ブーストスキル情報を取得
        MasterDataSkillBoost skillBoostParam = BattleParam.m_MasterDataCache.useSkillBoost(skillActiveParam.skill_boost_id);

        if (skillBoostParam == null)
        {
            return;
        }

        // ブーストスキルを構築
        BattleSkillActivity boost_skill_activity = new BattleSkillActivity();

        if (boost_skill_activity != null)
        {
            // 共通情報を設定
            boost_skill_activity.m_SkillParamOwnerNum = active_skill_activity.m_SkillParamOwnerNum;             // 発動者
            boost_skill_activity.m_SkillParamFieldID  = InGameDefine.SELECT_NONE;                               // フィールドID(ブーストパネルの判定にも使っている)
            boost_skill_activity.m_SkillParamSkillID  = skillActiveParam.skill_boost_id;                        // ブーストスキルID
            boost_skill_activity.m_SkillName          = skillActiveParam.Get_skill_boost_name();                // ブーストスキル名
            boost_skill_activity.m_SkillType          = ESKILLTYPE.eBOOST;                                      // 発動スキルの種類

            boost_skill_activity.m_Element = skillActiveParam.skill_boost_element;                              // 基本情報:属性
            boost_skill_activity.m_Type    = skillBoostParam.skill_type;                                        // 基本情報:スキルタイプ
            boost_skill_activity.m_Category_BoostSkillCategory_PROPERTY = skillBoostParam.skill_cate;           // 基本情報:効果カテゴリ
            boost_skill_activity.m_Effect = skillActiveParam.skill_boost_effect;                                // 基本情報:エフェクト

            boost_skill_activity.m_skill_power         = skillBoostParam.skill_power;                           // 攻撃情報:攻撃力(%)
            boost_skill_activity.m_skill_power_fix     = skillBoostParam.skill_power_fix;                       // 攻撃情報:攻撃力(固定)
            boost_skill_activity.m_skill_power_hp_rate = skillBoostParam.skill_power_hp_rate;                   // 攻撃情報:攻撃力(対象HPの割合)
            boost_skill_activity.m_skill_absorb        = skillBoostParam.skill_absorb;                          // 攻撃情報:吸収量(%)

            boost_skill_activity.m_skill_chk_atk_affinity = skillBoostParam.skill_chk_atk_affinity;             // 効果情報:攻撃側:属性相性チェック
            boost_skill_activity.m_skill_chk_atk_leader   = skillBoostParam.skill_chk_atk_leader;               // 効果情報:攻撃側:リーダースキルチェック
            boost_skill_activity.m_skill_chk_atk_passive  = skillBoostParam.skill_chk_atk_passive;              // 効果情報:攻撃側:パッシブスキルチェック
            boost_skill_activity.m_skill_chk_atk_ailment  = skillBoostParam.skill_chk_atk_ailment;              // 効果情報:攻撃側:状態変化チェック
            boost_skill_activity.m_skill_chk_atk_combo    = MasterDataDefineLabel.BoolType.DISABLE;             // 攻撃情報:攻撃側:コンボレートの影響

            boost_skill_activity.m_skill_chk_def_defence = skillBoostParam.skill_chk_def_defence;               // 効果情報:防御側:防御無視チェック
            boost_skill_activity.m_skill_chk_def_ailment = skillBoostParam.skill_chk_def_ailment;               // 効果情報:防御側:状態変化チェック
            boost_skill_activity.m_skill_chk_def_barrier = skillBoostParam.skill_chk_def_barrier;               // 効果情報:防御側:状態バリアチェック

            boost_skill_activity.m_statusAilment_target = skillBoostParam.status_ailment_target;                // 状態変化対象
            boost_skill_activity.m_statusAilment        = new int[] { skillBoostParam.status_ailment1,          // 状態変化1
                                                                      skillBoostParam.status_ailment2,          // 状態変化2
                                                                      skillBoostParam.status_ailment3,          // 状態変化3
                                                                      skillBoostParam.status_ailment4 };        // 状態変化4

            boost_skill_activity.m_nStatusAilmentDelay = skillBoostParam.status_ailment_delay;                  // 状態変化遅延。

            // 汎用情報を設定
            boost_skill_activity._setParam(skillBoostParam);


            // リストに登録
            m_SkillRequestBoost.addSkillRequest(boost_skill_activity);
        }
    }
예제 #2
0
    //----------------------------------------------------------------------------

    /*!
     *  @brief		アクティブスキルの発動情報からリンクスキルの発動情報作成
     */
    //----------------------------------------------------------------------------
    public void ActivityLinkSkill(SkillRequestParam active_skill_request_param)
    {
        m_SkillRequestLink.clearRequest();

        //--------------------------------
        // スキル情報の選定完了
        //--------------------------------
        int link_skill_num = CheckLinkSkillNum(active_skill_request_param, m_SkillOwner);

        if (link_skill_num <= 0)
        {
            return;
        }

        //--------------------------------
        // リンクスキル発動情報設定
        //--------------------------------
        int  nSkillPower = 0;
        uint unRandMin   = 0;
        uint unRandMax   = 0;

        for (int num = 0; num < (int)GlobalDefine.PartyCharaIndex.MAX; ++num)
        {
            if (m_SkillOwner[num] == false)
            {
                continue;
            }

            // リンクキャラを取得
            CharaOnce            baseChara      = BattleParam.m_PlayerParty.getPartyMember((GlobalDefine.PartyCharaIndex)num, CharaParty.CharaCondition.SKILL_ACTIVE);
            MasterDataParamChara linkCharaParam = BattleParam.m_MasterDataCache.useCharaParam(baseChara.m_LinkParam.m_CharaID);
            if (linkCharaParam == null)
            {
                continue;
            }

            // リンクキャラのリンクスキルを取得
            MasterDataSkillActive skillActiveParam = BattleParam.m_MasterDataCache.useSkillActive(linkCharaParam.link_skill_active);
            if (skillActiveParam == null)
            {
                continue;
            }

            // リンクスキルを構築
            BattleSkillActivity skillActivity = new BattleSkillActivity();
            if (skillActivity != null)
            {
                // 共通情報を設定
                skillActivity.m_SkillParamOwnerNum = (GlobalDefine.PartyCharaIndex)num;      // 発動者(パーティキャラ)
                skillActivity.m_SkillParamFieldID  = InGameDefine.SELECT_NONE;               // フィールドID(ブーストパネルの影響は受けない)
                skillActivity.m_SkillParamSkillID  = skillActiveParam.fix_id;                // ノーマルスキルID
                skillActivity.m_SkillType          = ESKILLTYPE.eLINK;                       // 発動スキルの種類

                skillActivity.m_Element = skillActiveParam.skill_element;                    // 基本情報:属性
                skillActivity.m_Type    = skillActiveParam.skill_type;                       // 基本情報:スキルタイプ
                skillActivity.m_Effect  = skillActiveParam.effect;                           // 基本情報:エフェクト

                skillActivity.m_skill_chk_atk_combo = MasterDataDefineLabel.BoolType.ENABLE; // 攻撃情報:攻撃側:コンボレートの影響

                // @change Developer v320 リンクスキル振れ幅対応
                if (skillActiveParam.Is_skill_active())
                {
                    // 振れ幅が設定してある場合
                    if (skillActiveParam.skill_value_rand != 0)
                    {
                        nSkillPower = skillActiveParam.skill_value + skillActiveParam.skill_value_rand;
                        if (nSkillPower < 0)
                        {
                            nSkillPower = 0;
                        }

                        // 最小値と最大値を確定:基準値より高い場合
                        if (nSkillPower > skillActiveParam.skill_value)
                        {
                            unRandMin = (uint)skillActiveParam.skill_value;
                            unRandMax = (uint)nSkillPower;
                        }
                        else
                        {
                            unRandMin = (uint)nSkillPower;
                            unRandMax = (uint)skillActiveParam.skill_value;
                        }

                        // スキル威力確定:振れ幅算出
                        skillActivity.m_skill_power = (int)RandManager.GetRand(unRandMin, unRandMax + 1);

                        // 効果値によるエフェクトの切り替え
                        skillActivity.m_Effect = InGameUtilBattle.SetSkillEffectToValue(skillActivity.m_Effect, skillActivity.m_Type, skillActivity.m_skill_power);
                    }
                    else
                    {
                        skillActivity.m_skill_power = skillActiveParam.skill_value;
                    }
                }

                // クリティカル判定
                if (BattleSceneUtil.checkChancePercent(skillActiveParam.skill_critical_odds))
                {
                    skillActivity.m_bCritical = true;
                }
                else
                {
                    skillActivity.m_bCritical = false;
                }

                m_SkillRequestLink.addSkillRequest(skillActivity);
            }
        }
    }