/// <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); } }
//---------------------------------------------------------------------------- /*! * @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); } } }