/* 汎用的に使いそうな処理 _PLステート確認(stateNo) */ class BtlStateData { constructor(_No, _Turn) { this._No = _No; this._Turn = _Turn; } } //■ステート更新処理:_ENo(~-1:プレイヤー側 , 0~:エネミー)■■■■■■■■■■■■■■■■■■■■■■■■■ let StateUpdateFlame = 0; let CheckStateData; Game_Interpreter.prototype.StateUpdate = function (ckENo) { let stateData; let stateName; let animePosX; let animePosY; if (ckENo <= -1) { stateData = NPlayer[(ckENo * -1) - 1]._NState; stateName = NPlayer[(ckENo * -1) - 1]._name; animePosX = NPlayer[(ckENo * -1) - 1]._screenX; animePosY = NPlayer[(ckENo * -1) - 1]._screenY; } else { stateData = NEnemy[ckENo]._NState; stateName = NEnemy[ckENo]._name; animePosX = NEnemy[ckENo]._screenX; animePosY = NEnemy[ckENo]._screenY; } if (StateSyoriNo >= stateData.length) { let outNState = []; for (let i = 0; i <= stateData.length - 1; i++) { if (stateData[i]._No == StOneType.Defense) { //stateData[i]._Turn = Math.floor(stateData[i]._Turn / 2); //防御値は半分にする stateData[i]._Turn = 0; continue; } stateData[i]._Turn--; if (stateData[i]._No == StOneType.CelDmg) { stateData[i]._Turn++; } if (stateData[i]._No == StOneType.SyaseiYoku) { $gameVariables.setValue(VN_射精欲, stateData[i]._Turn) } if (stateData[i]._Turn > 0) { outNState.push(stateData[i]); } else { let message4 = $dataStates[stateData[i]._No].message4; message4 = this.StateMessageReplace(message4, stateName, stateData[i]._No); if (message4 != "") { this.BLogAdd(120, message4); } if (ckENo == -1) { $gameActors.actor(1).removeState(stateData[i]._No); switch (stateData[i]._No) { case STNo_石化: case STNo_メタル化: case STNo_丸呑み: this.BtlLive2Dパラメーター更新(); if (stateData[i]._No == STNo_メタル化 || stateData[i]._No == STNo_石化) { this.SetSpineAnime(PN_CharacterPL, "Idl", true); } break; } } } } Turn0StateRemove_ENo(ckENo, outNState); StateSyoriEnd = true; return; } if (StateUpdateFlame == 1) { if (stateData[StateSyoriNo]._No == StOneType.CelDmg) { StateSyoriNo++; StateEffectFlame = 0; StateUpdateFlame = 0; return; } this.StateEffectSet(ckENo); } if (StateUpdateFlame >= 2) { this.StateDataCng(ckENo); } StateUpdateFlame++; } //CheckNStateInState(NPlayer[0]._NState, _StateId) Game_Interpreter.prototype.IsPlayerメタル化 = function () { return CheckNStateInState(NPlayer[0]._NState, STNo_メタル化); } Game_Interpreter.prototype.StateEffectSet = function (ckENo) { if (ckENo <= -1) { stateData = NPlayer[(ckENo * -1) - 1]._NState; stateName = NPlayer[(ckENo * -1) - 1]._name; animePosX = NPlayer[(ckENo * -1) - 1]._screenX; animePosY = NPlayer[(ckENo * -1) - 1]._screenY; } else { stateData = NEnemy[ckENo]._NState; stateName = NEnemy[ckENo]._name; animePosX = NEnemy[ckENo]._screenX; animePosY = NEnemy[ckENo]._screenY; } CheckStateData = $dataStates[stateData[StateSyoriNo]._No]; CheckStateData.turn = stateData[StateSyoriNo]._Turn; let tAnimeNo = MetaChecker(CheckStateData , "TAnime" , 0); tAnimeNo = Number(tAnimeNo); if (tAnimeNo != 0) { this.PlayAnime(tAnimeNo, animePosX, animePosY); } let PtcAnime = MetaChecker(CheckStateData , "Ptc" , ""); if (PtcAnime != "") { let ckArr = PtcAnime.split(','); let ptcName = ckArr[0]; if (ckArr.length > 1) { animePosX += Number(ckArr[1]); } if (ckArr.length > 2) { animePosY += Number(ckArr[2]); } this.PlayPtcPic(ptcName , animePosX , animePosY); } let message3 = $dataStates[stateData[StateSyoriNo]._No].message3; if (message3 != "") { message3 = this.StateMessageReplace(message3, stateName, stateData[StateSyoriNo]._No) this.BLogAdd(120, message3); } } let StateEffectFlame = 0; let StateSyoriNo = 0; Game_Interpreter.prototype.StateDataCng = function (ENo) { let stateEffectFlame = Number(CheckStateData.meta["EfTime"]); if (stateEffectFlame == "") stateEffectFlame = 0; if (StateEffectFlame == 0) { for (let i = 0; i <= CheckStateData.traits.length - 1; i++) { if (CheckStateData.traits[i].code != 11) { continue; } let stateDamage = 0; switch (CheckStateData.traits[i].dataId) { case StType.TurnDmg: stateDamage = Math.round(CheckStateData.traits[i].value * 100 - 100); if (stateDamage == 677) stateDamage = -200; if (stateDamage > 0) { SetEnemyDmgStac(DType.Dmg, ENo, 15, stateDamage); } else { SetEnemyDmgStac(DType.HpRecv, ENo, 15, -stateDamage); } break; case StType.CelDmg: // stateDamage = Math.round(CheckStateData.turn); // if (stateDamage > 0) { // SetEnemyDmgStac(DType.Dmg, ENo, 15, stateDamage); //ダメージ // SetEnemyDmgStac(DType.HpRecv, ENo, 15, -stateDamage); //マイナスの場合回復 break; } } } StateEffectFlame++; if (StateEffectFlame <= stateEffectFlame) { } else { StateSyoriNo++; StateEffectFlame = 0; StateUpdateFlame = 0; } } Game_Interpreter.prototype.StateMessageReplace = function (msgStr, cName, stateNo, stateTurnCount) { stateTurnCount = typeof stateTurnCount !== 'undefined' ? stateTurnCount : 0; if (msgStr == null) { return ""; } msgStr = msgStr.replace("", cName); msgStr = msgStr.replace("", stateTurnCount); msgStr = msgStr.replace("", "\\I[" + $dataStates[stateNo].iconIndex + "]"); let ckValue = 0; if ($dataStates[stateNo].traits.length >= 0) { for (let i = 0; i <= $dataStates[stateNo].traits.length - 1; i++) { if ($dataStates[stateNo].traits[i].code == 11) { ckValue = Math.round(($dataStates[stateNo].traits[i].value - 1) * 100); } } } if (ckValue < 0) { ckValue *= -1; } msgStr = msgStr.replace("", Math.floor(ckValue)); msgStr = msgStr.replace("", Math.floor(ckValue + 100) / 100); return msgStr; } let Turn0StateRemove_ENo = function (setENo, setNState) { let outArr = []; for (let i = 0; i <= setNState.length - 1; i++) { if (setNState[i]._Turn > 0) { outArr.push(setNState[i]); } } if (setENo <= -1) { NPlayer[-setENo - 1]._NState = outArr; } else { NEnemy[setENo]._NState = outArr; } } let sateAddPlayerFlg = false; let AddNState = function (setNState, setStateNo, setTurn) { if (sateAddPlayerFlg) { sateAddPlayerFlg = false; if (CheckDeckInWakutin(setStateNo)) return; } setTurn = ChangeNStateTurn(setNState, setStateNo, setTurn); let newstflg = true; let _重複Id = MetaChecker($dataStates[setStateNo], "重複ID", "-1") if (_重複Id != -1) { for (let i = 0; i <= setNState.length - 1; i++) { if (setNState[i]._No != setStateNo) { let _ck重複ID = MetaChecker($dataStates[setNState[i]._No], "重複ID", "-1"); if (_ck重複ID == "-1") continue; if (_ck重複ID == _重複Id) { if ($dataStates[setStateNo].priority < $dataStates[setNState[i]._No].priority) { return; } setNState.splice(i, 1); i--; } } } } for (let i = 0; i <= setNState.length - 1; i++) { if (setNState[i]._No == setStateNo) { if (setStateNo == StOneType.Defense) { setNState[i]._Turn += setTurn; } else { if (!MetaChecker($dataStates[setStateNo], "AddTurn", false)) { if (setNState[i]._Turn < setTurn) { setNState[i]._Turn = setTurn; } } else { setNState[i]._Turn += setTurn; } } newstflg = false; } } if (newstflg) { if (setStateNo == StOneType.Defense) { setNState.unshift(new BtlStateData(setStateNo, setTurn)); } else { if (setStateNo == StOneType.CelDmg) { let insertIdx = 0; for (let i = 0; i <= setNState.length - 1; i++) { if (setNState[i]._No == StOneType.Defense) { insertIdx = i + 1; } } setNState.splice(insertIdx, 0, new BtlStateData(setStateNo, setTurn)); return; } setNState.push(new BtlStateData(setStateNo, setTurn)); } } } let ChangeNStateTurn = function (NState, setStateNo, SetTurn) { switch (setStateNo) { case StOneType.SyaseiYoku: if (CheckStateInType(NState, StType.Koufun)) { SetTurn *= 2; } break; } return SetTurn; } let HandStateCng = function () { En_StateCardArr.forEach(handCard => { let getFlg = false; CardData.forEach(ckCardData => { if (ckCardData.CardData.id == handCard.CardNo) getFlg = true; }); if (getFlg) { $gameActors.actor(1).addState_N(handCard.StateNo); } else { $gameActors.actor(1).removeState(handCard.StateNo); } }); } let _PLステート解除 = function (stateNo) { for (let i = 0; i <= NPlayer[0]._NState.length - 1; i++) { if (NPlayer[0]._NState[i]._No == stateNo) { NPlayer[0]._NState.splice(i, 1); i--; } } } let _ステート全員付与 = function (stateNo) { $gameParty.members().forEach(function (actor) { actor.addState(stateNo); }); } let _ステート全員解除 = function (stateNo) { $gameParty.members().forEach(function (actor) { actor.removeState(stateNo); }); } let _PLステート確認 = function (stateNo) { let rtnBool = $gameActors.actor(1).isStateAffected(stateNo); if (!rtnBool) { for (let i = 0; i <= NPlayer[0]._NState.length - 1; i++) { if (NPlayer[0]._NState[i]._No == stateNo) return true; } } return rtnBool; } let _手札ステート付与 = function () { for (let i = 0; i <= En_StCardArr.length - 1; i++) { let addStateFlg = false; let ckCardArr = En_StCardArr[i]._CardNoArr; for (let j = 0; j <= ckCardArr.length - 1; j++) { if (_手札カード存在確認(ckCardArr[j]) > 0) { _ステート全員付与(En_StCardArr[i]._StNo); addStateFlg = true; break; } } if (!addStateFlg) _ステート全員解除(En_StCardArr[i]._StNo); } } let _St_攻撃解除Flg; let StateDelCheck_ENo = function (ENo) { let ckNState; if (ENo <= -1) ckNState = NPlayer[-ENo - 1]._NState; if (ENo > -1) ckNState = NEnemy[ENo]._NState; for (let i = 0; i <= ckNState.length - 1; i++) { if ($dataStates[ckNState[i]._No].meta["攻撃解除"] && _St_攻撃解除Flg) { ckNState.splice(i, 1); i--; } } _St_攻撃解除Flg = false; } let GetStateSetu = function (zokuseiId, turn, value, stateData) { stateData = typeof stateData !== 'undefined' ? stateData : null; for (let i = 0; i <= ZokuData.length - 1; i++) { if (ZokuData[i]._id == zokuseiId) { let rtnStr = ""; if (value >= 0) { rtnStr = ZokuData[i]._setu; } else { value *= -1; rtnStr = ZokuData[i]._msetu; } rtnStr = rtnStr.replace("", Math.floor(value)); rtnStr = rtnStr.replace("", Math.floor(value + 100) / 100); rtnStr = rtnStr.replace("", Math.floor(turn)); if (stateData != null) { let CNo = stateData.stepsToRemove; if (CNo != 0) { let _CardName = $dataWeapons[CNo].name; rtnStr = rtnStr.replace("", _CardName); } } return rtnStr; } } } Game_Interpreter.prototype.AddState_ENo = function (setENo, stateId, setTurn) { if (setENo <= -1) { sateAddPlayerFlg = (setENo * -1) - 1 == 0; AddNState(NPlayer[(setENo * -1) - 1]._NState, stateId, setTurn); if ((setENo * -1) - 1 == 0) { $gameActors.actor(1).addState(stateId); } } else { AddNState(NEnemy[setENo]._NState, stateId, setTurn); } } Game_Interpreter.prototype.RemoveState_ENo = function (ckENo, stateId) { let _CkNState = null; if (ckENo <= -1) { _CkNState = NPlayer[(ckENo * -1) - 1]._NState; } else { _CkNState = NEnemy[ckENo]._NState; } for (let si = 0; si <= _CkNState.length - 1; si++) { if (_CkNState[si]._No == stateId) { _CkNState.splice(si, 1); si--; if ((ckENo * -1) - 1 == 0) { $gameActors.actor(1).removeState(stateId); } } } } Game_Interpreter.prototype.Playerアクセスステート解除 = function () { let _CkNState = null; _CkNState = NPlayer[0]._NState; for (let i = 0; i <= _CkNState.length - 1; i++) { if ($dataStates[_CkNState[i]._No].meta["アクセス"]) { _CkNState.splice(i, 1); i--; } } } Game_Interpreter.prototype.ClearBadStateAll_Chara = function (ckNState) { for (let i = 0; i <= ckNState.length - 1; i++) { if (!$dataStates[ckNState[i]._No].meta["有利"] && !$dataStates[ckNState[i]._No].meta["アクセス時解除不可"]) { ckNState.splice(i, 1); i--; } } } let CngStateTurn_ENo = function (ENo, stateNo, cngTurn) { let ckNState; if (ENo <= -1) ckNState = NPlayer[-ENo - 1]._NState; if (ENo > -1) ckNState = NEnemy[ENo]._NState; for (let i = 0; i <= ckNState.length - 1; i++) { if (ckNState[i]._No == stateNo) { ckNState[i]._Turn += cngTurn; if (ckNState[i]._Turn <= 0) { ckNState.splice(i, 1); break; } } } if (ENo <= -1) NPlayer[(ENo * -1) - 1]._NState = ckNState; if (ENo > -1) NEnemy[ENo]._NState = ckNState; } Game_Battler.prototype.addState_N = function (stateId) { if (!this.isStateAffected(stateId)) { if (!this.isStateAffected(stateId)) { this.addNewState(stateId); this.refresh(); } this.resetStateCounts(stateId); this._result.pushAddedState(stateId); } };