princess-synergy/www/js/plugins/JsScript79Set.js
2026-02-14 14:05:38 -06:00

1067 lines
48 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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>", _C_Str).replace("<I>", _I_Str).replace("<B>", _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 _第形態BtlSw = MetaChecker(NEnemy[ENo].enemy() , "第形態BtlSw" , false);
if (_第形態BtlSw != false) {
$gameSwitches.setValue(BtlStatic.SW_戦闘用SW - 1 + Number(_第形態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++;
}
}
}