} //!< パッシブスキル情報:汎用パラメータ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); }
/// <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); }
/// <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; } }
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(); }
public MasterDataDefineLabel.AutoPlaySkillType Get_AUTO_PLAY_SKILL_TYPE() { MasterDataDefineLabel.AutoPlaySkillType ret_val = (MasterDataDefineLabel.AutoPlaySkillType)param01; return(ret_val); }