//----------------------------------------------------------------------- /*! * @brief 現在の行動パラメータを取得 */ //----------------------------------------------------------------------- public MasterDataEnemyActionParam GetCurrentActionParam() { MasterDataEnemyActionParam actionParam = null; //-------------------------------- // テーブル切り替え時:行動IDがある場合 // @add Developer v320 //-------------------------------- if (m_ActionSwitchParamID > UNUSE_ACTIONPARAM_ID) { // アクションパラメータのマスターデータを取得 actionParam = BattleParam.m_MasterDataCache.useEnemyActionParam((uint)m_ActionSwitchParamID); return(actionParam); } //-------------------------------- // 現在の行動テーブルデータを参照する //-------------------------------- MasterDataEnemyActionTable tableData = GetCurrentActionTableParam(); if (tableData == null) { return(null); } //-------------------------------- // 現在のアクションパラメータを取得 //-------------------------------- int actionStep = m_ActionStep; int[] actionParamIDArray = { tableData.action_param_id1, tableData.action_param_id2, tableData.action_param_id3, tableData.action_param_id4, tableData.action_param_id5, tableData.action_param_id6, tableData.action_param_id7, tableData.action_param_id8 }; int actionParamID = actionParamIDArray[actionStep]; if (actionParamID == UNUSE_ACTIONPARAM_ID) { return(null); } //-------------------------------- // アクションパラメータのマスターデータの取得 //-------------------------------- actionParam = BattleParam.m_MasterDataCache.useEnemyActionParam((uint)actionParamID); return(actionParam); }
//----------------------------------------------------------------------- /*! * @brief アクションテーブルの切り替え判定 */ //----------------------------------------------------------------------- public void SelectActionTable(int battle_total_turn) { MasterDataEnemyActionTable enemy_action_table = searchCurrentMasterDataEnemyActionTable(battle_total_turn); int table_id_current = UNUSE_ACTIONTABLE_ID; if (enemy_action_table != null) { table_id_current = (int)enemy_action_table.fix_id; } //-------------------------------- // テーブルID設定 //-------------------------------- if (m_CurrentActionTableID != table_id_current) { #if UNITY_EDITOR && OUTPUT_INGAME_LOG Debug.LogError("SelectActionTable <<< " + table_id_current); #endif // #if UNITY_EDITOR && OUTPUT_INGAME_LOG //-------------------------------- // テーブルID更新 //-------------------------------- m_CurrentActionTableID = table_id_current; //-------------------------------- // 更新された場合は、進行状態を更新する //-------------------------------- if (enemy_action_table != null) { //-------------------------------- // テーブル切り替え時:行動IDを保存 //-------------------------------- m_ActionSwitchParamID = enemy_action_table.change_action_id; if (enemy_action_table.action_select_type == MasterDataDefineLabel.EnemyACTSelectType.RAND) { //-------------------------------- // ランダム選択の場合は抽選を行う //-------------------------------- StepActionTable(); } else { //-------------------------------- // 巡回選択時は先頭に設定 //-------------------------------- m_ActionStep = 0; } } } }
//----------------------------------------------------------------------- /*! * @brief アクションテーブルの切り替え時行動確認 * @add Developer 2016/01/04 v320 */ //----------------------------------------------------------------------- public bool CheckActionSwitch(int battle_total_turn) { bool bResult = false; MasterDataEnemyActionTable enemy_action_table = searchCurrentMasterDataEnemyActionTable(battle_total_turn); int table_id_current = UNUSE_ACTIONTABLE_ID; if (enemy_action_table != null) { table_id_current = (int)enemy_action_table.fix_id; } //-------------------------------- // テーブルID設定 //-------------------------------- if (m_CurrentActionTableID != table_id_current) { //-------------------------------- // 更新された場合は、進行状態を更新する //-------------------------------- if (enemy_action_table != null && enemy_action_table.change_action_id != 0) { //-------------------------------- // 行動パターン切り替わり時行動有り //-------------------------------- bResult = true; //-------------------------------- // 行動テーブル進行度の決定:ここでやりたくないが、中断復帰の都合上このタイミングでやる //-------------------------------- if (enemy_action_table.action_select_type == MasterDataDefineLabel.EnemyACTSelectType.RAND) { //-------------------------------- // ランダム選択の場合は抽選を行う //-------------------------------- StepActionTable(); } else { //-------------------------------- // 巡回選択時は先頭に設定 //-------------------------------- m_ActionStep = 0; } } } return(bResult); }
//----------------------------------------------------------------------- /*! * @brief 現在のテーブルパラメータを取得 */ //----------------------------------------------------------------------- public MasterDataEnemyActionTable GetCurrentActionTableParam() { //-------------------------------- // 未定義IDを参照した場合 //-------------------------------- if (m_CurrentActionTableID == UNUSE_ACTIONTABLE_ID) { return(null); } //-------------------------------- // 現在の行動テーブルデータを参照する //-------------------------------- MasterDataEnemyActionTable tableData = BattleParam.m_MasterDataCache.useEnemyActionTable((uint)m_CurrentActionTableID); if (tableData == null) { return(null); } return(tableData); }
// マスターデータを取得(同時にキャッシュもされます) public T use(uint id) { if (id == 0) { return(null); } if (m_Dictionary == null) { m_Dictionary = new Dictionary <uint, T>(); } if (m_Dictionary.ContainsKey(id)) { return(m_Dictionary[id]); } T master_data = null; #if BUILD_TYPE_DEBUG // デバッグ用の一時的なマスターデータがあればそこから取得 if (m_DebugAllData != null) { for (int idx = 0; idx < m_DebugAllData.Length; idx++) { T wrk_master_data = m_DebugAllData[idx]; if (wrk_master_data != null && wrk_master_data.fix_id == id ) { master_data = wrk_master_data; break; } } m_Dictionary[id] = master_data; return(master_data); } #endif if (typeof(T) == typeof(MasterDataParamEnemy) || typeof(T) == typeof(MasterDataEnemyActionTable) || typeof(T) == typeof(MasterDataEnemyActionParam) ) { // クエストのたびにサーバからもらうもの //敵のマスターデータのうち MasterDataParamEnemy・MasterDataEnemyActionTable・MasterDataEnemyActionParam は PacketStructQuestBuildから毎回取得しているようです(おそらくチート対策) if (BattleParam.m_QuestBuild != null ) { if (typeof(T) == typeof(MasterDataParamEnemy) && BattleParam.m_QuestBuild.list_e_param != null ) { for (int idx = 0; idx < BattleParam.m_QuestBuild.list_e_param.Length; idx++) { MasterDataParamEnemy wrk_master_data = BattleParam.m_QuestBuild.list_e_param[idx]; if (wrk_master_data != null && wrk_master_data.fix_id == id ) { master_data = wrk_master_data as T; break; } } } else if (typeof(T) == typeof(MasterDataEnemyActionTable) && BattleParam.m_QuestBuild.list_e_acttable != null ) { for (int idx = 0; idx < BattleParam.m_QuestBuild.list_e_acttable.Length; idx++) { MasterDataEnemyActionTable wrk_master_data = BattleParam.m_QuestBuild.list_e_acttable[idx]; if (wrk_master_data != null && wrk_master_data.fix_id == id ) { master_data = wrk_master_data as T; break; } } } else if (typeof(T) == typeof(MasterDataEnemyActionParam) && BattleParam.m_QuestBuild.list_e_actparam != null ) { for (int idx = 0; idx < BattleParam.m_QuestBuild.list_e_actparam.Length; idx++) { MasterDataEnemyActionParam wrk_master_data = BattleParam.m_QuestBuild.list_e_actparam[idx]; if (wrk_master_data != null && wrk_master_data.fix_id == id ) { master_data = wrk_master_data as T; break; } } } } #if BUILD_TYPE_DEBUG && USE_LOCAL_ENEMY_MASTER if (master_data == null) { master_data = _getMasterData(id); } #endif //USE_LOCAL_ENEMY_MASTER } else { master_data = _getMasterData(id); } m_Dictionary[id] = master_data; return(master_data); }
/// <summary> /// 現在の条件を満たした敵行動テーブルを検索 /// </summary> /// <param name="battle_total_turn"></param> /// <returns></returns> private MasterDataEnemyActionTable searchCurrentMasterDataEnemyActionTable(int battle_total_turn) { if (m_BattleEnemy == null) { return(null); } MasterDataParamEnemy enemy_param = m_BattleEnemy.getMasterDataParamEnemy(); if (enemy_param == null) { return(null); } List <MasterDataEnemyActionTable> enemy_action_tables = new List <MasterDataEnemyActionTable>(); { int[] table_id_array = { enemy_param.act_table1, enemy_param.act_table2, enemy_param.act_table3, enemy_param.act_table4, enemy_param.act_table5, enemy_param.act_table6, enemy_param.act_table7, enemy_param.act_table8 }; for (int idx = 0; idx < table_id_array.Length; idx++) { MasterDataEnemyActionTable enemy_action_table = BattleParam.m_MasterDataCache.useEnemyActionTable((uint)table_id_array[idx]); if (enemy_action_table != null) { enemy_action_tables.Add(enemy_action_table); } } // 優先度、降順にソート enemy_action_tables.Sort((a, b) => b.timing_priority - a.timing_priority); } MasterDataEnemyActionTable ret_val = null; for (int priority_idx = 0; priority_idx < enemy_action_tables.Count; priority_idx++) { MasterDataEnemyActionTable enemy_action_table = enemy_action_tables[priority_idx]; bool is_cond = true; for (int cond_idx = 0; cond_idx < enemy_action_table.Get_timing_type_count(); cond_idx++) { MasterDataDefineLabel.EnemyACTPatternSelectType timing_type = enemy_action_table.Get_timing_type(cond_idx); int timing_type_param = enemy_action_table.Get_timing_type_param(cond_idx); switch (timing_type) { case MasterDataDefineLabel.EnemyACTPatternSelectType.HP: if (checkTimingHPRate(timing_type_param) == false) { is_cond = false; } break; case MasterDataDefineLabel.EnemyACTPatternSelectType.HP_UNDER: if (checkTimingHPRateUnder(timing_type_param) == false) { is_cond = false; } break; case MasterDataDefineLabel.EnemyACTPatternSelectType.TURN: if (checkTimingTotalTurn(battle_total_turn, timing_type_param) == false) { is_cond = false; } break; } if (is_cond == false) { break; } } if (is_cond) { ret_val = enemy_action_table; break; } } return(ret_val); }
//----------------------------------------------------------------------- /*! * @brief アクションテーブル更新 */ //----------------------------------------------------------------------- public void StepActionTable() { //-------------------------------- // 現在の行動テーブルデータを参照する //-------------------------------- MasterDataEnemyActionTable table = GetCurrentActionTableParam(); if (table == null) { return; } int[] actionParamArray = { table.action_param_id1, table.action_param_id2, table.action_param_id3, table.action_param_id4, table.action_param_id5, table.action_param_id6, table.action_param_id7, table.action_param_id8 }; MasterDataDefineLabel.EnemyACTSelectType selectType = table.action_select_type; //-------------------------------- // セーフティ //-------------------------------- if (m_ActionStep < 0) { m_ActionStep = 0; } //-------------------------------- // 進行状態の更新 //-------------------------------- switch (selectType) { case MasterDataDefineLabel.EnemyACTSelectType.RAND: { //-------------------------------- // ランダムセレクト設定 //-------------------------------- int totalCount = 0; int randomVal = 0; int randomMix = 1; int randomMax = 100; int tempValue = 0; int tempRate = 10; for (int i = 0; i < actionParamArray.Length; i++) { if (actionParamArray[i] == UNUSE_ACTIONPARAM_ID) { break; } totalCount = totalCount + 1; } randomMix = 0; randomMax = totalCount * tempRate; //-------------------------------- // 乱数生成 //-------------------------------- randomVal = (int)m_RandomActionTable.GetRand((uint)randomMix, (uint)(randomMax + 1)); //-------------------------------- // 抽選処理 //-------------------------------- for (int i = 0; i < totalCount; i++) { tempValue = randomVal - ((i + 1) * tempRate); if (tempValue > 0) { continue; } m_ActionStep = i; break; } } break; case MasterDataDefineLabel.EnemyACTSelectType.LOOP: { //-------------------------------- // 巡回設定 //-------------------------------- m_ActionStep = m_ActionStep + 1; if (m_ActionStep >= 0 && m_ActionStep < actionParamArray.Length) { //-------------------------------- // 未設定、最終定義まで到達した場合は、先頭に戻す //-------------------------------- if (actionParamArray[m_ActionStep] == UNUSE_ACTIONPARAM_ID) { m_ActionStep = 0; } } else { //-------------------------------- // 範囲外に到達したら先頭へ //-------------------------------- m_ActionStep = 0; } } break; default: break; } }
// Update is called once per frame void Update() { if (DebugOptionInGame.Instance == null) { return; } if (m_TestGameManager == null) { return; } switch (m_Status) { case eStatus.API_QUEST_START: { if (DebugOptionInGame.Instance.inGameDebugDO.m_UseAPI == true) { m_HelperIndex = RandManager.GetRand(0, (uint)(UserDataAdmin.Instance.m_StructHelperList.Length - 1)); PacketStructFriend cHelper = null; if (UserDataAdmin.Instance.m_StructFriendList.Length > 0 && UserDataAdmin.Instance.m_StructFriendList[0] != null) { cHelper = UserDataAdmin.Instance.m_StructFriendList[0]; } else if (UserDataAdmin.Instance.m_StructHelperList.Length > 0) { cHelper = UserDataAdmin.Instance.m_StructHelperList[m_HelperIndex]; } { ServerDataUtilSend.SendPacketAPI_Quest2Start( DebugOptionInGame.Instance.inGameDebugDO.m_QuestId, 0, cHelper.user_id, cHelper.unit, false, UserDataAdmin.Instance.m_StructPlayer.unit_party_current, 0, 0, null, false ) .setSuccessAction(_data => { if (SceneGoesParam.Instance.m_SceneGoesParamToQuest2Build == null) { SceneGoesParam.Instance.m_SceneGoesParamToQuest2Build = new SceneGoesParamToQuest2Build(); } SceneGoesParam.Instance.m_SceneGoesParamToQuest2Build.m_QuestBuild = _data.GetResult <RecvQuest2Start>().result.quest; m_Status = eStatus.DATA_CREATE; }) .setErrorAction(data => { Debug.LogErrorFormat("[TestGameMain] Quest2Start API Error [{0}] : QuestId = {1}", data.m_PacketCode.ToString(), DebugOptionInGame.Instance.inGameDebugDO.m_QuestId.ToString()); m_TestGameManager.Message_text = "API Error\r\n [" + data.m_PacketCode.ToString() + "]"; }) .SendStart(); m_Status = eStatus.NONE; } } else { if (SceneGoesParam.Instance.m_SceneGoesParamToQuest2Build == null) { SceneGoesParam.Instance.m_SceneGoesParamToQuest2Build = new SceneGoesParamToQuest2Build(); } { MasterDataQuest2 masterDataQuest2 = MasterDataUtil.GetQuest2ParamFromID(DebugOptionInGame.Instance.inGameDebugDO.m_QuestId); PacketStructQuest2Build cQuestBuild = new PacketStructQuest2Build(); int floor_size = 2; //---------------------------------------- // 最終的な構築情報を格納する領域を確保 //---------------------------------------- TemplateList <PacketStructQuest2BuildBattle> acQuestBuildBattle = new TemplateList <PacketStructQuest2BuildBattle>(); TemplateList <PacketStructQuest2BuildDrop> acQuestBuildDrop = new TemplateList <PacketStructQuest2BuildDrop>(); acQuestBuildBattle.Alloc(64); int nFloorDataAccess = 0; cQuestBuild.boss = new int[floor_size]; for (int i = 0; i < floor_size; i++) { nFloorDataAccess = (i - 1); if (nFloorDataAccess < 0) { continue; } //---------------------------------------- // 0番目要素ダミーデータの入力 //---------------------------------------- PacketStructQuest2BuildBattle build_param_battle = new PacketStructQuest2BuildBattle(); if (build_param_battle != null) { build_param_battle.unique_id = 0; build_param_battle.enemy_list = null; build_param_battle.drop_list = null; build_param_battle.chain = 0; build_param_battle.chain_turn_offset = 0; build_param_battle.bgm_id = 0; acQuestBuildBattle.Add(build_param_battle); } //---------------------------------------- // 戦闘情報を設定 //---------------------------------------- int battle_num = MasterDataUtil.GetQuest2BattleNum(masterDataQuest2.fix_id); for (int j = 0; j < battle_num; j++) { uint enemy_group_id = MasterDataUtil.GetQuest2EnemyGroup(masterDataQuest2.fix_id, j); if (enemy_group_id == 0) { continue; } MasterDataEnemyGroup acMasterGroupEnemy = ServerFogery_GetEnemyGroupFromID(enemy_group_id); if (acMasterGroupEnemy == null) { Debug.LogError("EnemyGroup not found id = " + enemy_group_id); continue; } CreateQuestBuildBattle( i , ref acQuestBuildBattle , ref acQuestBuildDrop , acMasterGroupEnemy ); } //---------------------------------------- // ボス戦闘情報を設定 //---------------------------------------- cQuestBuild.boss[i] = 0; if (masterDataQuest2.boss_group_id > 0) { MasterDataEnemyGroup cBossEnemyGroup = ServerFogery_GetEnemyGroupFromID(masterDataQuest2.boss_group_id); if (cBossEnemyGroup != null) { cQuestBuild.boss[i] = CreateQuestBuildBattle( i , ref acQuestBuildBattle , ref acQuestBuildDrop , cBossEnemyGroup ); } else { Debug.LogError("EnemyGroup not found Boss id = " + masterDataQuest2.boss_group_id); } } } TemplateList <MasterDataParamEnemy> e_param_list = new TemplateList <MasterDataParamEnemy>(); TemplateList <MasterDataEnemyActionParam> e_act_param_list = new TemplateList <MasterDataEnemyActionParam>(); TemplateList <MasterDataEnemyActionTable> e_act_table_list = new TemplateList <MasterDataEnemyActionTable>(); for (int i = 0; i < acQuestBuildBattle.m_BufferSize; i++) { if (acQuestBuildBattle[i] == null) { continue; } if (acQuestBuildBattle[i].enemy_list == null) { continue; } for (int j = 0; j < acQuestBuildBattle[i].enemy_list.Length; j++) { if (acQuestBuildBattle[i].enemy_list[j] == 0) { continue; } MasterDataParamEnemy enemy_param = ServerForgery_GetEnemyParamFromID(acQuestBuildBattle[i].enemy_list[j]); e_param_list.Add(enemy_param); int[] table_id = { enemy_param.act_table1, enemy_param.act_table2, enemy_param.act_table3, enemy_param.act_table4, enemy_param.act_table5, enemy_param.act_table6, enemy_param.act_table7, enemy_param.act_table8 }; for (int k = 0; k < table_id.Length; k++) { if (table_id[k] == 0) { continue; } MasterDataEnemyActionTable table = ServerFogery_GetEnemyActionTable(table_id[k]); e_act_table_list.Add(table); int[] action_id = { table.action_param_id1, table.action_param_id2, table.action_param_id3, table.action_param_id4, table.action_param_id5, table.action_param_id6, table.action_param_id7, table.action_param_id8 }; for (int l = 0; l < action_id.Length; l++) { e_act_param_list.Add(GetEnemyActionParam(action_id[l])); } } } } //---------------------------------------- // 構築した動的要素を配列化して受け渡し //---------------------------------------- cQuestBuild.list_drop = acQuestBuildDrop.ToArray(); cQuestBuild.list_battle = acQuestBuildBattle.ToArray(); cQuestBuild.list_e_param = e_param_list.ToArray(); cQuestBuild.list_e_actparam = e_act_param_list.ToArray(); cQuestBuild.list_e_acttable = e_act_table_list.ToArray(); SceneGoesParam.Instance.m_SceneGoesParamToQuest2Build.m_QuestBuild = cQuestBuild; } m_Status = eStatus.DATA_CREATE; } } break; case eStatus.DATA_CREATE: { { MasterDataQuest2 masterDataQuest = MasterDataUtil.GetQuest2ParamFromID(DebugOptionInGame.Instance.inGameDebugDO.m_QuestId); //---------------------------------------- // ダミーパラメータを設定 //---------------------------------------- if (SceneGoesParam.Instance.m_SceneGoesParamToQuest2 == null) { SceneGoesParam.Instance.m_SceneGoesParamToQuest2 = new SceneGoesParamToQuest2(); } SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_QuestAreaID = masterDataQuest.area_id; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_QuestMissionID = masterDataQuest.fix_id; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_QuestRandSeed = RandManager.GetRand(); SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_IsUsedAutoPlay = false; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara0Param = new UserDataUnitParam(); SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara1Param = new UserDataUnitParam(); SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara2Param = new UserDataUnitParam(); SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara3Param = new UserDataUnitParam(); SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara4Param = new UserDataUnitParam(); if (DebugOptionInGame.Instance.inGameDebugDO.m_DebugParty == false && UserDataAdmin.Instance != null && UserDataAdmin.Instance.m_StructHelperList.IsNullOrEmpty() != true && UserDataAdmin.Instance.m_StructPartyAssign.IsNullOrEmpty() != true) { PacketStructFriend cHelper = UserDataAdmin.Instance.m_StructHelperList[m_HelperIndex]; int nPartyCurrent = UserDataAdmin.Instance.m_StructPlayer.unit_party_current; PacketStructUnit[] acUnitStruct = { UserDataAdmin.Instance.m_StructPartyAssign[nPartyCurrent][0] , UserDataAdmin.Instance.m_StructPartyAssign[nPartyCurrent][1] , UserDataAdmin.Instance.m_StructPartyAssign[nPartyCurrent][2] , UserDataAdmin.Instance.m_StructPartyAssign[nPartyCurrent][3] , cHelper.unit }; UserDataUnitParam[] acUnitParam = { SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara0Param, SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara1Param, SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara2Param, SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara3Param, SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara4Param, }; for (int i = 0; i < acUnitStruct.Length; i++) { if (acUnitStruct[i] != null) { acUnitParam[i].m_UnitDataID = acUnitStruct[i].id; acUnitParam[i].m_UnitParamLevel = (int)acUnitStruct[i].level; acUnitParam[i].m_UnitParamEXP = (int)acUnitStruct[i].exp; acUnitParam[i].m_UnitParamUniqueID = acUnitStruct[i].unique_id; acUnitParam[i].m_UnitParamLimitBreakLV = (int)acUnitStruct[i].limitbreak_lv; acUnitParam[i].m_UnitParamLimitOverLV = (int)acUnitStruct[i].limitover_lv; acUnitParam[i].m_UnitParamPlusPow = (int)acUnitStruct[i].add_pow; acUnitParam[i].m_UnitParamPlusHP = (int)acUnitStruct[i].add_hp; } } } else { SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara0Param.m_UnitDataID = DebugOptionInGame.Instance.inGameDebugDO.m_MasterDataDefaultParty.party_chara0_id; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara1Param.m_UnitDataID = DebugOptionInGame.Instance.inGameDebugDO.m_MasterDataDefaultParty.party_chara1_id; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara2Param.m_UnitDataID = DebugOptionInGame.Instance.inGameDebugDO.m_MasterDataDefaultParty.party_chara2_id; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara3Param.m_UnitDataID = DebugOptionInGame.Instance.inGameDebugDO.m_MasterDataDefaultParty.party_chara3_id; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara4Param.m_UnitDataID = DebugOptionInGame.Instance.inGameDebugDO.m_MasterDataDefaultParty.party_chara4_id; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara0Param.m_UnitParamLevel = (int)DebugOptionInGame.Instance.inGameDebugDO.m_MasterDataDefaultParty.party_chara0_level; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara1Param.m_UnitParamLevel = (int)DebugOptionInGame.Instance.inGameDebugDO.m_MasterDataDefaultParty.party_chara1_level; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara2Param.m_UnitParamLevel = (int)DebugOptionInGame.Instance.inGameDebugDO.m_MasterDataDefaultParty.party_chara2_level; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara3Param.m_UnitParamLevel = (int)DebugOptionInGame.Instance.inGameDebugDO.m_MasterDataDefaultParty.party_chara3_level; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara4Param.m_UnitParamLevel = (int)DebugOptionInGame.Instance.inGameDebugDO.m_MasterDataDefaultParty.party_chara4_level; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara0Param.m_UnitParamEXP = 100; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara1Param.m_UnitParamEXP = 100; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara2Param.m_UnitParamEXP = 100; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara3Param.m_UnitParamEXP = 100; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara4Param.m_UnitParamEXP = 100; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara0Param.m_UnitParamUniqueID = 1; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara1Param.m_UnitParamUniqueID = 2; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara2Param.m_UnitParamUniqueID = 3; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara3Param.m_UnitParamUniqueID = 4; SceneGoesParam.Instance.m_SceneGoesParamToQuest2.m_PartyChara4Param.m_UnitParamUniqueID = 5; } LocalSaveManager.Instance.SaveFuncGoesToQuest2Start(SceneGoesParam.Instance.m_SceneGoesParamToQuest2); LocalSaveManager.Instance.SaveFuncGoesToQuest2Restore(null); DebugOptionInGame.Instance.m_Quest2Build = SceneGoesParam.Instance.m_SceneGoesParamToQuest2Build.m_QuestBuild; SceneCommon.Instance.ChangeScene(SceneType.SceneQuest2); } m_Status = eStatus.NONE; } break; case eStatus.DATA_RESTORE: { { SceneGoesParam.Instance.m_SceneGoesParamToQuest2 = LocalSaveManager.Instance.LoadFuncGoesToQuest2Start(); SceneGoesParam.Instance.m_SceneGoesParamToQuest2Restore = LocalSaveManager.Instance.LoadFuncGoesToQuest2Restore(); if (SceneGoesParam.Instance.m_SceneGoesParamToQuest2Build == null) { SceneGoesParam.Instance.m_SceneGoesParamToQuest2Build = new SceneGoesParamToQuest2Build(); } SceneGoesParam.Instance.m_SceneGoesParamToQuest2Build.m_QuestBuild = DebugOptionInGame.Instance.m_Quest2Build; SceneCommon.Instance.ChangeScene(SceneType.SceneQuest2); } m_Status = eStatus.NONE; } break; default: break; } }