// Update is called once per frame void Update() { if (m_BattleCard != null) { if (m_BattleCard.getPhase() == BattleScene.BattleCard.Phase.UNUSED) { m_ElementType = MasterDataDefineLabel.ElementType.NONE; m_IsOn = false; } if (m_BattleCard.getElementType() != m_ElementType || m_BattleCard.m_IsOn != m_IsOn ) { _updateSprite(); } #if BUILD_TYPE_DEBUG if (m_BattleCard.getPhase() != BattleScene.BattleCard.Phase.UNUSED) { // 開発中はエラーであることをわかりやすくするための表示 if (m_ElementType <= MasterDataDefineLabel.ElementType.NONE || m_ElementType >= MasterDataDefineLabel.ElementType.MAX) { m_SpriteRenderer.enabled = true; m_SpriteRenderer.sprite = m_SpritesOff[RandManager.GetRand(1, 7)]; } } #endif } // カード配りアニメーション if (m_AnimWait > 0.0f) { const float ANIM_TIME = 0.1f; m_AnimWait -= Time.deltaTime; if (m_AnimWait > ANIM_TIME) { m_SpriteRenderer.enabled = false; transform.localPosition = Vector3.zero; transform.localRotation = Quaternion.Euler(new Vector3(0.0f, 90.0f, 0.0f)); } else if (m_AnimWait > 0.0f) { m_SpriteRenderer.enabled = true; transform.localPosition = new Vector3(0.0f, 0.0f, -1.0f * (1.0f - m_AnimWait / ANIM_TIME)); transform.localRotation = Quaternion.Euler(new Vector3(0.0f, 90.0f * (m_AnimWait / ANIM_TIME), 0.0f)); } else { m_AnimWait = 0.0f; m_SpriteRenderer.enabled = true; transform.localPosition = Vector3.zero; transform.localRotation = Quaternion.Euler(new Vector3(0.0f, 0.0f, 0.0f)); } } m_MyTween.update(Time.deltaTime); }
//----------------------------------------------------------------------- /*! * @brief セットアップ * @param[in] int (enemyID) 敵ID */ //----------------------------------------------------------------------- public bool Setup() { //-------------------------------- // 使用中 //-------------------------------- m_using = true; //-------------------------------- // 乱数シード生成 //-------------------------------- m_RandomSeed = RandManager.GetRand(); m_RandomActionTable = new Rand(); //-------------------------------- // 乱数シード設定 //-------------------------------- SetupRandomSeed(m_RandomSeed); //-------------------------------- // 行動テーブル進行度 //-------------------------------- m_ActionStep = 0; //-------------------------------- // 行動パターン切り替わり時:行動ID //-------------------------------- m_ActionSwitchParamID = 0; //-------------------------------- // 現在のテーブル //-------------------------------- m_CurrentActionTableID = UNUSE_ACTIONTABLE_ID; return(true); }
//---------------------------------------------------------------------------- // @brief ボイス再生 // @param[in] fix_id オーディオ再生情報マスターFixID // @param[out] playTime クリップの長さ //---------------------------------------------------------------------------- public void PlayVoice(uint fix_id, out float playTime) { playTime = 0.0f; try { if (m_AudioClipTable == null) { return; } MasterDataAudioData audioData = GetAudioMaster(fix_id); if (audioData == null) { return; } if (audioData.res_name != string.Empty) { AudioClip clip; bool ret; // fix_idに該当するオーディオクリップの取得 ret = m_AudioClipTable.TryGetValue(fix_id, out clip); if (ret) { // 通常再生 m_AudioSrcVoice.PlayOneShot(m_AudioClipTable[fix_id], audioData.vol_lv / 100.0f); if (audioData.ducking_disable != MasterDataDefineLabel.BoolType.ENABLE) { // 再生時間を返す playTime = m_AudioClipTable[fix_id].length; } } } else { // ランダム再生 m_WorkSelectVoice.Clear(); uint id = 0; if (audioData.rand_id_00 != 0) { m_WorkSelectVoice.Add(audioData.rand_id_00); } if (audioData.rand_id_01 != 0) { m_WorkSelectVoice.Add(audioData.rand_id_01); } if (audioData.rand_id_02 != 0) { m_WorkSelectVoice.Add(audioData.rand_id_02); } if (audioData.rand_id_03 != 0) { m_WorkSelectVoice.Add(audioData.rand_id_03); } if (audioData.rand_id_04 != 0) { m_WorkSelectVoice.Add(audioData.rand_id_04); } if (audioData.rand_id_05 != 0) { m_WorkSelectVoice.Add(audioData.rand_id_05); } int nSelect = (int)RandManager.GetRand(0, (uint)m_WorkSelectVoice.m_BufferSize); id = m_WorkSelectVoice[nSelect]; // 再生する音が選択できたらもう一度呼出 PlayVoice(id, out playTime); } } catch (Exception e) { Debug.LogError(e.Message); } }
//---------------------------------------------------------------------------- /*! * @brief 埋め込みSE再生 * @param[in] nSoundLabel 任意のSEラベル */ //---------------------------------------------------------------------------- public void PlaySE(SEID nSoundLabel) { if (!m_SEEnable) { Debug.LogError("DISABLE_SE"); return; } if (nSoundLabel == SEID.SE_NONE) { return; } try { AudioClip clip = null; bool waitPlayEnd = false; // 置き換えSEが存在する場合は置き換えが優先 { AudioClip[] clips; bool is_exist_replace = m_AudioClipReplaceTable.TryGetValue(nSoundLabel, out clips); if (is_exist_replace) { if (clips.IsNullOrEmpty() == false) { int n = (int)RandManager.GetRand(0, (uint)clips.Length); clip = clips[n]; } } } // ラベルに該当するSEの取得 if (clip == null) { bool ret = m_AudioClipSystemTable.TryGetValue(nSoundLabel, out clip); if (!ret) { Debug.LogError("NOT_FOUND_SE:" + nSoundLabel); return; } } //-------------------------------- // 指定ラベルのSE再生指示 //-------------------------------- switch (nSoundLabel) { case SEID.SE_INGAME_LEADERSKILL: // リーダースキルパワーアップ音 if (m_AudioSrcLeaderSkill != null) { if (m_AudioSrcLeaderSkill.clip == null) { m_AudioSrcLeaderSkill.clip = clip; } if (m_AudioSrcLeaderSkill.isPlaying == false) { m_AudioSrcLeaderSkill.Play(); } } return; case SEID.SE_BATTLE_ENEMYDEATH: // 敵死亡音 if (m_AudioSrcEnemyDead != null) { if (m_AudioSrcEnemyDead.clip == null) { m_AudioSrcEnemyDead.clip = clip; } if (m_AudioSrcEnemyDead.isPlaying == false) { m_AudioSrcEnemyDead.Play(); } } return; case SEID.SE_BATLE_SKILL_EXEC: // スキル成立音 if (m_AudioSrcSkillExec != null) { if (m_AudioSrcSkillExec.clip == null) { m_AudioSrcSkillExec.clip = clip; } if (m_AudioSrcSkillExec.isPlaying == false) { m_AudioSrcSkillExec.Play(); } } return; default: // その他の音 break; } m_AudioSrcDefault.PlayOneShot(clip); // 再生終了予定時間を記録する(終了待ちが必要な物のみ) if (waitPlayEnd == true) { m_LastPlayTime = Time.time + clip.length; } } catch { #if BUILD_TYPE_DEBUG Debug.LogError("PlaySE Sound Null! - " + nSoundLabel); #endif return; } }
static private int CreateQuestBuildBattle( int nFloor , ref TemplateList <ServerDataDefine.PacketStructQuest2BuildBattle> rcBattleList , ref TemplateList <ServerDataDefine.PacketStructQuest2BuildDrop> rcDropList , MasterDataEnemyGroup cEnemyGroup) { if (cEnemyGroup == null) { return(0); } //---------------------------------------- // グループに内包されるエネミー一覧を生成 //---------------------------------------- TemplateList <MasterDataParamEnemy> cEnemyList = new TemplateList <MasterDataParamEnemy>(); MasterDataParamEnemy cEnemyData1 = BattleParam.m_MasterDataCache.useEnemyParam(cEnemyGroup.enemy_id_1); MasterDataParamEnemy cEnemyData2 = BattleParam.m_MasterDataCache.useEnemyParam(cEnemyGroup.enemy_id_2); MasterDataParamEnemy cEnemyData3 = BattleParam.m_MasterDataCache.useEnemyParam(cEnemyGroup.enemy_id_3); MasterDataParamEnemy cEnemyData4 = BattleParam.m_MasterDataCache.useEnemyParam(cEnemyGroup.enemy_id_4); MasterDataParamEnemy cEnemyData5 = BattleParam.m_MasterDataCache.useEnemyParam(cEnemyGroup.enemy_id_5); MasterDataParamEnemy cEnemyData6 = BattleParam.m_MasterDataCache.useEnemyParam(cEnemyGroup.enemy_id_6); MasterDataParamEnemy cEnemyData7 = BattleParam.m_MasterDataCache.useEnemyParam(cEnemyGroup.enemy_id_7); if (cEnemyData1 != null) { cEnemyList.Add(cEnemyData1); } if (cEnemyData2 != null) { cEnemyList.Add(cEnemyData2); } if (cEnemyData3 != null) { cEnemyList.Add(cEnemyData3); } if (cEnemyData4 != null) { cEnemyList.Add(cEnemyData4); } if (cEnemyData5 != null) { cEnemyList.Add(cEnemyData5); } if (cEnemyData6 != null) { cEnemyList.Add(cEnemyData6); } if (cEnemyData7 != null) { cEnemyList.Add(cEnemyData7); } //---------------------------------------- // グループ内のエネミーリストから実際に出現するエネミーを並べる //---------------------------------------- TemplateList <int> cEnemyFixAccessList = new TemplateList <int>(); ServerDataDefine.PacketStructQuest2BuildBattle cBattle = new ServerDataDefine.PacketStructQuest2BuildBattle(); if (cEnemyGroup.fix == MasterDataDefineLabel.BoolType.ENABLE) { //---------------------------------------- // 完全固定で並べる場合 //---------------------------------------- cEnemyFixAccessList.Alloc(cEnemyList.m_BufferSize); for (int i = 0; i < cEnemyList.m_BufferSize; i++) { cEnemyFixAccessList.Add(i); } } else { //---------------------------------------- // ランダムで並べる場合 //---------------------------------------- int nTotalEnemyCt = (int)RandManager.GetRand((uint)cEnemyGroup.num_min, (uint)cEnemyGroup.num_max); cEnemyFixAccessList.Alloc(nTotalEnemyCt); for (int i = 0; i < nTotalEnemyCt; i++) { int nEnemyListAccess = (int)RandManager.GetRand(0, (uint)cEnemyList.m_BufferSize); cEnemyFixAccessList.Add(nEnemyListAccess); } } //---------------------------------------- // ドロップ判定 //---------------------------------------- cBattle.floor = nFloor; cBattle.enemy_list = new uint[cEnemyFixAccessList.m_BufferSize]; cBattle.drop_list = new int[cEnemyFixAccessList.m_BufferSize]; bool bDropFixed = false; for (int i = 0; i < cEnemyFixAccessList.m_BufferSize; i++) { //---------------------------------------- // 基本情報入力 //---------------------------------------- cBattle.enemy_list[i] = cEnemyList[cEnemyFixAccessList[i]].fix_id; cBattle.drop_list[i] = 0; #if BUILD_TYPE_DEBUG Debug.Log("EnemyBattle - " + cEnemyList[cEnemyFixAccessList[i]].fix_id); #endif //---------------------------------------- // ドロップ判定 //---------------------------------------- if (bDropFixed == true) { continue; } MasterDataParamEnemy cEnemyFixParam = cEnemyList[cEnemyFixAccessList[i]]; uint unDropRand = RandManager.GetRand(0, 10000); if (cEnemyFixParam.drop_unit_rate < unDropRand) { //---------------------------------------- // ドロップ確定! // パラメータを保持しておく //---------------------------------------- ServerDataDefine.PacketStructQuest2BuildDrop cDropData = new ServerDataDefine.PacketStructQuest2BuildDrop(); cDropData.item_id = (int)cEnemyFixParam.drop_unit_id; if (cDropData.item_id == 0) { cDropData.setKindType(ServerDataDefine.PacketStructQuest2BuildDrop.KindType.NONE); } else { cDropData.setKindType(ServerDataDefine.PacketStructQuest2BuildDrop.KindType.UNIT); } cDropData.plus_hp = 0; cDropData.plus_pow = 0; cDropData.unique_id = (rcDropList.m_BufferSize + 1); cDropData.floor = nFloor; rcDropList.Add(cDropData); cBattle.drop_list[i] = cDropData.unique_id; bDropFixed = true; } } //---------------------------------------- // 戦闘連鎖があるなら連鎖も加味 //---------------------------------------- if (cEnemyGroup.chain_id > 0) { MasterDataEnemyGroup cChainEnemyGroup = BattleParam.m_MasterDataCache.useEnemyGroup(cEnemyGroup.chain_id); cBattle.chain = CreateQuestBuildBattle(nFloor, ref rcBattleList, ref rcDropList, cChainEnemyGroup); } //---------------------------------------- // 情報を加算して管理番号を返す //---------------------------------------- cBattle.unique_id = rcBattleList.m_BufferSize + 1; rcBattleList.Add(cBattle); return(cBattle.unique_id); }
//---------------------------------------------------------------------------- /*! * @brief 手札変換:属性指定 * @param[in] BattleSkillActivity (activity) スキル発動情報 */ //---------------------------------------------------------------------------- public void ChangeHandElement(BattleSkillActivity activity) { //------------------------------ // エラーチェック //------------------------------ if (activity == null || BattleParam.isActiveBattle() == false) { return; } // バトルマネージャ取得 BattleSceneManager battleMgr = BattleSceneManager.Instance; // 汎用パラメータから設定(属性ラベル定義順) MasterDataDefineLabel.ElementType[] elemArray = activity.Get_BOOSTSKILL_HAND_CNG_ELEM(); MasterDataDefineLabel.ElementType cardElement; // 手札の属性用 //---------------------------------------- // 手札をすべてチェック //---------------------------------------- for (int i = 0; i < battleMgr.PRIVATE_FIELD.m_BattleCardManager.m_HandArea.getCardMaxCount(); ++i) { BattleScene.BattleCard battle_card = battleMgr.PRIVATE_FIELD.m_BattleCardManager.m_HandArea.getCard(i); if (battle_card == null) { continue; } // 手札の属性を取得 cardElement = battle_card.getElementType(); if (elemArray[(int)cardElement] == MasterDataDefineLabel.ElementType.MAX) { continue; } // 変換先が設定されている場合 if (elemArray[(int)cardElement] != MasterDataDefineLabel.ElementType.NONE) { // 属性変更 battle_card.setElementType(elemArray[(int)cardElement], BattleScene.BattleCard.ChangeCause.SKILL); // 手札変化エフェクト BattleSceneManager.Instance.PRIVATE_FIELD.m_BattleCardManager.addEffectInfo(BattleScene._BattleCardManager.EffectInfo.EffectPosition.HAND_CARD_AREA, i, BattleScene._BattleCardManager.EffectInfo.EffectType.CARD_CHANGE); } else { // 設定されていない場合は、ランダム変換 // ランダム属性を取得 MasterDataDefineLabel.ElementType randElement = (MasterDataDefineLabel.ElementType)RandManager.GetRand((int)MasterDataDefineLabel.ElementType.NAUGHT, (int)MasterDataDefineLabel.ElementType.MAX); // 属性変更 battle_card.setElementType(randElement, BattleScene.BattleCard.ChangeCause.SKILL); // 手札変化エフェクト BattleSceneManager.Instance.PRIVATE_FIELD.m_BattleCardManager.addEffectInfo(BattleScene._BattleCardManager.EffectInfo.EffectPosition.HAND_CARD_AREA, i, BattleScene._BattleCardManager.EffectInfo.EffectType.CARD_CHANGE); } } }
//---------------------------------------------------------------------------- /*! * @brief 基底継承:MainMenuSeq:ページ切り替えにより有効化された際に呼ばれる関数 * @note ページのレイアウト再構築を兼ねる */ //---------------------------------------------------------------------------- protected override void PageSwitchSetting(bool initalize) { base.PageSwitchSetting(initalize); //---------------------------------------- // ゲリラボス情報を取得 //---------------------------------------- m_GuerrillaBoss = MasterDataUtil.GetGuerrillaBossParamFromQuestID(MainMenuParam.m_QuestSelectMissionID); //---------------------------------------- // ゲーム本編に引き渡す情報を色々設定 //---------------------------------------- { //---------------------------------------- // 選択されている助っ人を取得 //---------------------------------------- PacketStructFriend cHelper = MainMenuParam.m_QuestHelper; if (cHelper == null) { Debug.LogError("SelectFriendNone"); } //---------------------------------------- // //---------------------------------------- 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 }; // @add Developer 2015/09/07 ver300 PacketStructUnit cLinkUnitStruct = null; UserDataUnitParam[] acUnitParam = new UserDataUnitParam[acUnitStruct.Length]; for (int i = 0; i < acUnitStruct.Length; i++) { if (acUnitStruct[i] == null) { continue; } acUnitParam[i] = new UserDataUnitParam(); 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; // @add Developer 2015/09/07 ver300 // リンクユニットを取得 if (i != acUnitStruct.Length - 1) { cLinkUnitStruct = CharaLinkUtil.GetLinkUnit(acUnitStruct[i].link_unique_id); } else { cLinkUnitStruct = cHelper.unit_link; } // リンクユニットのパラメータ設定 if (cLinkUnitStruct == null) { continue; } acUnitParam[i].m_UnitParamLinkID = cLinkUnitStruct.id; acUnitParam[i].m_UnitParamLinkLv = (int)cLinkUnitStruct.level; acUnitParam[i].m_UnitParamLinkPlusPow = (int)cLinkUnitStruct.add_pow; acUnitParam[i].m_UnitParamLinkPlusHP = (int)cLinkUnitStruct.add_hp; acUnitParam[i].m_UnitParamLinkPoint = (int)acUnitStruct[i].link_point; acUnitParam[i].m_UnitParamLinkLimitOverLV = (int)cLinkUnitStruct.limitover_lv; } //---------------------------------------- // 固定パーティ情報でパーティ情報を上書き //---------------------------------------- FixPartyAssign(ref acUnitParam, MainMenuParam.m_QuestSelectMissionID); { SceneGoesParamToQuest2 cSceneGoesParamToQuest2 = new SceneGoesParamToQuest2(); cSceneGoesParamToQuest2.m_QuestAreaID = MainMenuParam.m_QuestSelectAreaID; cSceneGoesParamToQuest2.m_QuestAreaAmendCoin = MainMenuParam.m_QuestSelectAreaAmendCoin; // ※パーセント表記 cSceneGoesParamToQuest2.m_QuestAreaAmendDrop = MainMenuParam.m_QuestSelectAreaAmendDrop; // ※パーセント表記 cSceneGoesParamToQuest2.m_QuestAreaAmendExp = MainMenuParam.m_QuestSelectAreaAmendEXP; // ※パーセント表記 cSceneGoesParamToQuest2.m_QuestMissionID = MainMenuParam.m_QuestSelectMissionID; cSceneGoesParamToQuest2.m_QuestRandSeed = RandManager.GetRand(); cSceneGoesParamToQuest2.m_IsUsedAutoPlay = false; cSceneGoesParamToQuest2.m_QuestGuerrillaBoss = m_GuerrillaBoss; cSceneGoesParamToQuest2.m_PartyFriend = cHelper; cSceneGoesParamToQuest2.m_PartyChara0Param = acUnitParam[0]; cSceneGoesParamToQuest2.m_PartyChara1Param = acUnitParam[1]; cSceneGoesParamToQuest2.m_PartyChara2Param = acUnitParam[2]; cSceneGoesParamToQuest2.m_PartyChara3Param = acUnitParam[3]; cSceneGoesParamToQuest2.m_PartyChara4Param = acUnitParam[4]; cSceneGoesParamToQuest2.m_NextAreaCleard = MainMenuUtil.ChkActiveNextArea(MainMenuParam.m_QuestSelectAreaID); SceneGoesParam.Instance.m_SceneGoesParamToQuest2 = cSceneGoesParamToQuest2; //---------------------------------------- // ゲーム開始情報をローカル保存。 // // 通信前に保存しているため、通信中にアプリを終了させるとサーバー側の諸々消費を飛ばして次回起動時に開始情報が残ってしまう。 // そのままクエストに入られるとサーバー上でコスト消費が行われずにクエストに移行する可能性があるがので、 // タイトル画面で「サーバーにクエスト開始が届いているか」をチェックするAPIを投げて届いている場合のみ適用することで対応する。 //---------------------------------------- if (LocalSaveManager.Instance != null) { LocalSaveManager.Instance.SaveFuncGoesToMenuResult(null); LocalSaveManager.Instance.SaveFuncGoesToMenuRetire(null); LocalSaveManager.Instance.SaveFuncGoesToQuest2Restore(null); LocalSaveManager.Instance.SaveFuncGoesToQuest2Start(cSceneGoesParamToQuest2); LocalSaveManager.Instance.SaveFuncInGameContinue(null); LocalSaveManager.Instance.SaveFuncInGameReset(null); } } } //---------------------------------------- // 通信発行 //---------------------------------------- ServerCommunicate(); }
// 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; } }
//---------------------------------------------------------------------------- /*! * @brief フェードアニメーション処理 ※定期処理 */ //---------------------------------------------------------------------------- public bool AnimationUpdate() { m_AnimationDelta += Time.deltaTime; //-------------------------------- // 初期化前にリクエストが発生してるなら再送 //-------------------------------- if (m_SetupAnimationClipFade == true) { if (m_SetupPrevRequest == ANIM_FADE_IN) { AnimationTriger(true, false); m_SetupPrevRequest = ANIM_FADE_NONE; } else if (m_SetupPrevRequest == ANIM_FADE_OUT) { AnimationTriger(false, false); m_SetupPrevRequest = ANIM_FADE_NONE; } } //-------------------------------- // フェードアウトリクエストが出てるなら // 自分でアニメーション進行を見て勝手に止まる //-------------------------------- if (m_AnimationSeq == ANIM_FADE_OUT) { if (AnimationFinishCheck() == true) { UnityUtil.SetObjectEnabledOnce(gameObject, false); m_AnimationSeq = ANIM_FADE_READY; } return(false); } //-------------------------------- // フェードインリクエストが出てるなら // アニメーションの完遂を待つ //-------------------------------- if (m_AnimationSeq == ANIM_FADE_IN) { if (AnimationFinishCheck() == true) { m_AnimationSeq = ANIM_FADE_READY; } return(false); } //-------------------------------- // 全てのオブジェクトの待機アニメーションを再生指示 //-------------------------------- for (int i = 0; i < m_ChildObject.m_BufferSize; i++) { if (m_ChildObject[i].m_AnimationClip == null || m_ChildObject[i].m_AnimationClip.ChkAnimationPlaying() == true ) { continue; } m_ChildObject[i].m_AnimationClip.PlayFadeAnimation(AnimationClipFade.FADE_ANIM.FADE_WAIT); } //-------------------------------- // ランダムでランダム待機アニメーションを適用 //-------------------------------- int nRandWaitAccess = (int)RandManager.GetRand(0, 1000); if (m_ChildObject.m_BufferSize > nRandWaitAccess && m_ChildObject[nRandWaitAccess] != null ) { m_ChildObject[nRandWaitAccess].m_AnimationClip.PlayFadeAnimation(AnimationClipFade.FADE_ANIM.FADE_WAIT_RAND); } //---------------------------------------- // 更新OK //---------------------------------------- return(true); }
//---------------------------------------------------------------------------- // @brief 状態異常処理 //---------------------------------------------------------------------------- public void SkillUpdate_StatusAilment(BattleSkillActivity activity, int nAtk, BattleSceneUtil.MultiInt nHPMax, BattleEnemy[] enemy_param) { if (activity == null || activity.m_SkillParamTarget == null || activity.m_statusAilment == null) { return; } bool clearOnAttack = true; int statusAilment_data_id = 0; MasterDataStatusAilmentParam statusAilmentParam = null; BattleSkillTarget cBattleTarget = null; BattleSceneManager battleMgr = BattleSceneManager.Instance; if (battleMgr == null) { return; } // 発行された状態異常を全て処理する for (int j = 0; j < activity.m_statusAilment.Length; j++) { statusAilment_data_id = activity.m_statusAilment[j]; if (statusAilment_data_id == 0) { continue; } statusAilmentParam = BattleParam.m_MasterDataCache.useAilmentParam((uint)statusAilment_data_id); if (statusAilmentParam == null) { Debug.LogError("statusAilment Param not found."); continue; } // 遅延のスキルは全員の効果がきれるまで再度この効果をかけることが出来ない if (statusAilmentParam.category == MasterDataDefineLabel.AilmentType.FEAR) { for (int k = 0; k < enemy_param.Length; k++) { if (enemy_param[k] == null) { continue; } if (enemy_param[k].isDead() == true) { continue; } if (enemy_param[k].getAttackFlag() == true) { continue; } clearOnAttack = false; } } // 誰かがまだ攻撃をしていない if (clearOnAttack == false) { continue; } // 状態異常に設定されたターゲットをみて処理 switch (activity.m_statusAilment_target) { case MasterDataDefineLabel.TargetType.NONE: default: break; case MasterDataDefineLabel.TargetType.FRIEND: case MasterDataDefineLabel.TargetType.SELF: //---------------------------------------- // プレイヤー側状態異常処理 //---------------------------------------- { GlobalDefine.PartyCharaIndex target_player = GlobalDefine.PartyCharaIndex.MAX; BattleParam.m_PlayerParty.m_Ailments.AddStatusAilmentToPlayerParty(target_player, statusAilment_data_id, nAtk, nHPMax); } break; case MasterDataDefineLabel.TargetType.OTHER: //---------------------------------------- // 敵単体(スキル側で指定されたターゲット) //---------------------------------------- { bool ailmentAddResult = false; for (int i = 0; i < activity.m_SkillParamTarget.Length; i++) { cBattleTarget = activity.m_SkillParamTarget[i]; if (cBattleTarget == null) { continue; } BattleEnemy enemyParam = enemy_param[cBattleTarget.m_TargetNum]; if (enemyParam == null) { continue; } if (enemyParam.isDead() == true) { continue; } // 状態異常処理 // @change Developer 2016/02/23 v330 毒[最大HP割合]対応 ailmentAddResult = enemyParam.m_StatusAilmentChara.AddStatusAilment(statusAilment_data_id, nAtk, enemyParam.m_EnemyHPMax, enemyParam.getMasterDataParamChara()); // NEXTのターンを加算(特殊処理) // 上限数以上の場合、遅延効果が発動しないように修正 @20150512 Developer if (statusAilmentParam.category == MasterDataDefineLabel.AilmentType.FEAR && ailmentAddResult == true) { int nTurn = (int)RandManager.GetRand((uint)statusAilmentParam.Get_ABSTATE_LATE_TURN_MIN(), (uint)statusAilmentParam.Get_ABSTATE_LATE_TURN_MAX()); enemyParam.AddTurn(nTurn); } } } break; case MasterDataDefineLabel.TargetType.ENEMY: case MasterDataDefineLabel.TargetType.ENE_N_1: case MasterDataDefineLabel.TargetType.ENE_1N_1: case MasterDataDefineLabel.TargetType.ENE_R_N: case MasterDataDefineLabel.TargetType.ENE_1_N: //---------------------------------------- // 敵全体 //---------------------------------------- { BattleEnemy enemyParam = null; bool ailmentAddResult = false; for (int k = 0; k < enemy_param.Length; k++) { enemyParam = enemy_param[k]; if (enemyParam == null) { continue; } if (enemyParam.isDead() == true) { continue; } // 状態異常処理 // @change Developer 2016/02/23 v330 毒[最大HP割合]対応 ailmentAddResult = enemyParam.m_StatusAilmentChara.AddStatusAilment(statusAilment_data_id, nAtk, enemyParam.m_EnemyHPMax, enemyParam.getMasterDataParamChara()); // NEXTのターンを加算(特殊処理) // 上限数以上の場合、遅延効果が発動しないように修正 @20150512 Developer if (statusAilmentParam.category == MasterDataDefineLabel.AilmentType.FEAR && ailmentAddResult == true) { int nTurn = (int)RandManager.GetRand((uint)statusAilmentParam.Get_ABSTATE_LATE_TURN_MIN(), (uint)statusAilmentParam.Get_ABSTATE_LATE_TURN_MAX()); enemyParam.AddTurn(nTurn); } } } break; case MasterDataDefineLabel.TargetType.ALL: //---------------------------------------- // 全員 //---------------------------------------- { // プレイヤー側状態異常処理 GlobalDefine.PartyCharaIndex target_player = GlobalDefine.PartyCharaIndex.MAX; BattleParam.m_PlayerParty.m_Ailments.AddStatusAilmentToPlayerParty(target_player, statusAilment_data_id, nAtk, nHPMax); BattleEnemy enemyParam = null; bool ailmentAddResult = false; // 敵全体 for (int k = 0; k < enemy_param.Length; k++) { enemyParam = enemy_param[k]; if (enemyParam == null) { continue; } if (enemyParam.isDead() == true) { continue; } // 状態異常処理 // @change Developer 2016/02/23 v330 毒[最大HP割合]対応 ailmentAddResult = enemyParam.m_StatusAilmentChara.AddStatusAilment(statusAilment_data_id, nAtk, enemyParam.m_EnemyHPMax, enemyParam.getMasterDataParamChara()); // NEXTのターンを加算(特殊処理) // 上限数以上の場合、遅延効果が発動しないように修正 @20150512 Developer if (statusAilmentParam.category == MasterDataDefineLabel.AilmentType.FEAR && ailmentAddResult == true) { int nTurn = (int)RandManager.GetRand((uint)statusAilmentParam.Get_ABSTATE_LATE_TURN_MIN(), (uint)statusAilmentParam.Get_ABSTATE_LATE_TURN_MAX()); enemyParam.AddTurn(nTurn); } } } break; } } }
//---------------------------------------------------------------------------- /*! * @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); } } }