public void MonsterDataReflect(IMonsterData monsterData, IMonsterData enemyMonsterData) { //技をTextに反映 for (int i = 0; i < commandParts_.GetCommandWindowTextsCount(); ++i) { commandParts_.CommandWindowChoiceTextChange(i, " " + t13.Utility.StringFullSpaceBackTamp(monsterData.GetSkillDatas(i).skillName_, 7)); } //文字の色の変更 //for (int i = 0; i < commandParts_.GetCommandWindowTextsCount(); ++i) { // int simillarResult = enemyMonsterData.ElementSimillarCheckerForValue(monsterData.GetSkillDatas(i).elementType_); // // if (simillarResult == 0) commandParts_.GetCommandWindowTexts(i).color = new Color32(195, 195, 195, 255); // else if (simillarResult == 1) commandParts_.GetCommandWindowTexts(i).color = new Color32(52, 130, 207, 255); // else if (simillarResult == 2) commandParts_.GetCommandWindowTexts(i).color = new Color32(50, 50, 50, 255); // else if (simillarResult == 3) commandParts_.GetCommandWindowTexts(i).color = new Color32(207, 52, 112, 255); //} //for (int i = 0; i < commandParts_.GetCommandWindowTextsCount(); ++i) { // commandParts_.CommandWindowChoiceColorChange(i, monsterData.GetSkillDatas(i).elementType_.GetColor()); //} //技のフレームの変更 for (int i = 0; i < skillFrameSprites_.Count; ++i) { skillFrameSprites_[i].sprite = monsterData.GetSkillDatas(i).elementType_.GetSkillFrameSprite(); } }
public IProcessState Update(BattleManager mgr) { if (AllEventManager.GetInstance().EventUpdate()) { eventEnd_ = true; } //敵の思考時間の処理 EnemyBattleData.GetInstance().ThinkingTimeCounter(); //思考時間が終わっていたら if (EnemyBattleData.GetInstance().ThinkingTimeEnd() && eventEnd_) { int commandRandomResult = AllSceneManager.GetInstance().GetRandom().Next(0, 100); //エネミーの行動の決定 if (commandRandomResult < EnemyTrainerData.GetInstance().GetAttackRate()) { } else if (commandRandomResult < EnemyTrainerData.GetInstance().GetAttackRate() + EnemyTrainerData.GetInstance().GetTradeRate()) { //タイプ相性の測定 int[] typeSimillarResult = new int[2] { 0, 0 }; int[] monsterNumbers = new int[2] { 1, 2 }; //先頭以外で測定 for (int i = 0; i < EnemyBattleData.GetInstance().GetMonsterDatasLength() - 1; ++i) { //戦えたら、None以外だったら if (EnemyBattleData.GetInstance().GetMonsterDatas(i).battleActive_ && EnemyBattleData.GetInstance().GetMonsterDatas(i).tribesData_.monsterNumber_ != 0) { { int simillarResult = PlayerBattleData.GetInstance().GetMonsterDatas(0).ElementSimillarCheckerForValue(EnemyBattleData.GetInstance().GetMonsterDatas(i).tribesData_.firstElement_); typeSimillarResult[i] += simillarResult; } { int simillarResult = PlayerBattleData.GetInstance().GetMonsterDatas(0).ElementSimillarCheckerForValue(EnemyBattleData.GetInstance().GetMonsterDatas(i).tribesData_.secondElement_); typeSimillarResult[i] += simillarResult; } } } //タイプ相性が良い順にソート t13.Utility.SimpleHiSort2Index(typeSimillarResult, monsterNumbers); //交換するモンスターの選択 for (int i = 0; i < monsterNumbers.Length; ++i) { //Noneまたは、戦えなかったら if (EnemyBattleData.GetInstance().GetMonsterDatas(monsterNumbers[i]).tribesData_.monsterNumber_ == (int)MonsterTribesDataNumber.None || !EnemyBattleData.GetInstance().GetMonsterDatas(monsterNumbers[i]).battleActive_ ) { continue; } EnemyBattleData.GetInstance().changeMonsterNumber_ = monsterNumbers[i]; EnemyBattleData.GetInstance().changeMonsterActive_ = true; //ループの終了 i = monsterNumbers.Length; } } //現在、場に出ているモンスターのデータの取得 IMonsterData enemyMD = EnemyBattleData.GetInstance().GetMonsterDatas(EnemyBattleData.GetInstance().changeMonsterNumber_); IMonsterData playerMD = PlayerBattleData.GetInstance().GetMonsterDatas(0); const int EFFECT_ATTACK_SIZE = 4; int nowEffectAttackSize = 0; int[] skillDamages = new int[EFFECT_ATTACK_SIZE] { 0, 0, 0, 0, }; int[] skillNumbers = new int[EFFECT_ATTACK_SIZE] { 0, 0, 0, 0, }; //攻撃技の威力計算 for (int i = 0; i < enemyMD.GetSkillSize(); ++i) { //HPへのダメージ技以外だったら if (enemyMD.GetSkillDatas(i).effectValueType_.state_ != EffectValueTypeState.HitPointDamage) { continue; } skillDamages[nowEffectAttackSize] = MonsterData.TestDamageCalculate(enemyMD, playerMD, enemyMD.GetSkillDatas(i)); skillNumbers[nowEffectAttackSize] = i; nowEffectAttackSize += 1; } //ダメージ量を大きい順にソート for (int i = 0; i < nowEffectAttackSize - 1; ++i) { for (int j = i + 1; j < nowEffectAttackSize; ++j) { if (skillDamages[i] < skillDamages[j]) { { int tmp = skillDamages[i]; skillDamages[i] = skillDamages[j]; skillDamages[j] = tmp; } { int tmp = skillNumbers[i]; skillNumbers[i] = skillNumbers[j]; skillNumbers[j] = tmp; } } } } //一番の火力の高い技を選択 for (int i = 0; i < skillNumbers.Length; ++i) { //if (enemyMD.GetSkillDatas(skillNumbers[i]).nowPlayPoint_ > 0) { // mgr.enemySelectSkillNumber_ = skillNumbers[i]; // i = skillNumbers.Length; //} mgr.enemySelectSkillNumber_ = skillNumbers[i]; i = skillNumbers.Length; } //こんらん状態であれば if (enemyMD.battleData_.HaveAbnormalType(AbnormalType.Confusion)) { //2/10の確立 if (AllSceneManager.GetInstance().GetRandom().Next(0, 10) < 3) { mgr.enemySelectSkillNumber_ = AllSceneManager.GetInstance().GetRandom().Next(0, skillNumbers.Length); } } //気まぐれで変化 //3/10の確立 if (AllSceneManager.GetInstance().GetRandom().Next(0, 10) < 3) { mgr.enemySelectSkillNumber_ = AllSceneManager.GetInstance().GetRandom().Next(0, skillNumbers.Length); } //dpが100以上だったら if (EnemyBattleData.GetInstance().GetDreamPoint() >= 100) { //先頭がパワーアップしていなかったら if (!EnemyBattleData.GetInstance().GetMonsterDatas(0).battleData_.HaveAbnormalType(AbnormalType.Hero)) { //パワーアップするか否かのフラグの設定 EnemyBattleData.GetInstance().dreamSyncronize_ = true; } } //ppの消費 //ISkillData enemySkillData = enemyMD.GetSkillDatas(mgr.enemySelectSkillNumber_); //enemySkillData.nowPlayPoint_ -= 1; eventEnd_ = false; return(mgr.nowProcessState().NextProcess()); } //やけどのダメージ処理 if (mgr.BurnsDamageProcess(EnemyBattleData.GetInstance(), mgr.GetEnemyStatusInfoParts(), mgr.GetEnemyMonsterParts())) { return(new CommandEventExecuteProcess()); } if (EnemyBattleData.GetInstance().PoinsonCounter()) { //どくのダメージ処理 mgr.PoisonDamageProcess(EnemyBattleData.GetInstance(), mgr.GetEnemyStatusInfoParts(), mgr.GetEnemyMonsterParts()); if (mgr.PoisonDamageDown()) { return(new CommandEventExecuteProcess()); } } return(this); }
public IProcessState Update(BattleManager mgr) { ////DPの演出のイベント //mgr.PlayerEnemyStatusInfoPartsDPEffect(); //ウィンドウの表示 mgr.GetNovelWindowParts().gameObject.SetActive(true); //ウェイト AllEventManager.GetInstance().EventWaitSet(mgr.GetEventWaitTime()); //パワーアップしていたら if (PlayerBattleData.GetInstance().dreamSyncronize_ == true) { //dpの初期化 PlayerBattleData.GetInstance().DreamPointReset(); PlayerBattleData.GetInstance().dreamSyncronize_ = false; //ゆめの文字色の変更 mgr.GetDreamCommandSprite().color = new Color32(255, 255, 255, 255); //DPの演出のイベント mgr.GetPlayerDreamPointInfoParts().DPEffectEventSet(PlayerBattleData.GetInstance().GetDreamPoint()); //ウェイト AllEventManager.GetInstance().EventWaitSet(mgr.GetEventWaitTime()); //BGMの音量の減少 AllEventManager.GetInstance().BGMAudioVolumeChangeEventSet(0.15f); //パワーアップの演出 mgr.GetDreamEffectParts().DreamSyncronizeEventSet(PlayerBattleData.GetInstance().GetMonsterDatas(0), new Vector3(-13.0f, 0.8f, -1.0f), new Vector3(13.0f, 0.8f, -1.0f)); //画像の変更 { List <Sprite> sprites = new List <Sprite>(); sprites.Add(PlayerBattleData.GetInstance().GetMonsterDatas(0).tribesData_.backDreamTex_); AllEventManager.GetInstance().EventSpriteRendererSet(mgr.GetPlayerMonsterParts().GetEventMonsterSprite(), sprites); AllEventManager.GetInstance().EventSpriteRenderersUpdateExecuteSet(EventSpriteRendererEventManagerExecute.SpriteSet); AllEventManager.GetInstance().AllUpdateEventExecute(); } //BGMの変更 AllEventManager.GetInstance().BGMAudioClipChangeEventSet(ResourcesSoundsLoader.GetInstance().GetSounds(SoundsPathSupervisor.GetInstance().GetPathDreamers_Rock())); //BGMの再生 AllEventManager.GetInstance().BGMAudioVolumeChangeEventSet(0.3f); AllEventManager.GetInstance().BGMAudioPlayEventSet(); //能力変化の更新 string abnormalStateContext = new AddAbnormalTypeState(AddAbnormalType.Hero).AddAbnormalTypeExecute(PlayerBattleData.GetInstance().GetMonsterDatas(0)); //文字列のイベント AllEventManager.GetInstance().EventTextSet(mgr.GetNovelWindowParts().GetNovelWindowEventText(), abnormalStateContext); AllEventManager.GetInstance().EventTextsUpdateExecuteSet(EventTextEventManagerExecute.CharaUpdate); AllEventManager.GetInstance().AllUpdateEventExecute(mgr.GetEventContextUpdateTime()); //状態異常のイベントのセット PlayerBattleData.GetInstance().GetMonsterDatas(0).battleData_.AbnormalSetStatusInfoPartsEventSet(mgr.GetPlayerStatusInfoParts()); //ウェイト AllEventManager.GetInstance().EventWaitSet(mgr.GetEventWaitTime()); //ねむりの終了処理 mgr.SleepProcessEnd(); //ウェイト AllEventManager.GetInstance().EventWaitSet(mgr.GetEventWaitTime()); } //パワーアップしていたら if (EnemyBattleData.GetInstance().dreamSyncronize_ == true) { //dpの初期化 EnemyBattleData.GetInstance().DreamPointReset(); EnemyBattleData.GetInstance().dreamSyncronize_ = false; //DPの演出のイベント mgr.GetEnemyDreamPointInfoParts().DPEffectEventSet(EnemyBattleData.GetInstance().GetDreamPoint()); //ウェイト AllEventManager.GetInstance().EventWaitSet(mgr.GetEventWaitTime()); //BGMの音量の減少 AllEventManager.GetInstance().BGMAudioVolumeChangeEventSet(0.15f); //パワーアップの演出 mgr.GetDreamEffectParts().DreamSyncronizeEventSet(EnemyBattleData.GetInstance().GetMonsterDatas(0), new Vector3(13.0f, 0.8f, -1.0f), new Vector3(-13.0f, 0.8f, -1.0f)); //画像の変更 { List <Sprite> sprites = new List <Sprite>(); sprites.Add(EnemyBattleData.GetInstance().GetMonsterDatas(0).tribesData_.frontDreamTex_); AllEventManager.GetInstance().EventSpriteRendererSet(mgr.GetEnemyMonsterParts().GetEventMonsterSprite(), sprites); AllEventManager.GetInstance().EventSpriteRenderersUpdateExecuteSet(EventSpriteRendererEventManagerExecute.SpriteSet); AllEventManager.GetInstance().AllUpdateEventExecute(); } //BGMの再生 AllEventManager.GetInstance().BGMAudioVolumeChangeEventSet(0.3f); //能力変化の更新 string abnormalStateContext = new AddAbnormalTypeState(AddAbnormalType.Hero).AddAbnormalTypeExecute(EnemyBattleData.GetInstance().GetMonsterDatas(0)); //文字列のイベント AllEventManager.GetInstance().EventTextSet(mgr.GetNovelWindowParts().GetNovelWindowEventText(), abnormalStateContext); AllEventManager.GetInstance().EventTextsUpdateExecuteSet(EventTextEventManagerExecute.CharaUpdate); AllEventManager.GetInstance().AllUpdateEventExecute(mgr.GetEventContextUpdateTime()); //状態異常のイベントのセット EnemyBattleData.GetInstance().GetMonsterDatas(0).battleData_.AbnormalSetStatusInfoPartsEventSet(mgr.GetEnemyStatusInfoParts()); //ウェイト AllEventManager.GetInstance().EventWaitSet(mgr.GetEventWaitTime()); } //交換されていたら if (PlayerBattleData.GetInstance().changeMonsterActive_ == true) { PlayerBattleData.GetInstance().MonsterChangeEventSet(mgr); } //交換されていたら if (EnemyBattleData.GetInstance().changeMonsterActive_ == true) { EnemyBattleData.GetInstance().MonsterChangeEventSet(mgr); } //現在、場に出ているモンスターのデータの取得 IMonsterData enemyMonsterData = EnemyBattleData.GetInstance().GetMonsterDatas(0); IMonsterData playerMonsterData = PlayerBattleData.GetInstance().GetMonsterDatas(0); //現在、場に出ているモンスターの選択技のデータの取得 ISkillData enemySkillData = enemyMonsterData.GetSkillDatas(mgr.enemySelectSkillNumber_); ISkillData playerSkillData = playerMonsterData.GetSkillDatas(mgr.playerSelectSkillNumber_); //技の優先度で行動順を決める if (enemySkillData.triggerPriority_ < playerSkillData.triggerPriority_) { //プレイヤーの戦闘処理 SkillResultSet( mgr , mgr.GetPlayerEffectParts() , mgr.GetEnemyEffectParts() , mgr.GetEnemyMonsterParts() , mgr.GetPlayerStatusInfoParts() , mgr.GetEnemyStatusInfoParts() , mgr.GetPlayerDreamPointInfoParts() , mgr.GetEnemyDreamPointInfoParts() , PlayerBattleData.GetInstance() , EnemyBattleData.GetInstance() , playerMonsterData, playerSkillData, enemyMonsterData ); //エネミーの戦闘処理 SkillResultSet( mgr , mgr.GetEnemyEffectParts() , mgr.GetPlayerEffectParts() , mgr.GetPlayerMonsterParts() , mgr.GetEnemyStatusInfoParts() , mgr.GetPlayerStatusInfoParts() , mgr.GetEnemyDreamPointInfoParts() , mgr.GetPlayerDreamPointInfoParts() , EnemyBattleData.GetInstance() , PlayerBattleData.GetInstance() , enemyMonsterData, enemySkillData, playerMonsterData ); } else if (enemySkillData.triggerPriority_ > playerSkillData.triggerPriority_) { //エネミーの戦闘処理 SkillResultSet( mgr , mgr.GetEnemyEffectParts() , mgr.GetPlayerEffectParts() , mgr.GetPlayerMonsterParts() , mgr.GetEnemyStatusInfoParts() , mgr.GetPlayerStatusInfoParts() , mgr.GetEnemyDreamPointInfoParts() , mgr.GetPlayerDreamPointInfoParts() , EnemyBattleData.GetInstance() , PlayerBattleData.GetInstance() , enemyMonsterData, enemySkillData, playerMonsterData ); //プレイヤーの戦闘処理 SkillResultSet( mgr , mgr.GetPlayerEffectParts() , mgr.GetEnemyEffectParts() , mgr.GetEnemyMonsterParts() , mgr.GetPlayerStatusInfoParts() , mgr.GetEnemyStatusInfoParts() , mgr.GetPlayerDreamPointInfoParts() , mgr.GetEnemyDreamPointInfoParts() , PlayerBattleData.GetInstance() , EnemyBattleData.GetInstance() , playerMonsterData, playerSkillData, enemyMonsterData ); } //素早さで行動順を決める else if ((enemyMonsterData.RealSpeed() * enemyMonsterData.battleData_.RealSpeedParameterRank()) < (playerMonsterData.RealSpeed() * playerMonsterData.battleData_.RealSpeedParameterRank())) { //プレイヤーの戦闘処理 SkillResultSet( mgr , mgr.GetPlayerEffectParts() , mgr.GetEnemyEffectParts() , mgr.GetEnemyMonsterParts() , mgr.GetPlayerStatusInfoParts() , mgr.GetEnemyStatusInfoParts() , mgr.GetPlayerDreamPointInfoParts() , mgr.GetEnemyDreamPointInfoParts() , PlayerBattleData.GetInstance() , EnemyBattleData.GetInstance() , playerMonsterData, playerSkillData, enemyMonsterData ); //エネミーの戦闘処理 SkillResultSet( mgr , mgr.GetEnemyEffectParts() , mgr.GetPlayerEffectParts() , mgr.GetPlayerMonsterParts() , mgr.GetEnemyStatusInfoParts() , mgr.GetPlayerStatusInfoParts() , mgr.GetEnemyDreamPointInfoParts() , mgr.GetPlayerDreamPointInfoParts() , EnemyBattleData.GetInstance() , PlayerBattleData.GetInstance() , enemyMonsterData, enemySkillData, playerMonsterData ); } else if ((enemyMonsterData.RealSpeed() * enemyMonsterData.battleData_.RealSpeedParameterRank()) == (playerMonsterData.RealSpeed() * playerMonsterData.battleData_.RealSpeedParameterRank())) { if (AllSceneManager.GetInstance().GetRandom().Next(0, 2) < 1) { //プレイヤーの戦闘処理 SkillResultSet( mgr , mgr.GetPlayerEffectParts() , mgr.GetEnemyEffectParts() , mgr.GetEnemyMonsterParts() , mgr.GetPlayerStatusInfoParts() , mgr.GetEnemyStatusInfoParts() , mgr.GetPlayerDreamPointInfoParts() , mgr.GetEnemyDreamPointInfoParts() , PlayerBattleData.GetInstance() , EnemyBattleData.GetInstance() , playerMonsterData, playerSkillData, enemyMonsterData ); //エネミーの戦闘処理 SkillResultSet( mgr , mgr.GetEnemyEffectParts() , mgr.GetPlayerEffectParts() , mgr.GetPlayerMonsterParts() , mgr.GetEnemyStatusInfoParts() , mgr.GetPlayerStatusInfoParts() , mgr.GetEnemyDreamPointInfoParts() , mgr.GetPlayerDreamPointInfoParts() , EnemyBattleData.GetInstance() , PlayerBattleData.GetInstance() , enemyMonsterData, enemySkillData, playerMonsterData ); } else { //エネミーの戦闘処理 SkillResultSet( mgr , mgr.GetEnemyEffectParts() , mgr.GetPlayerEffectParts() , mgr.GetPlayerMonsterParts() , mgr.GetEnemyStatusInfoParts() , mgr.GetPlayerStatusInfoParts() , mgr.GetEnemyDreamPointInfoParts() , mgr.GetPlayerDreamPointInfoParts() , EnemyBattleData.GetInstance() , PlayerBattleData.GetInstance() , enemyMonsterData, enemySkillData, playerMonsterData ); //プレイヤーの戦闘処理 SkillResultSet( mgr , mgr.GetPlayerEffectParts() , mgr.GetEnemyEffectParts() , mgr.GetEnemyMonsterParts() , mgr.GetPlayerStatusInfoParts() , mgr.GetEnemyStatusInfoParts() , mgr.GetPlayerDreamPointInfoParts() , mgr.GetEnemyDreamPointInfoParts() , PlayerBattleData.GetInstance() , EnemyBattleData.GetInstance() , playerMonsterData, playerSkillData, enemyMonsterData ); } } else { //エネミーの戦闘処理 SkillResultSet( mgr , mgr.GetEnemyEffectParts() , mgr.GetPlayerEffectParts() , mgr.GetPlayerMonsterParts() , mgr.GetEnemyStatusInfoParts() , mgr.GetPlayerStatusInfoParts() , mgr.GetEnemyDreamPointInfoParts() , mgr.GetPlayerDreamPointInfoParts() , EnemyBattleData.GetInstance() , PlayerBattleData.GetInstance() , enemyMonsterData, enemySkillData, playerMonsterData ); //プレイヤーの戦闘処理 SkillResultSet( mgr , mgr.GetPlayerEffectParts() , mgr.GetEnemyEffectParts() , mgr.GetEnemyMonsterParts() , mgr.GetPlayerStatusInfoParts() , mgr.GetEnemyStatusInfoParts() , mgr.GetPlayerDreamPointInfoParts() , mgr.GetEnemyDreamPointInfoParts() , PlayerBattleData.GetInstance() , EnemyBattleData.GetInstance() , playerMonsterData, playerSkillData, enemyMonsterData ); } //白紙に AllEventManager.GetInstance().EventTextSet(mgr.GetNovelWindowParts().GetNovelWindowEventText(), " "); AllEventManager.GetInstance().EventTextsUpdateExecuteSet(EventTextEventManagerExecute.CharaUpdate); AllEventManager.GetInstance().AllUpdateEventExecute(); //ウェイト AllEventManager.GetInstance().EventWaitSet(0.5f); //イベントの最後 AllEventManager.GetInstance().EventFinishSet(); //交換判定の初期化 PlayerBattleData.GetInstance().changeMonsterActive_ = false; EnemyBattleData.GetInstance().changeMonsterActive_ = false; return(mgr.nowProcessState().NextProcess()); }