let AddStateTarget = function (atkENo, waitFlame, stateData, shakeSkipFlg) { shakeSkipFlg = typeof shakeSkipFlg !== 'undefined' ? shakeSkipFlg : false; for (let i = 0; i <= TargetArr.length - 1; i++) { DmgESet_SkipFlg = shakeSkipFlg; let setTurn = GetAddStateTurn(atkENo, stateData._No, stateData._Turn); SetDmgStac_State(stateData._No, TargetArr[i], waitFlame, setTurn); if (TargetArr[i] == -1) $gameActors.actor(1).addState_N(stateData._No); } DmgESet_SkipFlg = false; } let GetAddStateTurn = function (attackENo, stateId, stateTurn) { switch (stateId) { case StOneType.CelDmg: let stValue = GetStateTypeSumValue_ENo(attackENo, StType.CelDmgBai); let bairitu = (stValue + 100) / 100; return Math.floor(stateTurn * bairitu); } return stateTurn; } let DmgESet_SkipFlg = false; let SetDmgStac_State = function (stateId, targetENo, waitFlame, setTurn) { let _SetStac = new StacDmgData(); _SetStac._Type = DType.SetState; _SetStac._StId = stateId; _SetStac._CNo = targetENo; _SetStac._Flame = waitFlame; _SetStac._Turn = setTurn; _SetStac._ShakeSkipFlg = DmgESet_SkipFlg; _SetStac._Kouka = CopyArr(CardKoukaArr); EnemyDmgStac.push(_SetStac); DmgESet_SkipFlg = false; } let GetSkillCalcValue = function (atkENo, skillId) { let sikiStr = $dataSkills[skillId].damage.formula; let a = null; try { if (atkENo == -1) { let _TurnCount = NPlayer[(-atkENo - 1)]._TurnCount; a = new CardStatus(UseCard.CardData, _TurnCount); } if (atkENo < -1) a = new EnemyStatus(NPlayer[(-atkENo - 1)]); if (atkENo >= 0) a = new EnemyStatus(NEnemy[atkENo]); } catch (e) { let _TcCard = $dataWeapons[atkENo]; a = new CardStatus(_TcCard, 0); } if (sikiStr == "") return 0; return Math.floor(ReUseBtlFunc(sikiStr)(a)); } let N_FuncArr = []; let ReUseBtlFunc = function (_Siki) { for (let i = 0; i <= N_FuncArr.length - 1; i++) { if (N_FuncArr[i]._Siki == _Siki) { return N_FuncArr[i]._Func } } N_FuncArr.push(new N_Func(_Siki, new Function('a', 'return (' + _Siki + ");"))); return N_FuncArr[N_FuncArr.length - 1]._Func; } let GetChangeDamage_ENo = function (ENo) { try { if (ENo <= -1) { let _rtnVar = NPlayer[(-ENo - 1)]._DmgCng; if (ENo == -1) _rtnVar += _手札AtkChange; return _rtnVar; } if (ENo >= 0) return NEnemy[ENo]._DmgCng; } catch (e) { return 0; } } let CardEditSkill; let UseCardId = -1; let SetDmgStac_Damage = function (atkENo, skillId, waitFlame, cardId, shakeSkipFlg) { cardId = typeof cardId !== 'undefined' ? cardId : -1; shakeSkipFlg = typeof shakeSkipFlg !== 'undefined' ? shakeSkipFlg : false; DmgESet_SkipFlg = shakeSkipFlg if (atkENo > 5) cardId = atkENo; UseCardId = cardId; let baseDmgType = $dataSkills[skillId].damage.type; if (baseDmgType == 0) return; let setDmgType = $dataSkills[skillId].damage.elementId; let ckNState = GetNState_ENo(atkENo); let changeDmgValue = GetChangeDamage_ENo(atkENo); if (befTurnType == EnBefTurn.Skill) { ckNState = []; changeDmgValue = 0; } let baseDmgValue = GetSkillCalcValue(atkENo, skillId); let setDmgValue = baseDmgValue + changeDmgValue; if (skillId == KSkill.妖刀ムラマサ) { setDmgValue = NPlayer[0].mhp - NPlayer[0]._hp ; if (setDmgValue < 0) setDmgValue = 0; let _HpBairitu = 1 + (1 - (NPlayer[0]._hp / NPlayer[0].mhp)) * 2; setDmgValue = Math.floor(setDmgValue * _HpBairitu); } if (skillId != KSkill.自傷ダメージ) { setDmgValue = GetDmgValue_AtkState(setDmgType, setDmgValue, ckNState); } CardEditSkillSetting(setDmgType, cardId, baseDmgValue); switch (setDmgType) { case DType.DefGet: SetDmgStac_State(StOneType.Defense, atkENo, waitFlame, setDmgValue); break; case DType.Draw: case DType.MpRecv: case DType.DeckCAdd: case DType.TrashAdd: case DType.HandAdd: case DType.HandCRecv: case DType.Reload: case DType.HandSute: case DType.ItemAdd: case DType.CmnEv: case DType.SWCng: case DType.Hirumi: case DType.TCDelay: case DType.HCostCng: case DType.HCostHrfRnd: case DType.HCostZeroRnd: case DType.Bit_TurnCng: case DType.Bit_VarCng: case DType.SknCng: case DType.ItemCoolTurnCng: SetEnemyDmgStac(setDmgType, -1, waitFlame, setDmgValue, cardId, skillId); break; case DType.StateDel: for (let i = 0; i <= TargetArr.length - 1; i++) { SetEnemyDmgStac(setDmgType, TargetArr[i], waitFlame, setDmgValue, cardId, skillId); } break; default: let _AtkToCelDmgVar = GetAtkToCellValue(ckNState); let _emCnt = 0; for (let i = 0; i <= NEnemy.length - 1; i++) { if (NEnemy[i]._hp > 0) _emCnt++; } if (_Skill狙撃Dmg > 0 && _emCnt > 1) { setDmgValue += _Skill狙撃Dmg; //setDmgValue += GetDmgValue_AtkState(setDmgType, _Skill狙撃Dmg, ckNState); } for (let i = 0; i <= TargetArr.length - 1; i++) { if (setDmgType == DType.CelAtkDmg) { setDmgValue = GetNStateTurn_ENo(TargetArr[i], StOneType.CelDmg); setDmgValue = GetDmgValue_AtkState(setDmgType, setDmgValue, ckNState); setDmgType = DType.Dmg; } if (ENo_StateCk_Type(TargetArr[i], StType.CelDmg)) { if (_CellDmg倍化Flg) { setDmgValue *= _CellDmg倍率; _CellDmg倍化Flg = false; } } if (ENo_StateCk_Type(TargetArr[i], StType.CelBaria)) { if (GetNStateTurn_ENo(TargetArr[i], StOneType.Defense) > 0) { let _TgtDef = GetNStateTurn_ENo(TargetArr[i], StOneType.Defense); if (setDmgValue > 0) { let ckDmg = setDmgValue; if (ENo_StateCk_Type(TargetArr[i], StType.BaseDef)) { ckDmg = Math.floor(ckDmg / 2); } if (_TgtDef < ckDmg) ckDmg = _TgtDef; if (setDmgType == DType.Dmg) { ckDmg = GetAddStateTurn(atkENo, StOneType.CelDmg, ckDmg); SetDmgStac_State(StOneType.CelDmg, atkENo, waitFlame, ckDmg); } } } } if (ENo_StateCk_Type(TargetArr[i], StType.Reflect)) { if (setDmgValue > 0) { if (setDmgType == DType.Dmg) { let refAtkENo = atkENo; if (refAtkENo >= 0 && refAtkENo >= NEnemy.length) { for (let j = 0; j < NEnemy.length; j++) { if (NEnemy[i]._hp != 0) { refAtkENo = j; break; } } } SetEnemyDmgStac(setDmgType, refAtkENo, waitFlame, setDmgValue, cardId, skillId); } } } if (ENo_StateCk_Type(TargetArr[i], StType.Counter)) { if (setDmgValue > 0) { if (setDmgType == DType.Dmg) { let _HangekiVar = GetStateTypeSumValue_ENo(TargetArr[i], StType.Counter); SetEnemyDmgStac(setDmgType, atkENo, waitFlame, _HangekiVar, cardId, skillId); } } } if (setDmgType == DType.Dmg) _St_攻撃解除Flg = true; if (atkENo == -1 && setDmgValue > 0) { setDmgValue += _手札AtkCng; if (setDmgValue < 0) setDmgValue = 0; } SetEnemyDmgStac(setDmgType, TargetArr[i], waitFlame, setDmgValue, cardId, skillId); if (_AtkToCelDmgVar > 0 && setDmgValue >= 0 && setDmgType == DType.Dmg) { _AtkToCelDmgVar = GetAddStateTurn(atkENo, StOneType.CelDmg, _AtkToCelDmgVar); SetDmgStac_State(StOneType.CelDmg, TargetArr[i], waitFlame, _AtkToCelDmgVar); } } _CellDmg倍率 = 1; break; } UseStateCk(atkENo); } let UseStateCk = function (_ENo) { try { let _CkState; if (_ENo <= -1) _CkState = NPlayer[(-_ENo - 1)]._NState; if (_ENo > -1) _CkState = NEnemy[_ENo]._NState; for (let i = 0; i <= _CkNState.length - 1; i++) { } } catch (e) { } } let GetDmgValue_AtkState = function (dmgType, dmgValue, ckNState) { for (let i = 0; i <= ckNState.length - 1; i++) { let stateTraits = $dataStates[ckNState[i]._No].traits; for (let j = 0; j <= stateTraits.length - 1; j++) { if (stateTraits[j].code != 11) continue; switch (dmgType) { case DType.Dmg: dmgValue = ChangeDmgValue_Traits(dmgValue, stateTraits[j], ckNState[i]); break; } } } return dmgValue; } let GetAtkToCellValue = function (ckNState) { let rtnDmgValue = 0; for (let i = 0; i <= ckNState.length - 1; i++) { let _ckTraits = $dataStates[ckNState[i]._No].traits; for (let j = 0; j <= _ckTraits.length - 1; j++) { if (_ckTraits[j].code != 11) continue; switch (_ckTraits[j].dataId) { case StType.AtkToCel: rtnDmgValue += Math.floor(_ckTraits[j].value * 100 - 100); break; } } } return rtnDmgValue; } let ChangeDmgValue_Traits = function (dmgValue, traits, ckNState) { ckNState = typeof ckNState !== 'undefined' ? ckNState : null; let _StVar = Math.round((traits.value - 1) * 100); switch (traits.dataId) { case StType.ADmgCng: dmgValue += _StVar; break; case StType.ADmgDbl: dmgValue += (_StVar / 100) * dmgValue; dmgValue = Math.floor(dmgValue); break; case StType.CardBaika: if (ckNState != null) { if (UseCardId == $dataStates[ckNState._No].stepsToRemove) { dmgValue *= _StVar; } } break; } return dmgValue; } let CardEditSkillSetting = function (dmgType, cardId, dmgValue) { cardId = typeof cardId !== 'undefined' ? cardId : -1; CardEditSkill = null; switch (dmgType) { case DType.DeckCAdd: case DType.TrashAdd: case DType.HandAdd: CardEditSkill = new CardEditSkillData(); CardEditSkill._CardId = Number(memoSkillArr[1]); CardEditSkill._Maisu = Number(memoSkillArr[2]); break; case DType.SWCng: case DType.CmnEv: CardEditSkill = new CardEditSkillData(); if (cardId != -1) { let _CdData = new CardStatus($dataWeapons[cardId]); if (dmgType == DType.SWCng) CardEditSkill._SWNo = dmgValue; if (dmgType == DType.CmnEv) CardEditSkill._CmnNo = dmgValue; } else { if (dmgType == DType.SWCng) CardEditSkill._SWNo = Number(memoSkillArr[1]); if (dmgType == DType.CmnEv) CardEditSkill._CmnNo = Number(memoSkillArr[1]); } break; } } let DmgMotionSkipFlg = false; let SetEnemyDmgStac = function (dmgType, targetENo, waitFlame, dmgValue, cardId, skillId) { cardId = typeof cardId !== 'undefined' ? cardId : -1; skillId = typeof skillId !== 'undefined' ? skillId : -1; let _SetStac = new StacDmgData(); _SetStac._Type = dmgType; _SetStac._CNo = targetENo; _SetStac._Flame = waitFlame; _SetStac._Var = dmgValue; _SetStac._CardId = cardId; _SetStac._SkillId = skillId; _SetStac._ShakeSkipFlg = DmgESet_SkipFlg; _SetStac._DmgMotionSkipFlg = DmgMotionSkipFlg; _SetStac._CardEditSkill = CardEditSkill; _SetStac._Kouka = CopyArr(CardKoukaArr); EnemyDmgStac.push(_SetStac); DmgESet_SkipFlg = false; DmgMotionSkipFlg = false; } Game_Interpreter.prototype.TextPopUp_ENo = function (ENo, textStr, textSize) { textSize = typeof textSize !== 'undefined' ? textSize : 25; let PopUpPosX = -50; if (ENo <= -1) { _C_Str = NPlayer[-ENo - 1]._name; _SSetX = NPlayer[-ENo - 1]._screenX + PopUpPosX; _SSetY = NPlayer[-ENo - 1]._screenY; _APosX = NPlayer[-ENo - 1]._screenX; _APosY = NPlayer[-ENo - 1]._screenY; } else { _C_Str = NEnemy[ENo]._name; _SSetX = NEnemy[ENo]._screenX + NEnemy[ENo]._IcX - 40; _SSetY = NEnemy[ENo]._screenY - (NEnemy[ENo]._pHeight / 2) + NEnemy[ENo]._IcY; _APosX = NEnemy[ENo]._screenX; _APosY = NEnemy[ENo]._screenY; } this.SetDmgPicture(_SSetX, _SSetY, textStr, textSize); } Game_Interpreter.prototype.ChangeDmgValue_DefENo = function (targetENo, dmgValue, _防御貫通Flg) { _防御貫通Flg = typeof _防御貫通Flg !== 'undefined' ? _防御貫通Flg : false; let _ckNState; if (targetENo <= -1) { _ckNState = NPlayer[-targetENo - 1]._NState; } else { _ckNState = NEnemy[targetENo]._NState; } for (let i = 0; i <= _ckNState.length - 1; i++) { let _Traits = $dataStates[_ckNState[i]._No].traits; for (let j = 0; j <= _Traits.length - 1; j++) { if (_Traits[j].code != 11) continue; switch (_Traits[j].dataId) { case StType.BaseDef: let _TVald = Math.round(dmgValue / 2); if (dmgValue > 0) dmgValue -= _TVald; break; case StType.HiDmgCng: let _TVal = Math.round(((_Traits[j].value - 1) * 100)); if (_TVal < 0 && _防御貫通Flg) _TVal = 0; dmgValue += _TVal; break; case StType.CelHiDmgCng: let _CellTnVar = GetNStateTurn_ENo(targetENo, StOneType.CelDmg); dmgValue -= Math.floor(_CellTnVar / 4); } } } if (dmgValue <= 0) dmgValue = 0; return dmgValue; } /** * 同じ位置にポップアップが出ないようにするための配列 * @type {PopUpPosCheckData[]} */ let PopUpPosCheckArr = []; class PopUpPosCheckData { constructor(setX , setY , ckFrame) { this.setX = setX; this.setY = setY; this.ckFrame = ckFrame; } } let EnemyDmgStac = []; let DmgAnimeFlame = 0; let DmgAnimeName = ""; Game_Interpreter.prototype.DmgEffectUpdate = function () { for (let i = 0; i < PopUpPosCheckArr.length; i++) { if (PopUpPosCheckArr[i].ckFrame > 0) { PopUpPosCheckArr[i].ckFrame--; if (PopUpPosCheckArr[i].ckFrame <= 0) { PopUpPosCheckArr.splice(i, 1); i--; } } } if (DmgAnimeFlame > 0) { DmgAnimeFlame--; if (DmgAnimeFlame <= 0) DmgAnimeName = ""; } let popUpPosX = -50; for (let i = 0; i <= EnemyDmgStac.length - 1; i++) { EnemyDmgStac[i]._Flame--; if (EnemyDmgStac[i]._Flame <= 0) { let dmgType = EnemyDmgStac[i]._Type; let targetENo = EnemyDmgStac[i]._CNo; //攻撃対象: 味方(-1以下) < 主人公(-1) < 敵(0以降) let dmgKouka = EnemyDmgStac[i]._Kouka; this.SetPicStrFont("Arial Black"); let continueFlg = false; switch (dmgType) { case DType.Draw: let DrCounter = 0; for (let j = 0; j <= EnemyDmgStac[i]._Var - 1; j++) { if (CardData.length < BtlStatic._手札最大枚数) { AddCardDrawStac(); DrCounter++; } } this.BLogAdd(180, "Drew " + DrCounter + " card(s)"); this.HandCardPicSort(-1); this.CardDrawMove(); continueFlg = true; break; case DType.DeckCAdd: case DType.TrashAdd: case DType.HandAdd: let cardId = EnemyDmgStac[i]._CardEditSkill._CardId; let maisuValue = EnemyDmgStac[i]._CardEditSkill._Maisu; if (dmgType == DType.DeckCAdd) this.DeckCardAdd(cardId, maisuValue); if (dmgType == DType.TrashAdd) this.DeckTrashAdd(cardId, maisuValue); if (dmgType == DType.HandAdd) this.DeckHandAdd(cardId, maisuValue); continueFlg = true; break; case DType.HandCRecv: for (let j = 0; j <= CardData.length - 1; j++) { if (CardData[j].CardData.wtypeId == CType.異常) { this.HandCard_TrashMove(CardData[j].setPNo); CardData.splice(j, 1); j--; } } continueFlg = true; break; case DType.Reload: this.AllCardTrash_Move(); let drawCount = CardData.length; for (let j = 0; j <= CardData.length - 1; j++) { CardData.splice(j, 1); j--; } SetEnemyDmgStac(DType.Draw, -1, 1, drawCount); continueFlg = true; break; case DType.HandSute: this.AllCardTrash_Move(); for (let j = 0; j <= CardData.length - 1; j++) { CardData.splice(j, 1); j--; } continueFlg = true; break; case DType.SWCng: $gameSwitches.setValue(EnemyDmgStac[i]._CardEditSkill._SWNo, true) continueFlg = true; break; case DType.CmnEv: console.log("Battle action common event activated: " + EnemyDmgStac[i]._CardEditSkill._CmnNo); this.SetCmnEventSc(EnemyDmgStac[i]._CardEditSkill._CmnNo); continueFlg = true; break; case DType.TCDelay: this.SetTCPlayerSkill(EnemyDmgStac[i]._CardId, EnemyDmgStac[i]._Var); continueFlg = true; break; case DType.Hirumi: this.PlayerHirumiEffect(); continueFlg = true; break; case DType.ItemAdd: let itemID = EnemyDmgStac[i]._Var; let itemData = GetBtlItemData(itemID); this.BtlItemAdd(itemID, 1); this.BLogAdd(180, "Obtained " + itemData._name); this.BtlItemBtnDraw(); continueFlg = true; break; case DType.HCostCng: this.HandCardCost_Change(EnemyDmgStac[i]._Var); continueFlg = true; break; case DType.HCostHrfRnd: this.HandCardCost_HrfRndCost(EnemyDmgStac[i]._Var); continueFlg = true; break; case DType.HCostZeroRnd: this.HandCardCost_HrfRndCost(EnemyDmgStac[i]._Var, true); continueFlg = true; break; case DType.StateDel: let ckState = GetNState_ENo(targetENo); for (let j = 0; j <= ckState.length - 1; j++) { if (MetaChecker($dataStates[ckState[j]._No] , "有利" , false) != false) { if (MetaChecker($dataStates[ckState[j]._No] , "剥がれない" , false) == false) { this.BLogAdd(180, GetEnemyName_ENo(targetENo) + "'s \\state[" + ckState[j]._No + "] was removed"); ckState.splice(j, 1); j--; } } } continueFlg = true; break; case DType.SknCng: if ($gameVariables._data[VN_Seikan] == undefined) $gameVariables._data[VN_Seikan] = 0; let _CngVar = EnemyDmgStac[i]._Var; if (CheckStateInType(NPlayer[0]._NState, StType.SeikanJoso)) { let _cngVar = GetStateTypeSumValue(NPlayer[0]._NState, StType.SeikanJoso); _CngVar = EnemyDmgStac[i]._Var * (1 + (_cngVar / 100)); _CngVar = Math.floor(_CngVar); } if (BtlCard_性感位置Str != "") { let ck開発Mode = -1; if (BtlCard_性感位置Str == "口") ck開発Mode = 0; if (BtlCard_性感位置Str == "乳") ck開発Mode = 1; if (BtlCard_性感位置Str == "尻") ck開発Mode = 2; if (BtlCard_性感位置Str == "膣") ck開発Mode = 3; if (ck開発Mode != -1) { let _Keiken = $gameVariables.value(VN_Kaihatu + ck開発Mode); let _開発Rank = 1; if (_Keiken >= $Nupu_PSData.hStData.cRankValue) _開発Rank++; if (_Keiken >= $Nupu_PSData.hStData.bRankValue) _開発Rank++; if (_Keiken >= $Nupu_PSData.hStData.aRankValue) _開発Rank++; if (_Keiken >= H_MaxRank経験値) _開発Rank++; if (_開発Rank == 1) _CngVar *= 0.25; if (_開発Rank == 2) _CngVar *= 0.5; if (_開発Rank == 3) _CngVar *= 1; if (_開発Rank == 4) _CngVar *= 2; if (_開発Rank == 5) _CngVar *= 3; _CngVar = Math.floor(_CngVar); } } $gameVariables._data[VN_Seikan] = $gameVariables._data[VN_Seikan] + _CngVar; if ($gameVariables._data[VN_Seikan] < 0) $gameVariables._data[VN_Seikan] = 0; if ($gameVariables._data[VN_Seikan] > 100) $gameVariables._data[VN_Seikan] = 100; continueFlg = true; break; case DType.Bit_TurnCng: this.Bit_TurnCng(EnemyDmgStac[i]._Var); continueFlg = true; break; case DType.Bit_VarCng: this.Bit_VarCng(EnemyDmgStac[i]._Var); continueFlg = true; break; case DType.BitSet_Atk: this.BtlBit_Set(EnemyDmgStac[i]._SkillId); continueFlg = true; break; case DType.ItemCoolTurnCng: for (let i = 0; i < $gameSystem.AdSysCT.length; i++) { if ($gameSystem.AdSysCT[i].ct > 0) { $gameSystem.AdSysCT[i].ct--; } } continueFlg = true; this.BtlItemBtnDraw(); break; } if (continueFlg) { EnemyDmgStac.splice(i, 1); i--; continue; } let DmgShakeFlg = true; let _C_Str = ""; let _I_Str = ""; let _B_Str = ""; let _SSetX = 0; let _SSetY = 0; let _APosX = 0; let _APosY = 0; if (targetENo <= -1) { if (NPlayer[-targetENo - 1] == undefined) return; _C_Str = NPlayer[-targetENo - 1]._name; _SSetX = NPlayer[-targetENo - 1]._screenX + popUpPosX; _SSetY = NPlayer[-targetENo - 1]._screenY; _APosX = NPlayer[-targetENo - 1]._screenX; _APosY = NPlayer[-targetENo - 1]._screenY; } else { if (NEnemy[targetENo] == undefined) { EnemyDmgStac.splice(i, 1); i--; continue; } _C_Str = NEnemy[targetENo]._name; _SSetX = NEnemy[targetENo]._screenX + NEnemy[targetENo]._IcX - 40; _SSetY = NEnemy[targetENo]._screenY - (NEnemy[targetENo]._pHeight / 2) + NEnemy[targetENo]._IcY; _APosX = NEnemy[targetENo]._screenX; _APosY = NEnemy[targetENo]._screenY; } if (dmgType == DType.SetState) { _SSetY -= 40; let _ckStId = EnemyDmgStac[i]._StId; let _ckSTurn = EnemyDmgStac[i]._Turn; let _StateMsg = $dataStates[_ckStId].message1; _I_Str = "\\I[" + $dataStates[_ckStId].iconIndex + "]"; _B_Str = EnemyDmgStac[i]._Turn; _StateMsg = _StateMsg.replace("", _C_Str).replace("", _I_Str).replace("", _B_Str); this.BLogAdd(180, _StateMsg); let _PosStr = ""; if ($dataStates[_ckStId].meta["有利"]) { _PosStr = "\\state[" + _ckStId + "]" this.SetDmgPicture(_SSetX, _SSetY, _PosStr); DmgShakeFlg = false; } else { switch (_ckStId) { case StOneType.Defense: _PosStr = "\\I[" + $dataStates[_ckStId].iconIndex + "] DEF+" + EnemyDmgStac[i]._Turn; this.SetDmgPicture(_SSetX, _SSetY, _PosStr); DmgShakeFlg = false; break; case StOneType.CelDmg: this.SetDmgPicture(_SSetX, _SSetY, _ckSTurn, 31); break; default: _PosStr = "\\state[" + _ckStId + "]" this.SetDmgPicture(_SSetX, _SSetY, _PosStr); } } if (targetENo <= -1) { sateAddPlayerFlg = -targetENo - 1 == 0; AddNState(NPlayer[-targetENo - 1]._NState, _ckStId, _ckSTurn); if (-targetENo - 1 == 0) { $gameActors.actor(1).addState(_ckStId); } } else { AddNState(NEnemy[targetENo]._NState, _ckStId, _ckSTurn); } } else { let setDmgValue = EnemyDmgStac[i]._Var; let _BLogStr = ""; let _SetCol = 29; let _dmgSkipFlg = false; switch (dmgType) { case DType.HpRecv: case DType.HpKyuketu: if (dmgType == DType.HpKyuketu) setDmgValue = _Skill吸血Dmg; DmgShakeFlg = false; _BLogStr = _C_Str + " recovered " + setDmgValue + " HP"; this.BLogAdd(180, _BLogStr, _SetCol); this.SetDmgPicture(_SSetX, _SSetY, setDmgValue, _SetCol); setDmgValue *= -1; break; case DType.MpRecv: DmgShakeFlg = false; _BLogStr = _C_Str + " recovered " + setDmgValue + " MP"; this.BLogAdd(180, _BLogStr, _SetCol); this.MPKaihuku(setDmgValue); _SetCol = 23; this.SetDmgPicture(_SSetX, _SSetY, setDmgValue, _SetCol); setDmgValue = 0; break; case DType.HPMstCng: var _grvdFlg = false; try { if (MetaChecker($dataSkills[EnemyDmgStac[i]._SkillId] , "グラビデ" , false) != false) { _grvdFlg = true; } } catch (e) { } if (targetENo <= -1) { if (_grvdFlg) NPlayer[(-targetENo - 1)]._hp = Math.round(NPlayer[(-targetENo - 1)]._hp / setDmgValue); else NPlayer[(-targetENo - 1)]._hp = setDmgValue; } else { if (_grvdFlg) NEnemy[targetENo]._hp = Math.round(NEnemy[targetENo]._hp / setDmgValue); else NEnemy[targetENo]._hp = setDmgValue; } _dmgSkipFlg = true; break; default: let _DefBrakeFlg = (dmgKouka.indexOf(KSkill.防御貫通) != -1); setDmgValue = this.ChangeDmgValue_DefENo(targetENo, setDmgValue, _DefBrakeFlg); let _DefPoint = GetNStateTurn_ENo(targetENo, StOneType.Defense); if (_DefPoint != -1) { _DefPoint -= setDmgValue; CngStateTurn_ENo(targetENo, StOneType.Defense, -setDmgValue); if (dmgType == DType.DefBrake) { this.BLogAdd(180, "Reduced " + _C_Str + "'s Defense by " + setDmgValue); EnemyDmgStac.splice(i, 1); i--; continue; } if (_DefPoint >= 0 && !_DefBrakeFlg) { _DefCmpFlg = true; this.BLogAdd(180, _C_Str + " mitigated " + setDmgValue + " damage"); this.PlayAnime(GardAnimeId, _APosX, _APosY); EnemyDmgStac.splice(i, 1); i--; continue; } else { if (!_DefBrakeFlg) { setDmgValue = -_DefPoint; } } } if (dmgType == DType.DefBrake) { EnemyDmgStac.splice(i, 1); i--; continue; } this.BLogAdd(180, _C_Str + " took " + setDmgValue + " damage!!"); this.SetDmgPicture(_SSetX, _SSetY, setDmgValue); if (setDmgValue > 0) _Skill吸血Dmg += setDmgValue; } if (!_dmgSkipFlg) { if (targetENo <= -1) { NPlayer[-targetENo - 1]._hp -= setDmgValue; if (targetENo == -1) { if (NPlayer[0]._hp > NPlayer[0].mhp) NPlayer[0]._hp = NPlayer[0].mhp; if (NPlayer[0]._hp <= 0) { NPlayer[0]._hp = 0; if (ENo_StateCk_Type(targetENo, StType.Kuisibari)) { this.BLogAdd(180, _C_Str + " endured " + setDmgValue + " damage!!"); NPlayer[0]._hp = 1; DelStateType_ENo(-1 , StType.Kuisibari); } } } else { this.DownCheck_Mikata(EnemyDmgStac[i]); } } else { NEnemy[targetENo]._hp -= setDmgValue; if ($gameSwitches.value(BtlStatic.SW_ラスボス演出)) { let par50_1 = 0.5; if (NEnemy[targetENo]._hp < Math.floor(NEnemy[targetENo].mhp * par50_1) && !$gameSwitches.value(841) && !$gameSwitches.value(1346)) { NEnemy[targetENo]._hp = Math.floor(NEnemy[targetENo].mhp * par50_1); NEnemy[targetENo]._NState = []; } let par60 = 0.6; if (NEnemy[targetENo]._hp < Math.floor(NEnemy[targetENo].mhp * par60) && $gameSwitches.value(841) && !$gameSwitches.value(1344)) { NEnemy[targetENo]._hp = Math.floor(NEnemy[targetENo].mhp * par60); NEnemy[targetENo]._NState = []; } let par25 = 0.25; if (NEnemy[targetENo]._hp < Math.floor(NEnemy[targetENo].mhp * par25) && $gameSwitches.value(1344) && !$gameSwitches.value(1345)) { NEnemy[targetENo]._hp = Math.floor(NEnemy[targetENo].mhp * par25); NEnemy[targetENo]._NState = []; } } if (NEnemy[targetENo]._hp > NEnemy[targetENo].mhp) NEnemy[targetENo]._hp = NEnemy[targetENo].mhp; if (setDmgValue > 0) this.DownCheck_Enemy(EnemyDmgStac[i]); } } } if (DmgShakeFlg && StateSyoriEnd && (targetENo == -1)) { if (!EnemyDmgStac[i]._DmgMotionSkipFlg) this.PlayerHirumiEffect(); } if (DmgShakeFlg && !EnemyDmgStac[i]._ShakeSkipFlg) { $gameScreen.startShake(3, 20, 5); } } if (EnemyDmgStac[i]._Flame <= 0) { EnemyDmgStac.splice(i, 1); i--; } } this.DmgPicMove_Update(); } Game_Interpreter.prototype.HandCardCost_Change = function (cngValue) { for (let i = 0; i <= CardData.length - 1; i++) { if (CardData[i].Cost != "All") { CardData[i].Cost += cngValue; } if (cngValue < 0) CardData[i].MoveAftPtc = "BtlCostCng_Up"; if (cngValue > 0) CardData[i].MoveAftPtc = "BtlCostCng_Down"; if (CardData[i].Cost < 0) CardData[i].Cost = 0; if (CardData[i].Cost > 9) CardData[i].Cost = 9; this.CardReDrawC(i); CardData[i].KeepPicData = this.PicObjGet(CardData[i].setPNo); } } Game_Interpreter.prototype.HandCardCost_HrfRndCost = function (_CngVar, _ZeroFlg) { _ZeroFlg = typeof _ZeroFlg !== 'undefined' ? _ZeroFlg : false; let _HarfArr = []; for (let i = 0; i <= _CngVar - 1; i++) { if (_HarfArr.length >= CardData.length) break; let _SetNo = NRandGet(CardData.length - 1); if (_HarfArr.indexOf(_SetNo) != -1) { i--; continue; } _HarfArr.push(_SetNo); } for (let i = 0; i <= _HarfArr.length - 1; i++) { let _ckNo = _HarfArr[i]; if (CardData[_ckNo].Cost != "All") { if (_ZeroFlg) { CardData[_ckNo].Cost = 0; } else { CardData[_ckNo].Cost = Math.floor(CardData[_ckNo].Cost / 2); } } if (CardData[_ckNo].Cost < 0) CardData[_ckNo].Cost = 0; CardData[_ckNo].MoveAftPtc = "BtlCostCng_Up"; this.CardReDrawC(_ckNo); CardData[_ckNo].KeepPicData = this.PicObjGet(CardData[_ckNo].setPNo); } } let _SetBitType = ""; Game_Interpreter.prototype.BtlBit_Set = function (_SkillId) { let _SetTurn = 3; let _BitFType = MetaChecker($dataSkills[_SkillId], "FType", "Atk"); if (_所持レリック確認(Itm_Reric.ビットTn増加)) _SetTurn += 4; NPlayer[0]._BtlBit.unshift(new BtlBitData(_BitFType, 10, _SetTurn)); } Game_Interpreter.prototype.PlayerHirumiEffect = function (voiceOffFlg) { voiceOffFlg = typeof voiceOffFlg !== 'undefined' ? voiceOffFlg : false; if (plNotHirumi) return; Live2D_WaitSetTime = 40; spainWaitAnimeFlame = 30; if (!this.IsPlayerメタル化()) this.SetSpineAnime(PN_CharacterPL, "Dmg", false); if (BtlRomashaFlg && !this.IsPlayerメタル化()) { if (!voiceOffFlg) { if (NPlayer[0].hp <= 0) { this.PRandVoice("romasha",["h1_505_tuuan","h1_506_nnfuu","h1_510_hiiuu","h1_511_kufuu","h1_514_afuu"]); } else { this.PRandVoice("romasha",["btl_395_kyaa","btl_396_ngu","btl_397","btl_398_ita","btl_398_ita_2","btl_399_au","btl_400_damee","btl_401_iyaaa"]); } } if (DmgAnimeName != "") { // let nowPlayAnime = PlayL2DAnimeName(MdlRomashaBattle , 0); // if (nowPlayAnime != "battale_bottomdamage" && nowPlayAnime != "battale_topdamage") { // L2dSetMotion(MdlRomashaBattle, DmgAnimeName); if (!this.IsPlayerメタル化()) L2dSetMotion(MdlRomashaBattle, DmgAnimeName); } else { DmgAnimeFlame = 20; if (Math.random() >= 0.5) { L2dSetMotion(MdlRomashaBattle, "battale_bottomdamage"); DmgAnimeName = "battale_bottomdamage"; } else { L2dSetMotion(MdlRomashaBattle, "battale_topdamage"); DmgAnimeName = "battale_topdamage"; } } this.BtlLive2DParamSet_State(); } } Game_Interpreter.prototype.DownCheck_Mikata = function (dmgStacData) { let charaNo = -dmgStacData._CNo - 1; let pictureNo = NPlayer[charaNo]._PicNo; if (NPlayer[charaNo].SpineFlg) { let idlName = GetEnemyIdlName(NPlayer[charaNo]); this.SetSpineAnime(PN_CharacterPL + pictureNo, "Dmg", false, 0, 100); this.AddSpineAnime(PN_CharacterPL + pictureNo, idlName, true, 0, 100); } if (btl味方VoiceData.isVoice) { if (NPlayer[charaNo]._hp <= 0) { if (btl味方VoiceData.DownVoice.length > 0) { this.PRandVoice(btl味方VoiceData.charaName, btl味方VoiceData.DownVoice); } } else { if (btl味方VoiceData.DmgVoice.length > 0) { this.PRandVoice(btl味方VoiceData.charaName, btl味方VoiceData.DmgVoice); } } } if (NPlayer[charaNo]._hp <= 0) { NPlayer[charaNo]._hp = 0; this.PicCngColor(PN_CharacterPL + pictureNo, [220, 220, 220, 0], 20); this.MovePict(PN_CharacterPL + pictureNo, NPlayer[charaNo]._screenX, NPlayer[charaNo]._screenY - 10, 25, 0 , -100 * NPlayer[charaNo].SpineXScale , 100 * Math.abs(NPlayer[charaNo].SpineXScale)); this.DelSprite(PN_NextIcoPL + pictureNo); this.DelSprite(PN_NextPicPL + pictureNo); let enemyData = GetEnemyData_ENo(-charaNo - 1); if (MetaChecker(enemyData, "残骸", "Not") != "Not") { this.SetPictC(PN_CharacterPL + pictureNo, "enemies/" + enemyData.battlerName + "_Down", NPlayer[charaNo]._screenX, NPlayer[charaNo]._screenY, 255, -100); } let metaStr = MetaChecker(enemyData, "死時SW", ""); if (metaStr != "") $gameSwitches.setValue(BtlSwCk(metaStr), true); let deadAnime = MetaChecker(enemyData, "SpineDead", false); if (deadAnime != false) { this.SetSpineAnime(PN_CharacterPL + pictureNo, deadAnime, false, 0, 100); } this.BLogAdd(180, NPlayer[charaNo]._name + " was defeated!!"); this.RemoveTCData_ENo(dmgStacData._CNo); N_Sprite_DLayer = 1; this.DelSprite(PN_DifNum_PL + pictureNo); N_Sprite_DLayer = 0; } if (NPlayer[charaNo]._hp > NPlayer[charaNo].mhp) { NPlayer[charaNo]._hp = NPlayer[charaNo].mhp; } } Game_Interpreter.prototype.DownCheck_Enemy = function (dmgStacData) { let ENo = dmgStacData._CNo; let pictureNo = NEnemy[ENo]._PicNo; if (NEnemy[ENo].SpineFlg) { let idlName = GetEnemyIdlName(NEnemy[ENo]); this.SetSpineAnime(PN_Character + pictureNo, "Dmg", false, 0, 100); this.AddSpineAnime(PN_Character + pictureNo, idlName, true, 0, 100); } if (NEnemy[ENo]._hp <= 0) this.EnemyDown_ENo(ENo); if (NEnemy[ENo]._hp > NEnemy[ENo].mhp) { NEnemy[ENo]._hp = NEnemy[ENo].mhp; } } var bラスボス撃破 = false; Game_Interpreter.prototype.EnemyDown_ENo = function (ENo) { let pictureNo = NEnemy[ENo]._PicNo; NEnemy[ENo]._hp = 0; var _第2形態BtlSw = MetaChecker(NEnemy[ENo].enemy() , "第2形態BtlSw" , false); if (_第2形態BtlSw != false) { $gameSwitches.setValue(BtlStatic.SW_戦闘用SW - 1 + Number(_第2形態BtlSw) , true); NEnemy[ENo]._hp = 1; return; } if ($gameSwitches.value(BtlStatic.SW_ラスボス演出)) { bラスボス撃破 = true; return; } this.SpriteCngColor(PN_Character + pictureNo, [220, 220, 220, 0], 20); if (NEnemy[ENo].SpineFlg) { this.MovePict(PN_Character + pictureNo, NEnemy[ENo]._screenX, NEnemy[ENo]._screenY - 10, 25, 0, true, true); } else { this.MoveSprite(PN_Character + pictureNo, NEnemy[ENo]._screenX, NEnemy[ENo]._screenY - 10, 25, 0, true, true); } let enemyData = GetEnemyData_ENo(ENo); if (MetaChecker(enemyData, "残骸", "Not") != "Not") { this.SetSpriteC(PN_Character + pictureNo, "enemies/" + enemyData.battlerName + "_Down", NEnemy[ENo]._screenX, NEnemy[ENo]._screenY); } else { this.DelSprite(PN_NextIco + pictureNo); this.DelSprite(PN_NextDmg + pictureNo); } let deathStr = MetaChecker(enemyData, "死時SW", "Not"); if (deathStr != "Not") $gameSwitches.setValue(Number(deathStr), true); let deadAnime = MetaChecker(enemyData, "SpineDead", false); if (deadAnime != false) { this.SetSpineAnime(PN_Character + pictureNo, deadAnime, false, 0, 100); } this.DelSprite(PN_NextPic + pictureNo); this.BLogAdd(180, NEnemy[ENo]._name + " was defeated!!"); this.RemoveTCData_ENo(ENo); if (BtlEnemyCellDmgFlg) { BtlEnemyCellDmgFlg = false; NextTurnCardMoveSkip = true; } N_Sprite_DLayer = 1; this.DelSprite(PN_DifNum + pictureNo); N_Sprite_DLayer = 0; } class DmgPicMover { constructor() { this._x = 0; this._y = 0; this._colId = 0; this._flame = 0; this._Val = 0; this._MStr = []; this._MStrC = 0; this._CSpace = 30; this._StrSize = 25; } } let _DmgPicArr = [ new DmgPicMover(), new DmgPicMover(), new DmgPicMover(), new DmgPicMover(), new DmgPicMover(), new DmgPicMover(), new DmgPicMover(), new DmgPicMover(), new DmgPicMover() ]; let DmCounter = 0; Game_Interpreter.prototype.SetDmgPicture = function (setX, setY, dmgValue, colorId) { colorId = typeof colorId !== 'undefined' ? colorId : 0; if (dmgValue == undefined) { return; } if (dmgValue.indexOf != undefined) { if (dmgValue.indexOf("\\state[") != -1) { for (let i = 0; i < PopUpPosCheckArr.length; i++) { if (PopUpPosCheckArr[i].setX == setX && PopUpPosCheckArr[i].setY == setY) { setY -= 32; i = 0; } } PopUpPosCheckArr.push(new PopUpPosCheckData(setX, setY, 15)); } } let randHani = 50; let randX = Math.random() * randHani - (randHani / 2); let randY = Math.random() * randHani - (randHani / 2); _DmgPicArr[DmCounter]._colId = colorId; _DmgPicArr[DmCounter]._Val = dmgValue; _DmgPicArr[DmCounter]._MStr = []; if (dmgValue.length > 3) { randX = 0; randY = 0; _DmgPicArr[DmCounter]._StrSize = 25; _DmgPicArr[DmCounter]._MStr.push(dmgValue); } else { if (dmgValue < 10) _DmgPicArr[DmCounter]._StrSize = 25; if (dmgValue >= 10) { _DmgPicArr[DmCounter]._StrSize = 30; _DmgPicArr[DmCounter]._CSpace = 23 } if (dmgValue > 60) { _DmgPicArr[DmCounter]._StrSize = 40; _DmgPicArr[DmCounter]._CSpace = 30; if (_DmgPicArr[DmCounter]._colId == 0) _DmgPicArr[DmCounter]._colId = 6; } if (dmgValue > 100) { _DmgPicArr[DmCounter]._StrSize = 50; _DmgPicArr[DmCounter]._CSpace = 40; if (_DmgPicArr[DmCounter]._colId == 0) _DmgPicArr[DmCounter]._colId = 14; } for (let i = 0; i <= String(dmgValue).length - 1; i++) { _DmgPicArr[DmCounter]._MStr.push(String(dmgValue).substr(i, 1)); } } _DmgPicArr[DmCounter]._x = setX + randX; _DmgPicArr[DmCounter]._y = setY + randY; _DmgPicArr[DmCounter]._MStrC = 0; _DmgPicArr[DmCounter]._flame = 1; DmCounter++; if (DmCounter >= 8) DmCounter = 0; } const OneMojiFlame = 5; Game_Interpreter.prototype.DmgPicMove_Update = function () { for (di = 0; di <= _DmgPicArr.length - 1; di++) { if (_DmgPicArr[di]._flame != 0) { let strSpace = _DmgPicArr[di]._CSpace; if (_DmgPicArr[di]._flame == 1) { let outLineCng = "\\oc[rgb(0,0,0)]\\ow[6] "; let colCng = ""; if (_DmgPicArr[di]._colId != 0) colCng = "\\C[" + _DmgPicArr[di]._colId + "]"; for (let mi = 0; mi <= _DmgPicArr[di]._MStr.length - 1; mi++) { this.SetPicStrFont("Arial Black"); this.SpriteStr(PN_DmgTxtE + mi + (3 * di), outLineCng + colCng + _DmgPicArr[di]._MStr[mi] + " ", _DmgPicArr[di]._StrSize, _DmgPicArr[di]._x + mi * strSpace, _DmgPicArr[di]._y, 0); } } if (_DmgPicArr[di]._flame < 60) { if (_DmgPicArr[di]._flame % 6 == 2 && _DmgPicArr[di]._MStrC != _DmgPicArr[di]._MStr.length) { this.EMoveSet("easeOutBack"); this.MoveSprite(PN_DmgTxtE + _DmgPicArr[di]._MStrC + (3 * di), _DmgPicArr[di]._x + _DmgPicArr[di]._MStrC * strSpace, _DmgPicArr[di]._y - 20, 10, 255); _DmgPicArr[di]._MStrC++; this.EMoveSet(""); } } else { if (_DmgPicArr[di]._flame == 61) { _DmgPicArr[di]._MStrC = 0; } if (_DmgPicArr[di]._flame % 6 == 2 && _DmgPicArr[di]._MStrC != _DmgPicArr[di]._MStr.length) { this.EMoveSet("easeOutBack"); this.MoveSprite(PN_DmgTxtE + _DmgPicArr[di]._MStrC + (3 * di), _DmgPicArr[di]._x + _DmgPicArr[di]._MStrC * strSpace, _DmgPicArr[di]._y - 40, 10, 0); _DmgPicArr[di]._MStrC++; this.EMoveSet(""); } if (_DmgPicArr[di]._flame == 90) { _DmgPicArr[di]._flame = 0; continue; } } _DmgPicArr[di]._flame++; } } }