alter-egoism/js/plugins/CBR_core.js

2438 lines
81 KiB
JavaScript
Raw Permalink 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.

CBR_h_event_data = null;
DataManager._databaseFiles.push({ name: "CBR_h_event_data", src: "CBR_h_event_data.json" });
Window_Base.prototype.drawTextS = function (text, x, y, maxWidth, align) {
this.contents.drawTextS(text, x, y, maxWidth, this.lineHeight(), align);
};
Bitmap.prototype.drawTextS = function (text, x, y, maxWidth, lineHeight, align) {
// [Note] Different browser makes different rendering with
// textBaseline == 'top'. So we use 'alphabetic' here.
const context = this.context;
const alpha = context.globalAlpha;
maxWidth = maxWidth || 0xffffffff;
let tx = x;
let ty = Math.round(y + lineHeight / 2 + this.fontSize * 0.35);
if (align === "center") {
tx += maxWidth / 2;
}
if (align === "right") {
tx += maxWidth;
}
context.save();
context.font = this._makeFontNameText();
context.textAlign = align || "left";
context.textBaseline = "alphabetic";
context.globalAlpha = 1;
//this._drawTextOutline(text, tx, ty, maxWidth);
context.globalAlpha = alpha;
this._drawTextBody(text, tx, ty, maxWidth);
context.restore();
this._baseTexture.update();
};
Window_Base.prototype.drawTextM = function (text, x, y, maxWidth, align) {
this.contents.drawTextM(text, x, y, maxWidth, this.lineHeight(), align);
};
Bitmap.prototype.drawTextM = function (text, x, y, maxWidth, lineHeight, align) {
// [Note] Different browser makes different rendering with
// textBaseline == 'top'. So we use 'alphabetic' here.
const context = this.context;
const alpha = context.globalAlpha;
maxWidth = maxWidth || 0xffffffff;
let tx = x;
let ty = Math.round(y + lineHeight / 2 + this.fontSize * 0.35);
if (align === "center") {
tx += maxWidth / 2;
}
if (align === "right") {
tx += maxWidth;
}
context.save();
context.font = this._makeFontNameText();
context.textAlign = align || "left";
context.textBaseline = "alphabetic";
context.globalAlpha = 1;
this._drawTextOutlineM(text, tx, ty, maxWidth);
context.globalAlpha = alpha;
this._drawTextBody(text, tx, ty, maxWidth);
context.restore();
this._baseTexture.update();
};
Bitmap.prototype._drawTextOutlineM = function (text, tx, ty, maxWidth) {
const context = this.context;
context.strokeStyle = this.textColor;
context.lineWidth = 1;
context.lineJoin = "round";
context.strokeText(text, tx, ty, maxWidth);
};
Window_Base.prototype.drawTextExS = function (text, x, y, width) {
//this.resetFontSettings();
const textState = this.createTextState(text, x, y, width);
this.processAllTextS(textState);
return textState.outputWidth;
};
Window_Base.prototype.processAllTextS = function (textState) {
while (textState.index < textState.text.length) {
this.processCharacterS(textState);
}
this.flushTextStateS(textState);
};
Window_Base.prototype.processCharacterS = function (textState) {
const c = textState.text[textState.index++];
if (c.charCodeAt(0) < 0x20) {
this.flushTextStateS(textState);
this.processControlCharacterS(textState, c);
} else {
textState.buffer += c;
}
};
Window_Base.prototype.processControlCharacterS = function (textState, c) {
if (c === "\n") {
this.processNewLineS(textState);
}
if (c === "\x1b") {
const code = this.obtainEscapeCode(textState);
this.processEscapeCharacter(code, textState);
}
};
Window_Base.prototype.processNewLineS = function (textState) {
textState.x = textState.startX;
textState.y += textState.height - 3;
textState.height = this.calcTextHeight(textState);
};
Window_Base.prototype.flushTextStateS = function (textState) {
const text = textState.buffer;
const rtl = textState.rtl;
const width = this.textWidth(text);
const height = textState.height;
const x = rtl ? textState.x - width : textState.x;
const y = textState.y;
if (textState.drawing) {
this.contents.drawTextS(text, x, y, width, height);
}
textState.x += rtl ? -width : width;
textState.buffer = this.createTextBuffer(rtl);
const outputWidth = Math.abs(textState.x - textState.startX);
if (textState.outputWidth < outputWidth) {
textState.outputWidth = outputWidth;
}
textState.outputHeight = y - textState.startY + height;
};
Window_Base.prototype.drawTextExM = function (text, x, y, width) {
//this.resetFontSettings();
const textState = this.createTextState(text, x, y, width);
this.processAllTextM(textState);
return textState.outputWidth;
};
Window_Base.prototype.processAllTextM = function (textState) {
while (textState.index < textState.text.length) {
this.processCharacterM(textState);
}
this.flushTextStateM(textState);
};
Window_Base.prototype.processCharacterM = function (textState) {
const c = textState.text[textState.index++];
if (c.charCodeAt(0) < 0x20) {
this.flushTextStateM(textState);
this.processControlCharacterM(textState, c);
} else {
textState.buffer += c;
}
};
Window_Base.prototype.processControlCharacterM = function (textState, c) {
if (c === "\n") {
this.processNewLineM(textState);
}
if (c === "\x1b") {
const code = this.obtainEscapeCode(textState);
this.processEscapeCharacter(code, textState);
}
};
Window_Base.prototype.processNewLineM = function (textState) {
textState.x = textState.startX;
textState.y += textState.height - 3;
textState.height = this.calcTextHeight(textState);
};
Window_Base.prototype.flushTextStateM = function (textState) {
const text = textState.buffer;
const rtl = textState.rtl;
const width = this.textWidth(text);
const height = textState.height;
const x = rtl ? textState.x - width : textState.x;
const y = textState.y;
if (textState.drawing) {
this.contents.drawTextM(text, x, y, width, height);
}
textState.x += rtl ? -width : width;
textState.buffer = this.createTextBuffer(rtl);
const outputWidth = Math.abs(textState.x - textState.startX);
if (textState.outputWidth < outputWidth) {
textState.outputWidth = outputWidth;
}
textState.outputHeight = y - textState.startY + height;
};
//ゲージのラベルをちょっと右に
Sprite_Gauge.prototype.drawLabel = function () {
const label = this.label();
const x = this.labelOutlineWidth() / 2 + 4;
const y = this.labelY();
const width = this.bitmapWidth();
const height = this.textHeight();
this.setupLabelFont();
this.bitmap.paintOpacity = this.labelOpacity();
this.bitmap.drawText(label, x, y, width, height, "left");
this.bitmap.paintOpacity = 255;
};
Sprite_Gauge.prototype.currentValue = function () {
if (this._battler) {
switch (this._statusType) {
case "hp":
return this._battler.hp;
case "mp":
return this._battler.mp;
case "exp":
return this._battler.nextLevelExp() - this._battler.currentLevelExp() - this._battler.nextRequiredExp();
case "tp":
return this._battler.tp;
case "time":
return this._battler.tpbChargeTime();
}
}
return NaN;
};
Sprite_Gauge.prototype.currentMaxValue = function () {
if (this._battler) {
switch (this._statusType) {
case "hp":
return this._battler.mhp;
case "mp":
return this._battler.mmp;
case "exp":
return this._battler.nextLevelExp() - this._battler.currentLevelExp();
case "tp":
return this._battler.maxTp();
case "time":
return 1;
}
}
return NaN;
};
//ゲージの数値
Sprite_Gauge.prototype.drawValue = function () {
let currentValue = this.currentValue();
switch (this._statusType) {
case "hp":
currentValue += ` / ${this._battler.mhp}`;
break;
case "mp":
currentValue += ` / ${this._battler.mmp}`;
break;
}
const width = this.bitmapWidth();
const height = this.textHeight();
this.setupValueFont();
this.bitmap.drawText(currentValue, 0, 0, width, height, "right");
};
Sprite_Gauge.prototype.label = function () {
switch (this._statusType) {
case "hp":
return TextManager.hpA;
case "mp":
return TextManager.mpA;
case "exp":
return "Until next LV";
case "tp":
return TextManager.tpA;
default:
return "";
}
};
Sprite_Gauge.prototype.valueColor = function () {
switch (this._statusType) {
case "hp":
return ColorManager.hpColor(this._battler);
case "mp":
return ColorManager.mpColor(this._battler);
case "exp":
return "#FFFFFF";
case "tp":
return ColorManager.tpColor(this._battler);
default:
return ColorManager.normalColor();
}
};
Sprite_Gauge.prototype.gaugeColor1 = function () {
switch (this._statusType) {
case "hp":
return "#00E19C";
case "mp":
return "#019BE1";
case "exp":
return "#FFFFFF";
case "tp":
return ColorManager.tpGaugeColor1();
case "time":
return ColorManager.ctGaugeColor1();
default:
return ColorManager.normalColor();
}
};
Sprite_Gauge.prototype.gaugeColor2 = function () {
switch (this._statusType) {
case "hp":
return "#00E19C";
case "mp":
return "#019BE1";
case "exp":
return "#FFFFFF";
case "tp":
return ColorManager.tpGaugeColor2();
case "time":
return ColorManager.ctGaugeColor2();
default:
return ColorManager.normalColor();
}
};
function Sprite_Gauge_Battle() {
this.initialize(...arguments);
}
Sprite_Gauge_Battle.prototype = Object.create(Sprite_Gauge.prototype);
Sprite_Gauge_Battle.prototype.constructor = Sprite_Gauge_Battle;
//ゲージセットの枠の位置
Sprite_Gauge_Battle.prototype.bitmapHeight = function () {
return 48;
};
//ゲージの位置と大きさ調整
Sprite_Gauge_Battle.prototype.gaugeX = function () {
return 0;
};
Sprite_Gauge_Battle.prototype.drawGauge = function () {
const gaugeX = this.gaugeX();
const gaugeY = this.textHeight() - this.gaugeHeight() + 12;
const gaugewidth = this.bitmapWidth() - gaugeX;
const gaugeHeight = this.gaugeHeight();
this.drawGaugeRect(gaugeX, gaugeY, gaugewidth, gaugeHeight);
};
Sprite_Gauge_Battle.prototype.bitmapWidth = function () {
return 156;
};
Sprite_Gauge_Battle.prototype.gaugeHeight = function () {
return 12;
};
//ゲージのフォントと色
Sprite_Gauge_Battle.prototype.setupLabelFont = function () {
this.bitmap.fontFace = this._statusType == "exp" ? "serif" : "Times New Roman";
this.bitmap.fontSize = this._statusType == "exp" ? 18 : this.labelFontSize();
this.bitmap.textColor = "#FFFFFF";
this.bitmap.outlineColor = this.labelOutlineColor();
this.bitmap.outlineWidth = this.labelOutlineWidth();
};
Sprite_Gauge_Battle.prototype.labelY = function () {
return 0;
};
//フォント
Sprite_Gauge_Battle.prototype.setupValueFont = function () {
this.bitmap.fontFace = this._statusType == "exp" ? "serif" : "Times New Roman";
this.bitmap.fontSize = this._statusType == "exp" ? 18 : this.valueFontSize() + 2;
this.bitmap.textColor = this.valueColor();
this.bitmap.outlineColor = this.valueOutlineColor();
this.bitmap.outlineWidth = this.valueOutlineWidth();
};
//メニュー画面で使うゲージ
function Sprite_Gauge_Menu() {
this.initialize(...arguments);
}
Sprite_Gauge_Menu.prototype = Object.create(Sprite_Gauge_Battle.prototype);
Sprite_Gauge_Menu.prototype.constructor = Sprite_Gauge_Menu;
Sprite_Gauge_Menu.prototype.drawGaugeRect = function (x, y, width, height) {
var padding = 4;
x += padding;
width -= padding * 2;
const rate = this.gaugeRate();
const fillW = Math.floor((width - 2) * rate);
const fillH = height - 2;
const color0 = this.gaugeBackColor();
//グラデーションの描写
const ctx = this.bitmap.context;
if (this._statusType != "exp") {
const grd = ctx.createLinearGradient(0, -20, 220, 0);
if (this._statusType == "hp") {
grd.addColorStop(0, "rgba(0,225,155,1)");
grd.addColorStop(1, "rgba(0,0,0,0)");
} else {
grd.addColorStop(0, "rgba(0,155,225,1)");
grd.addColorStop(1, "rgba(0,0,0,0)");
}
ctx.fillStyle = grd;
ctx.fillRect(x - 10, y - 20, width + 10, height + 40);
}
ctx.fillStyle = "rgba(90, 90, 90, 1)";
ctx.fillRect(x - 3, y + 8, width, height);
const color1 = this.gaugeColor1();
const color2 = this.gaugeColor2();
y += padding;
this.bitmap.fillRect(x, y, width, height, color0);
this.bitmap.gradientFillRect(x + 1, y + 1, fillW, fillH, color1, color2);
};
//ゲージのラベルをちょっと右に
Sprite_Gauge_Menu.prototype.drawLabel = function () {
const label = this.label();
var x = this.labelOutlineWidth() / 2;
var y = this.labelY();
var width = this.bitmapWidth();
const height = this.textHeight();
var padding = 4;
x += padding;
width -= padding * 2;
y += padding;
this.setupLabelFont();
this.bitmap.paintOpacity = this.labelOpacity();
this.bitmap.drawText(label, x, y, width, height, "left");
this.bitmap.paintOpacity = 255;
};
//ゲージの数値
Sprite_Gauge_Menu.prototype.drawValue = function () {
let currentValue = this.currentValue();
switch (this._statusType) {
case "hp":
currentValue += ` / ${this._battler.mhp}`;
break;
case "mp":
currentValue += ` / ${this._battler.mmp}`;
break;
}
var width = this.bitmapWidth();
const height = this.textHeight();
var padding = 4;
width -= padding * 2;
this.setupValueFont();
this.bitmap.drawText(currentValue, 0, padding, width, height, "right");
};
Sprite_Gauge_Menu.prototype.bitmapWidth = function () {
return 200;
};
function Sprite_Gauge_Main_Menu() {
this.initialize(...arguments);
}
Sprite_Gauge_Main_Menu.prototype = Object.create(Sprite_Gauge_Menu.prototype);
Sprite_Gauge_Main_Menu.prototype.constructor = Sprite_Gauge_Main_Menu;
Sprite_Gauge_Main_Menu.prototype.bitmapWidth = function () {
return 204;
};
Sprite_Gauge_Main_Menu.prototype.drawValue = function () {
let currentValue = this.currentValue();
switch (this._statusType) {
case "hp":
currentValue += ` / ${this._battler.mhp}`;
break;
case "mp":
currentValue += ` / ${this._battler.mmp}`;
break;
case "exp":
if (99 <= this._battler._level) {
currentValue = 0;
} else {
currentValue = this.currentMaxValue() - currentValue;
}
break;
}
var width = this.bitmapWidth();
const height = this.textHeight();
var padding = 4;
width -= padding * 2;
this.setupValueFont();
this.bitmap.drawText(currentValue, 0, padding, width, height, "right");
};
Window_Command.prototype.commandExt = function (index) {
return this._list[index].ext;
};
Window_Options.prototype.volumeOffset = function () {
return 10;
};
// 元の速度を取得し、1.3倍にするよう補正
Game_CharacterBase.prototype.realMoveSpeed = function () {
return this._moveSpeed + (this.isDashing() ? 1 + 0.7 : 0.7);
};
Video._onEnd = function () {
this._element.pause();
this._updateVisibility(false);
};
// 他の奴に上書きされるけどねココ
const _Scene_Map_update = Scene_Map.prototype.update;
Scene_Map.prototype.update = function () {
_Scene_Map_update.call(this);
// マウスクリック検知 & 動画再生中チェック
if (Input.isTriggered("ok") || TouchInput.isTriggered()) {
if (Video.isPlaying()) {
Video._onEnd();
}
// MoviePicture.js
if ($gameScreen._pictures[11] && $gameScreen._pictures[11].isVideoWait()) {
$gameScreen.erasePicture(11);
}
}
};
Game_Action.prototype.applyGlobal = function () {
for (const effect of this.item().effects) {
if (effect.code === Game_Action.EFFECT_COMMON_EVENT) {
if (!this.item().meta.disable_common_in_menu || SceneManager._scene.constructor.name !== "Scene_Item") {
$gameTemp.reserveCommonEvent(effect.dataId);
}
}
}
this.updateLastUsed();
this.updateLastSubject();
};
Sprite_Balloon.prototype.speed = function () {
return 4;
};
(() => {
// ▼ コマンドリストに「テスト」を追加
const _Window_TitleCommand_makeCommandList = Window_TitleCommand.prototype.makeCommandList;
Window_TitleCommand.prototype.makeCommandList = function () {
_Window_TitleCommand_makeCommandList.call(this);
this.addCommand("Extra", "extraTest");
};
// ▼ ハンドラを登録
const _Scene_Title_createCommandWindow = Scene_Title.prototype.createCommandWindow;
Scene_Title.prototype.createCommandWindow = function () {
_Scene_Title_createCommandWindow.call(this);
this._commandWindow.setHandler("extraTest", this.commandExtraTest.bind(this));
};
// ▼ 選択時の処理
Scene_Title.prototype.commandExtraTest = function () {
SceneManager.push(Scene_Extra);
};
// ピクチャの回想を追加
const Game_Screen_showPicture = Game_Screen.prototype.showPicture;
Game_Screen.prototype.showPicture = function (pictureId, name, origin, x, y, scaleX, scaleY, opacity, blendMode) {
Game_Screen_showPicture.call(this, pictureId, name, origin, x, y, scaleX, scaleY, opacity, blendMode);
var name_id = name.slice(0, 8);
var data_idx = CBR_extra_pic_list.findIndex((item) => item.name === name_id);
if (data_idx !== -1) {
const ary = $gameVariables.value(521) || [];
if (!ary.includes(data_idx)) {
ary.push(data_idx);
ary.sort(function (a, b) {
a - b;
});
$gameVariables.setValue(521, ary);
}
}
};
})();
// タイトルにエクストラ全開放を追加
(() => {
const _Window_TitleCommand_makeCommandList = Window_TitleCommand.prototype.makeCommandList;
Window_TitleCommand.prototype.makeCommandList = function () {
_Window_TitleCommand_makeCommandList.apply(this, arguments);
this.addCommand("Unlock Extra", "extra_open");
};
const _Scene_Title_createCommandWindow = Scene_Title.prototype.createCommandWindow;
Scene_Title.prototype.createCommandWindow = function () {
_Scene_Title_createCommandWindow.apply(this, arguments);
this._commandWindow.setHandler("extra_open", this.commandToggleTest.bind(this));
};
Scene_Title.prototype.commandToggleTest = function () {
SoundManager.playOk();
$gameSwitches.setValue(778, !$gameSwitches.value(778)); // トグル状態を保持
this._commandWindow.refresh();
// 再び入力可能にする(重要)
this._commandWindow.activate();
};
const _Window_TitleCommand_drawItem = Window_TitleCommand.prototype.drawItem;
Window_TitleCommand.prototype.drawItem = function (index) {
const rect = this.itemLineRect(index);
const name = this.commandName(index);
if (this.commandSymbol(index) === "extra_open") {
//const color = !$gameSwitches.value(778) ? "#777777" : "#ffffff"; // 暗⇄明
const color = !$gameSwitches.value(778) ? "#ffffff" : "#777777"; // 暗⇄明
this.changeTextColor(color);
this.drawText(name, rect.x, rect.y, rect.width, "center");
this.resetTextColor();
ConfigManager.saveCommonVariables();
} else {
_Window_TitleCommand_drawItem.apply(this, arguments);
}
};
})();
Scene_Title.prototype.commandWindowRect = function () {
const offsetX = $dataSystem.titleCommandWindow.offsetX;
const offsetY = $dataSystem.titleCommandWindow.offsetY;
const ww = this.mainCommandWidth();
const wh = this.calcWindowHeight(5, true);
const wx = 100;
const wy = 270;
return new Rectangle(wx, wy, ww, wh);
};
// アイテムを使う時、使用効果でコモンがあると、defaultでtrueを返して使えてしまう
Game_Action.prototype.testItemEffect = function (target, effect) {
switch (effect.code) {
case Game_Action.EFFECT_RECOVER_HP:
return target.hp < target.mhp || effect.value1 < 0 || effect.value2 < 0;
case Game_Action.EFFECT_RECOVER_MP:
return target.mp < target.mmp || effect.value1 < 0 || effect.value2 < 0;
case Game_Action.EFFECT_ADD_STATE:
return !target.isStateAffected(effect.dataId);
case Game_Action.EFFECT_REMOVE_STATE:
return target.isStateAffected(effect.dataId);
case Game_Action.EFFECT_ADD_BUFF:
return !target.isMaxBuffAffected(effect.dataId);
case Game_Action.EFFECT_ADD_DEBUFF:
return !target.isMaxDebuffAffected(effect.dataId);
case Game_Action.EFFECT_REMOVE_BUFF:
return target.isBuffAffected(effect.dataId);
case Game_Action.EFFECT_REMOVE_DEBUFF:
return target.isDebuffAffected(effect.dataId);
case Game_Action.EFFECT_LEARN_SKILL:
return target.isActor() && !target.isLearnedSkill(effect.dataId);
case Game_Action.EFFECT_COMMON_EVENT: // コモン1132の場合のみ、コモン(default)でtrueとならずfalseを返す
return effect.dataId !== 1132;
default:
return true;
}
};
//----------------------------------------------------
//■コモンイベントの処理
//----------------------------------------------------
var SDN_EventAct = function (commonEventName) {
var idx = $dataCommonEvents.findIndex((e) => e && e.name == commonEventName);
if (idx === -1) {
$gameMessage.add("未実装のイベントです");
} else {
$gameTemp.reserveCommonEvent(idx);
}
};
//----------------------------------------------------
//■コモンイベントの番号を取得する
//----------------------------------------------------
var SDN_GetCommonEventID = function (commonEventName) {
return $dataCommonEvents.findIndex((e) => e && e.name == commonEventName);
};
//----------------------------------------------------
//■改造セルフスイッチ
//----------------------------------------------------
var SDN_SelfSwith = function (MapId, EventId, SwitchName, Value) {
key = [MapId, EventId, SwitchName];
$gameSelfSwitches.setValue(key, Value);
};
//----------------------------------------------------
//■立ち絵の表示
//----------------------------------------------------
var SDN_SetFgImage = function (chara, posit, pose) {
//キャラの座標を取得する
if (chara == "sir" && pose == 1) {
var pos = [390, 31, -80, 445];
} else if (chara == "sir" && pose == 2) {
var pos = [390, 31, -80, 445];
} else if (chara == "sir" && pose == 3) {
var pos = [330, 31, -100, 445];
} else if (chara == "sir" && pose == 4) {
var pos = [330, 31, -100, 445];
} else if (chara == "yoz" && pose == 1) {
var pos = [412, 19, -80, 445];
} else if (chara == "yoz" && pose == 2) {
var pos = [412, 19, -80, 445];
} else if (chara == "yoz" && pose == 3) {
var pos = [451, 22, -35, 445];
} else if (chara == "yoz" && pose == 4) {
var pos = [451, 22, -35, 445];
} else if (chara == "rei" && pose == 1) {
var pos = [350, 10, -140, 445];
} else if (chara == "rei" && pose == 2) {
var pos = [367, 37, -132, 440];
} else if (chara == "kao" && pose == 1) {
var pos = [390, 26, -80, 445];
} else if (chara == "kur" && pose == 1) {
var pos = [400, 130, -80, 465];
} else if (chara == "chi" && pose == 1) {
var pos = [390, 0, -80, 445];
} else if (chara == "mir" && pose == 1) {
var pos = [430, 51, -40, 445];
} else if (chara == "aki" && pose == 1) {
var pos = [444, -10, -50, 445];
} else if (chara == "nar" && pose == 1) {
var pos = [440, 0, -30, 445];
} else if (chara == "kag" && pose == 1) {
var pos = [269, 0, -220, 420];
}
//位置設定
if (posit == "l") {
var lay = 6;
var x = pos[0] - 550;
var y = pos[1];
} else if (posit == "cl") {
var lay = 4;
var x = pos[0] - 350;
var y = pos[1];
} else if (posit == "c") {
var lay = 8;
var x = pos[0];
var y = pos[1];
} else if (posit == "cr") {
var lay = 5;
var x = pos[0] + 350;
var y = pos[1];
} else if (posit == "r") {
var lay = 7;
var x = pos[0] + 550;
var y = pos[1];
} else if (posit == "face") {
var lay = 9;
var x = pos[2];
var y = pos[3];
}
//実行
if (posit != "face") {
$gameScreen.showPicture(lay, "", 0, x, y, 100, 100, 255, 0);
} else {
$gameScreen.showPicture(lay, "", 0, x, y, 80, 80, 255, 0);
}
};
//----------------------------------------------------
//■操作キャラが妊娠しているかどうかを判別する
//----------------------------------------------------
var SDN_PlayerNowPregnancy = function () {
if ($gameSwitches.value(117) && $gameVariables.value(204) >= 2) {
return true;
} else if ($gameSwitches.value(118) && $gameVariables.value(205) >= 2) {
return true;
} else {
return false;
}
};
//----------------------------------------------------
//■臨月中のキャラがいるかどうか?
//----------------------------------------------------
var SDN_CharaNowPregnancy = function () {
if ($gameVariables.value(204) >= 2 || $gameVariables.value(205) >= 2) {
return true;
} else {
return false;
}
};
//----------------------------------------------------
//■ファストトラベル実行前
//----------------------------------------------------
//ファストトラベル可能な場所のスイッチをONにするためのもの
var SDN_SetFastTravel = function () {
//ファストトラベル設置用の開始スイッチNOを定義
var FastSwNum = 371;
//初期化
for (var i = 371; i <= 399; i++) {
$gameSwitches.setValue(i, false);
}
//抜けていた分の処理
$gameSwitches.setValue(403, false);
$gameSwitches.setValue(404, false);
//ボテ腹状態ではない場合
if (SDN_CharaNowPregnancy() == false) {
//夜専用マップの設定
var NightOnly = [343, 346, 354, 356, 358];
var NightOnlySet = [372, 375, 383, 385, 387];
//昼の場合昼を表すスイッチは今回114
if ($gameSwitches.value(114) == true) {
for (var i = 342; i <= 370; i++) {
if ($gameSwitches.value(i) == true) {
$gameSwitches.setValue(FastSwNum, true);
}
FastSwNum = FastSwNum + 1;
}
//昼夜分かれているで昼は強制的にfalseにする
for (var i = 0; i < NightOnlySet.length; i++) {
$gameSwitches.setValue(NightOnlySet[i], false);
}
//抜け分の処理
if ($gameSwitches.value(401)) {
$gameSwitches.setValue(403, true);
}
if ($gameSwitches.value(402)) {
$gameSwitches.setValue(404, true);
}
} else {
//夜の場合
for (var i = 0; i < NightOnly.length; i++) {
if ($gameSwitches.value(NightOnly[i])) {
$gameSwitches.setValue(NightOnlySet[i], true);
}
}
//昼夜あるマップの例外処理
if ($gameSwitches.value(367)) {
$gameSwitches.setValue(396, true);
}
}
//ボテ腹状態のもの
} else {
if ($gameSwitches.value(114)) {
var PregnancyMap = [342, 345, 367];
var PregnancyMapSet = [371, 374, 396];
} else {
var PregnancyMap = [343, 346, 367];
var PregnancyMapSet = [372, 375, 396];
}
for (var i = 0; i < PregnancyMap.length; i++) {
if ($gameSwitches.value(PregnancyMap[i])) {
$gameSwitches.setValue(PregnancyMapSet[i], true);
}
}
}
};
//----------------------------------------------------
//■宝箱の処理
//----------------------------------------------------
var SDN_ActChest = function (itemType, itemId, itemvalue) {
//獲得するものの種類を定義する
if (itemType == "I" || itemType == "アイテム" || itemType == "Item") {
var setKey = "I";
} else if (itemType == "W" || itemType == "アクセサリー" || itemType == "アクセ" || itemType == "Accessory") {
var setKey = "W";
} else if (itemType == "P" || itemType == "パッシブスキル" || itemType == "PS" || itemType == "PassiveSkill") {
var setKey = "A";
} else if (itemType == "M" || itemType == "お金" || itemType == "金" || itemType == "Money") {
var setKey = "M";
}
//キーごとの取得処理
if (setKey == "I") {
$gameParty.gainItem($dataItems[itemId], itemvalue);
//インフォ用の文字列取得
$gameVariables.setValue(4, "Got 『" + $dataItems[itemId].name + "』×" + itemvalue + "!");
$gameVariables.setValue(5, $dataItems[itemId].iconIndex);
} else if (setKey == "W") {
$gameParty.gainItem($dataWeapons[itemId], itemvalue);
//インフォ用の文字列取得
$gameVariables.setValue(4, "Got 『" + $dataWeapons[itemId].name + "』×" + itemvalue + "!");
$gameVariables.setValue(5, $dataWeapons[itemId].iconIndex);
} else if (setKey == "A") {
$gameParty.gainItem($dataArmors[itemId], itemvalue);
//インフォ用の文字列取得
if ($dataArmors[itemId].atypeId == 1) {
var chaTarget = "Shirayuki";
} else {
var chaTarget = "Yotsuru";
}
$gameVariables.setValue(4, chaTarget + " mastered the passive skill 『" + $dataArmors[itemId].name + "』");
$gameVariables.setValue(5, $dataArmors[itemId].iconIndex);
//説明用のコモンイベントトリガーを入れる処理
if (!$gameSwitches.value(164)) {
$gameSwitches.setValue(163, true);
}
} else if (setKey == "M") {
$gameParty.gainGold(itemvalue);
//インフォ用の文字列取得
$gameVariables.setValue(4, "Got " + itemvalue + " Yen!");
$gameVariables.setValue(5, 87);
}
};
//----------------------------------------------------
//■イベントCGの処理(ファイル名取得の処理)
//----------------------------------------------------
var SDN_GetEvFileName = function (fileName, costume) {
if (costume == false) {
var fileName = fileName;
} else {
//服装分岐、今作は変数3番を使用する
var strCosNum = $gameVariables.value(3);
if (fileName.substring(0, 3) == "eva") {
strCosNum = $gameVariables.value(204);
} else if (fileName.substring(0, 3) == "evb") {
strCosNum = $gameVariables.value(205);
}
//例外処理
var exfileName = fileName.substring(0, 8);
if (exfileName == "eva_c051" || exfileName == "eva_c060" || exfileName == "eva_c061") {
if ($gameVariables.value(204) == 2) {
strCosNum = 0;
} else if ($gameVariables.value(204) == 3) {
strCosNum = 1;
}
}
if (exfileName == "evb_c051" || exfileName == "evb_c060" || exfileName == "evb_c061") {
if ($gameVariables.value(205) == 2) {
strCosNum = 0;
} else if ($gameVariables.value(205) == 3) {
strCosNum = 1;
}
}
var fileName = fileName + "_" + strCosNum.toString();
}
return fileName;
};
//----------------------------------------------------
//■現在いるMAPのタイプを取得
//※スマフォ操作や妊娠システム関係で使うもの
// 1 : アイリスアカデミー
// 2 : 神宿
// 3 : 渋野
// 4 : ダリアのアジト
//----------------------------------------------------
var SDN_GetTownType = function () {
//アイリスアカデミーかどうか?
var ary = [
10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56
];
for (let i = 0; i < ary.length; i++) {
if (ary[i] == $gameMap.mapId()) {
return 1;
}
}
//神宿かどうか?
var ary = [72, 73, 74, 75, 76, 77, 78, 81, 82, 83, 84, 85];
for (let i = 0; i < ary.length; i++) {
if (ary[i] == $gameMap.mapId()) {
return 2;
}
}
//渋野かどうか?
var ary = [143, 144];
for (let i = 0; i < ary.length; i++) {
if (ary[i] == $gameMap.mapId()) {
return 3;
}
}
//ダリアのアジトかどうか?
var ary = [225, 226, 227, 228, 229, 230, 231];
for (let i = 0; i < ary.length; i++) {
if (ary[i] == $gameMap.mapId()) {
return 4;
}
}
return 0;
};
//----------------------------------------------------
//■性周期の処理
// 性周期変更カウンター=変数131
// 白雪性周期 = 65
// 夜鶴性周期 = 66
//----------------------------------------------------
var SDN_EstrousCycle = function (val) {
var counterId_sir = [131, 65];
var counterId_yoz = [132, 66];
//カウンターに設定数値を+する
$gameVariables.setValue(counterId_sir[0], $gameVariables.value(counterId_sir[0]) + val);
$gameVariables.setValue(counterId_yoz[0], $gameVariables.value(counterId_yoz[0]) + val);
//性周期の変化 規定値は通常20で安全日と危険日は10で設定
if ($gameVariables.value(counterId_sir[1]) == 1) {
var countLimit = 20;
} else {
var countLimit = 10;
}
if ($gameVariables.value(counterId_sir[0]) >= countLimit) {
$gameVariables.setValue(counterId_sir[1], $gameVariables.value(counterId_sir[1]) + 1);
if ($gameVariables.value(counterId_sir[1]) == 4) {
$gameVariables.setValue(counterId_sir[1], 0);
}
//性周期が変化したらカウンターをリセット
$gameVariables.setValue(counterId_sir[0], 0);
}
//夜鶴の処理
if ($gameVariables.value(counterId_yoz[1]) == 1) {
var countLimit = 20;
} else {
var countLimit = 10;
}
if ($gameVariables.value(counterId_yoz[0]) >= countLimit) {
$gameVariables.setValue(counterId_yoz[1], $gameVariables.value(counterId_yoz[1]) + 1);
if ($gameVariables.value(counterId_yoz[1]) == 4) {
$gameVariables.setValue(counterId_yoz[1], 0);
}
//性周期が変化したらカウンターをリセット
$gameVariables.setValue(counterId_yoz[0], 0);
}
};
//----------------------------------------------------
//■戦闘:開始ボイスの定義
//----------------------------------------------------
var SDN_BattleStartVoice = function () {
// 先頭キャラのHPレートで判断
if ($gameParty.allMembers()[0].name() == "Shirayuki") {
var chaData = ["sir", 204];
} else {
var chaData = ["yoz", 205];
}
var hpRate = $gameParty.members()[0].hpRate();
var chapter = $gameVariables.value(1);
//ボイスファイルの取得
if ($gameVariables.value(chaData[0]) == 0) {
if (hpRate >= 0.8 && chapter < 307) {
return "Vo_" + chaData[0] + "_9_0001";
} else if (hpRate >= 0.25 && chapter < 307) {
return "Vo_" + chaData[0] + "_9_0002";
} else if (chapter < 307) {
return "Vo_" + chaData[0] + "_9_0003";
} else if (hpRate >= 0.8) {
return "Vo_" + chaData[0] + "_9_0007";
} else if (hpRate >= 0.25) {
return "Vo_" + chaData[0] + "_9_0008";
} else {
return "Vo_" + chaData[0] + "_9_0009";
}
} else {
if (hpRate >= 0.8 && chapter < 307) {
return "Vo_" + chaData[0] + "_9_0004";
} else if (hpRate >= 0.25 && chapter < 307) {
return "Vo_" + chaData[0] + "_9_0005";
} else if (chapter < 307) {
return "Vo_" + chaData[0] + "_9_0006";
} else if (hpRate >= 0.8) {
return "Vo_" + chaData[0] + "_9_0010";
} else if (hpRate >= 0.25) {
return "Vo_" + chaData[0] + "_9_0011";
} else {
return "Vo_" + chaData[0] + "_9_0012";
}
}
};
//----------------------------------------------------
//■戦闘:コマンドボイス
//----------------------------------------------------
//ボイスファイル取得
var SDN_CommandVoiceFile = function (name, actorId, cosId) {
//服装の状態を取得する
var cosState = $gameVariables.value(cosId);
//キャラIDを取得
if (name == "Shirayuki") {
var hpRate = $gameActors.actor(1).hpRate();
var chaId = "sir";
var roshutsuId = 267;
var hparamId = [243, 244];
var kousokuId = [136, 137];
} else {
var hpRate = $gameActors.actor(2).hpRate();
var chaId = "yoz";
var roshutsuId = 313;
var hparamId = [289, 290];
var kousokuId = [137, 136];
}
//ファイル名取得処理
//絶頂時
if ($gameActors.actor(actorId + 1).isStateAffected(90)) {
if (!$gameSwitches.value(hparamId[0])) {
return "Vo_" + chaId + "_9_0124";
} else if (!$gameSwitches.value(hparamId[1])) {
return "Vo_" + chaId + "_9_0125";
} else {
return "Vo_" + chaId + "_9_0126";
}
}
//犯され後
if ($gameActors.actor(actorId + 1).isStateAffected(89)) {
if (!$gameSwitches.value(hparamId[0])) {
return "Vo_" + chaId + "_9_0121";
} else if (!$gameSwitches.value(hparamId[1])) {
return "Vo_" + chaId + "_9_0122";
} else {
return "Vo_" + chaId + "_9_0123";
}
}
//拘束時
if ($gameVariables.value(kousokuId[0]) == 1) {
if (!$gameSwitches.value(hparamId[0])) {
return "Vo_" + chaId + "_9_0115";
} else {
if (!$gameSwitches.value(hparamId[1])) {
return "Vo_" + chaId + "_9_0116";
} else {
return "Vo_" + chaId + "_9_0117";
}
}
} else if ($gameVariables.value(kousokuId[0]) >= 2) {
if (!$gameSwitches.value(hparamId[0])) {
return "Vo_" + chaId + "_9_0118";
} else {
if (!$gameSwitches.value(hparamId[1])) {
return "Vo_" + chaId + "_9_0119";
} else {
return "Vo_" + chaId + "_9_0120";
}
}
}
//味方キャラが拘束されている場合
if ($gameVariables.value(kousokuId[1]) >= 1) {
if (Math.round(Math.random() * 100) >= 50) {
return "Vo_" + chaId + "_9_0127";
} else {
return "Vo_" + chaId + "_9_0128";
}
}
//共通 バフ状態3149
for (let i = 48; i < 60; i++) {
if ($gameActors.actor(actorId + 1).isStateAffected(i)) {
return "Vo_" + chaId + "_9_0113";
}
}
//共通 デバフ状態729
for (let i = 7; i < 30; i++) {
if ($gameActors.actor(actorId + 1).isStateAffected(i)) {
return "Vo_" + chaId + "_9_0114";
}
}
//着衣時
if (cosState == 0) {
if (hpRate >= 0.8 && $gameVariables.value(1) < 307) {
return "Vo_" + chaId + "_9_0101";
} else if (hpRate >= 0.25 && $gameVariables.value(1) < 307) {
return "Vo_" + chaId + "_9_0102";
} else if ($gameVariables.value(1) < 307) {
return "Vo_" + chaId + "_9_0103";
} else if (hpRate >= 0.8) {
return "Vo_" + chaId + "_9_0104";
} else if (hpRate >= 0.25) {
return "Vo_" + chaId + "_9_0105";
} else {
return "Vo_" + chaId + "_9_0106";
}
//裸時
} else {
if (hpRate >= 0.8 && !$gameSwitches.value(roshutsuId)) {
return "Vo_" + chaId + "_9_0107";
} else if (hpRate >= 0.25 && !$gameSwitches.value(roshutsuId)) {
return "Vo_" + chaId + "_9_0108";
} else if (!$gameSwitches.value(roshutsuId)) {
return "Vo_" + chaId + "_9_0109";
} else if (hpRate >= 0.8) {
return "Vo_" + chaId + "_9_0110";
} else if (hpRate >= 0.25) {
return "Vo_" + chaId + "_9_0111";
} else {
return "Vo_" + chaId + "_9_0112";
}
}
};
//コマンドボイス再生
var CBR_CommandVoice = function (name) {
if (name == "Shirayuki") {
voiceFile = SDN_CommandVoiceFile(name, 0, 204);
} else {
voiceFile = SDN_CommandVoiceFile(name, 1, 205);
}
//ボイスの再生
AudioManager.playVoice({ name: voiceFile, volume: 100, pitch: 100, pan: 0 });
};
//----------------------------------------------------
//■戦闘:H攻撃関係
//----------------------------------------------------
//■パーティー状態の取得
var SDN_HactPartyState = function () {
//パーティ状態を定義
if ($gameParty.battleMembers().length == 2) {
return 0; //2人
} else if ($gameParty.battleMembers()[0].actorId() == 1) {
return 1; //白雪のみ
} else {
return 2; //夜鶴のみ
}
};
//■H攻撃発生させるかどうか?
var SDN_canHact = function () {
//白雪・夜鶴が揃っている場合
if (SDN_HactPartyState() == 0) {
//二人とも完全処女の場合は発生しない
if ($gameVariables.value(69) == 0 && $gameVariables.value(70) == 0) {
return false;
}
//二人とも貞操具を着けている場合は発生しない
if ($gameActors.actor(1).hasWeapon($dataWeapons[33]) && $gameActors.actor(2).hasWeapon($dataWeapons[33])) {
return false;
}
//攻撃フラグの抽選を開始基本確率30%サキュバスソウル装備時は70
if ($gameActors.actor(1).hasArmor($dataWeapons[16]) || $gameActors.actor(2).hasArmor($dataWeapons[17])) {
var hactPer = 70;
} else {
var hactPer = 30;
}
//サガラダンジョンの時の処理
if ($gameVariables.value(395) > 0) {
var hactPer = $gameVariables.value(395);
}
if (Math.round(Math.random() * 100) >= 100 - hactPer) {
return true;
} else {
return false;
}
}
//白雪単独
else if (SDN_HactPartyState() == 1) {
if ($gameVariables.value(69) == 0) {
return false;
}
//貞操具を着けている場合は発生しない
if ($gameActors.actor(1).hasWeapon($dataWeapons[33])) {
return false;
}
//攻撃フラグの抽選を開始基本確率30%サキュバスソウル装備時は70
if ($gameActors.actor(1).hasArmor($dataWeapons[16])) {
var hactPer = 70;
} else {
var hactPer = 30;
}
//サガラダンジョンの時の処理
if ($gameVariables.value(395) > 0) {
var hactPer = $gameVariables.value(395);
}
if (Math.round(Math.random() * 100) >= 100 - hactPer) {
return true;
} else {
return false;
}
}
//夜鶴単独
else if (SDN_HactPartyState() == 2) {
if ($gameVariables.value(70) == 0) {
return false;
}
//貞操具を着けている場合は発生しない
if ($gameActors.actor(2).hasWeapon($dataWeapons[33])) {
return false;
}
//攻撃フラグの抽選を開始基本確率30%サキュバスソウル装備時は70
if ($gameActors.actor(2).hasArmor($dataWeapons[17])) {
var hactPer = 70;
} else {
var hactPer = 30;
}
//サガラダンジョンの時の処理
if ($gameVariables.value(395) > 0) {
var hactPer = $gameVariables.value(395);
}
if (Math.round(Math.random() * 100) >= 100 - hactPer) {
return true;
} else {
return false;
}
}
};
//■両穴責めH攻撃(触手)を発生させるかどうか?
var SDN_canHactRyoana = function () {
//白雪・夜鶴が揃っている場合
if (SDN_HactPartyState() == 0) {
//二人とも完全処女の場合は発生しない
if ($gameVariables.value(69) == 0 && $gameVariables.value(70) == 0) {
return false;
}
//二人とも貞操具を着けている場合は発生しない
if ($gameActors.actor(1).hasWeapon($dataWeapons[33]) && $gameActors.actor(2).hasWeapon($dataWeapons[33])) {
return false;
}
//どちらも両穴非処女じゃない場合は発生しない
if ($gameVariables.value(69) != 3 && $gameVariables.value(70) != 3) {
return false;
}
//攻撃フラグの抽選を開始基本確率30%サキュバスソウル装備時は70 オナニー実行中は90%
if ($gameSwitches.value(240)) {
var hactPer = 90;
$gameSwitches.setValue(240, false);
} else if ($gameActors.actor(1).hasArmor($dataWeapons[16]) || $gameActors.actor(2).hasArmor($dataWeapons[16])) {
var hactPer = 70;
} else {
var hactPer = 30;
}
if (Math.round(Math.random() * 100) >= 100 - hactPer) {
return true;
} else {
return false;
}
}
//白雪単独
else if (SDN_HactPartyState() == 1) {
if ($gameVariables.value(69) < 3) {
return false;
}
//二人とも貞操具を着けている場合は発生しない
if ($gameActors.actor(1).hasWeapon($dataWeapons[33])) {
return false;
}
//攻撃フラグの抽選を開始基本確率30%サキュバスソウル装備時は70 オナニー実行中は90%
if ($gameSwitches.value(240)) {
var hactPer = 90;
$gameSwitches.setValue(240, false);
} else if ($gameActors.actor(1).hasArmor($dataWeapons[16])) {
var hactPer = 70;
} else {
var hactPer = 30;
}
if (Math.round(Math.random() * 100) >= 100 - hactPer) {
return true;
} else {
return false;
}
}
//夜鶴単独
else if (SDN_HactPartyState() == 2) {
if ($gameVariables.value(70) < 3) {
return false;
}
//二人とも貞操具を着けている場合は発生しない
if ($gameActors.actor(2).hasWeapon($dataWeapons[33])) {
return false;
}
//攻撃フラグの抽選を開始基本確率30%サキュバスソウル装備時は70 オナニー実行中は90%
if ($gameSwitches.value(240)) {
var hactPer = 90;
$gameSwitches.setValue(240, false);
} else if ($gameActors.actor(2).hasArmor($dataWeapons[16])) {
var hactPer = 70;
} else {
var hactPer = 30;
}
if (Math.round(Math.random() * 100) >= 100 - hactPer) {
return true;
} else {
return false;
}
}
};
//■拘束時の処理(ターゲットの設定)
var SDN_HactSetTarget = function () {
//触手のH攻撃以外
if ($gameTemp.lastActionData(0) != 103) {
//拘束相手の決定 ふたり揃っている場合
if (SDN_HactPartyState() == 0) {
if ($gameVariables.value(69) == 0 || $gameActors.actor(1).hasWeapon($dataWeapons[33])) {
return 2;
}
if ($gameVariables.value(70) == 0 || $gameActors.actor(2).hasWeapon($dataWeapons[33])) {
return 1;
}
if (Math.round(Math.random()) == 0) {
return 1;
} else {
return 2;
}
}
//拘束相手の決定 白雪のみ
else if (SDN_HactPartyState() == 1) {
return 1;
}
//拘束相手の決定 夜鶴のみ
else if (SDN_HactPartyState() == 2) {
return 2;
}
} else {
//拘束相手の決定 ふたり揃っている場合
if (SDN_HactPartyState() == 0) {
if ($gameVariables.value(69) < 3 || $gameActors.actor(1).hasWeapon($dataWeapons[33])) {
return 2;
}
if ($gameVariables.value(70) < 3 || $gameActors.actor(2).hasWeapon($dataWeapons[33])) {
return 1;
}
if (Math.round(Math.random()) == 0) {
return 1;
} else {
return 2;
}
}
//拘束相手の決定 白雪のみ
else if (SDN_HactPartyState() == 1) {
return 1;
}
//拘束相手の決定 夜鶴のみ
else if (SDN_HactPartyState() == 2) {
return 2;
}
}
};
//■H攻撃のセッティング
var SDN_HactSetting = function (tgt) {
//H部位の設定
var ary = [0, 69, 70];
if ($gameVariables.value(ary[tgt]) == 1) {
$gameVariables.setValue(134, 1);
} else if ($gameVariables.value(ary[tgt]) == 2) {
$gameVariables.setValue(134, 2);
} else if ($gameVariables.value(ary[tgt]) == 3) {
$gameVariables.setValue(134, Math.round(Math.random()) + 1);
}
//触手の場合は強制的に1へ
if ($gameVariables.value(138) == "触手") {
$gameVariables.setValue(134, 1);
}
};
//■H攻撃の設定
var SDN_HactSetHatk = function (val) {
//敵タイプの取得処理
var Htype = $gameVariables.value(138);
if (val == 1) {
if (Htype == "人間") {
if ($gameVariables.value(133) == 1) {
if ($gameVariables.value(204) == 0) {
var ary = ["BattleHAnime_A01a_1", "BattleHAnime_A01a_2", "BattleHAnime_A01a_3"];
} else {
var ary = ["BattleHAnime_A01b_1", "BattleHAnime_A01b_2", "BattleHAnime_A01b_3"];
}
} else {
if ($gameVariables.value(205) == 0) {
var ary = ["BattleHAnime_B01a_1", "BattleHAnime_B01a_2", "BattleHAnime_B01a_3"];
} else {
var ary = ["BattleHAnime_B01b_1", "BattleHAnime_B01b_2", "BattleHAnime_B01b_3"];
}
}
} else if (Htype == "ゴブリン") {
if ($gameVariables.value(133) == 1) {
if ($gameVariables.value(204) == 0) {
var ary = ["BattleHAnime_A03a_1", "BattleHAnime_A03a_2", "BattleHAnime_A03a_3"];
} else {
var ary = ["BattleHAnime_A03b_1", "BattleHAnime_A03b_2", "BattleHAnime_A03b_3"];
}
} else {
if ($gameVariables.value(205) == 0) {
var ary = ["BattleHAnime_B03a_1", "BattleHAnime_B03a_2", "BattleHAnime_B03a_3"];
} else {
var ary = ["BattleHAnime_B03b_1", "BattleHAnime_B03b_2", "BattleHAnime_B03b_3"];
}
}
} else if (Htype == "オーク") {
if ($gameVariables.value(133) == 1) {
if ($gameVariables.value(204) == 0) {
var ary = ["BattleHAnime_A05a_1", "BattleHAnime_A05a_2", "BattleHAnime_A05a_3"];
} else {
var ary = ["BattleHAnime_A05b_1", "BattleHAnime_A05b_2", "BattleHAnime_A05b_3"];
}
} else {
if ($gameVariables.value(205) == 0) {
var ary = ["BattleHAnime_B05a_1", "BattleHAnime_B05a_2", "BattleHAnime_B05a_3"];
} else {
var ary = ["BattleHAnime_B05b_1", "BattleHAnime_B05b_2", "BattleHAnime_B05b_3"];
}
}
} else if (Htype == "スライム") {
if ($gameVariables.value(133) == 1) {
if ($gameVariables.value(204) == 0) {
var ary = ["eva_c123_00_00_01", "eva_c123_00_00_02", "eva_c123_00_00_03"];
} else {
var ary = ["BattleHAnime_A07a_1", "BattleHAnime_A07a_2", "BattleHAnime_A07a_3"];
}
} else {
if ($gameVariables.value(205) == 0) {
var ary = ["evb_c123_00_00_01", "evb_c123_00_00_02", "evb_c123_00_00_03"];
} else {
var ary = ["BattleHAnime_B07a_1", "BattleHAnime_B07a_2", "BattleHAnime_B07a_3"];
}
}
} else if (Htype == "魔犬") {
if ($gameVariables.value(133) == 1) {
if ($gameVariables.value(204) == 0) {
var ary = ["BattleHAnime_A08a_1", "BattleHAnime_A08a_2", "BattleHAnime_A08a_3"];
} else {
var ary = ["BattleHAnime_A08b_1", "BattleHAnime_A08b_2", "BattleHAnime_A08b_3"];
}
} else {
if ($gameVariables.value(205) == 0) {
var ary = ["BattleHAnime_B08a_1", "BattleHAnime_B08a_2", "BattleHAnime_B08a_3"];
} else {
var ary = ["BattleHAnime_B08b_1", "BattleHAnime_B08b_2", "BattleHAnime_B08b_3"];
}
}
} else if (Htype == "魔豚") {
if ($gameVariables.value(133) == 1) {
if ($gameVariables.value(204) == 0) {
var ary = ["BattleHAnime_A10a_1", "BattleHAnime_A10a_2", "BattleHAnime_A10a_3"];
} else {
var ary = ["BattleHAnime_A10b_1", "BattleHAnime_A10b_2", "BattleHAnime_A10b_3"];
}
} else {
if ($gameVariables.value(205) == 0) {
var ary = ["BattleHAnime_B09a_1", "BattleHAnime_B09a_2", "BattleHAnime_B09a_3"];
} else {
var ary = ["BattleHAnime_B09b_1", "BattleHAnime_B09b_2", "BattleHAnime_B09b_3"];
}
}
} else if (Htype == "妖馬") {
if ($gameVariables.value(133) == 1) {
if ($gameVariables.value(204) == 0) {
var ary = ["BattleHAnime_A11a_1", "BattleHAnime_A11a_2", "BattleHAnime_A11a_3"];
} else {
var ary = ["BattleHAnime_A11b_1", "BattleHAnime_A11b_2", "BattleHAnime_A11b_3"];
}
} else {
if ($gameVariables.value(205) == 0) {
var ary = ["BattleHAnime_B11a_1", "BattleHAnime_B11a_2", "BattleHAnime_B11a_3"];
} else {
var ary = ["BattleHAnime_B11b_1", "BattleHAnime_B11b_2", "BattleHAnime_B11b_3"];
}
}
} else if (Htype == "触手") {
if ($gameVariables.value(133) == 1) {
if ($gameVariables.value(204) == 0) {
var ary = ["BattleHAnime_A13a_1", "BattleHAnime_A13a_2", "BattleHAnime_A13a_3"];
} else {
var ary = ["BattleHAnime_A13b_1", "BattleHAnime_A13b_2", "BattleHAnime_A13b_3"];
}
} else {
if ($gameVariables.value(205) == 0) {
var ary = ["BattleHAnime_B13a_1", "BattleHAnime_B13a_2", "BattleHAnime_B13a_3"];
} else {
var ary = ["BattleHAnime_B13b_1", "BattleHAnime_B13b_2", "BattleHAnime_B13b_3"];
}
}
}
}
//アナルの処理
else {
if (Htype == "人間") {
if ($gameVariables.value(133) == 1) {
if ($gameVariables.value(204) == 0) {
var ary = ["BattleHAnime_A02a_1", "BattleHAnime_A02a_2", "BattleHAnime_A02a_3"];
} else {
var ary = ["BattleHAnime_A02b_1", "BattleHAnime_A02b_2", "BattleHAnime_A02b_3"];
}
} else {
if ($gameVariables.value(205) == 0) {
var ary = ["BattleHAnime_B02a_1", "BattleHAnime_B02a_2", "BattleHAnime_B02a_3"];
} else {
var ary = ["BattleHAnime_B02b_1", "BattleHAnime_B02b_2", "BattleHAnime_B02b_3"];
}
}
} else if (Htype == "ゴブリン") {
if ($gameVariables.value(133) == 1) {
if ($gameVariables.value(204) == 0) {
var ary = ["eva_c121_00_01_01", "eva_c121_00_01_02", "eva_c121_00_01_03"];
} else {
var ary = ["BattleHAnime_A04b_1", "BattleHAnime_A04b_2", "BattleHAnime_A04b_3"];
}
} else {
if ($gameVariables.value(205) == 0) {
var ary = ["evb_c121_00_01_01", "evb_c121_00_01_02", "evb_c121_00_01_03"];
} else {
var ary = ["BattleHAnime_B04b_1", "BattleHAnime_B04b_2", "BattleHAnime_B04b_3"];
}
}
} else if (Htype == "オーク") {
if ($gameVariables.value(133) == 1) {
if ($gameVariables.value(204) == 0) {
var ary = ["eva_c120_00_01_01", "eva_c120_00_01_02", "eva_c120_00_01_03"];
} else {
var ary = ["BattleHAnime_A06b_1", "BattleHAnime_A06b_2", "BattleHAnime_A06b_3"];
}
} else {
if ($gameVariables.value(205) == 0) {
var ary = ["evb_c120_00_01_01", "evb_c120_00_01_02", "evb_c120_00_01_03"];
} else {
var ary = ["BattleHAnime_B06b_1", "BattleHAnime_B06b_2", "BattleHAnime_B06b_3"];
}
}
} else if (Htype == "スライム") {
if ($gameVariables.value(133) == 1) {
if ($gameVariables.value(204) == 0) {
var ary = ["eva_c123_00_01_01", "eva_c123_00_01_02", "eva_c123_00_01_03"];
} else {
var ary = ["BattleHAnime_A07b_1", "BattleHAnime_A07b_2", "BattleHAnime_A07b_3"];
}
} else {
if ($gameVariables.value(205) == 0) {
var ary = ["evb_c123_00_01_01", "evb_c123_00_01_02", "evb_c123_00_01_03"];
} else {
var ary = ["BattleHAnime_B07b_1", "BattleHAnime_B07b_2", "BattleHAnime_B07b_3"];
}
}
} else if (Htype == "魔犬") {
if ($gameVariables.value(133) == 1) {
if ($gameVariables.value(204) == 0) {
var ary = ["eva_c125_00_01_01", "eva_c125_00_01_02", "eva_c125_00_01_03"];
} else {
var ary = ["BattleHAnime_A09b_1", "BattleHAnime_A09b_2", "BattleHAnime_A09b_3"];
}
} else {
if ($gameVariables.value(205) == 0) {
var ary = ["evb_c125_00_01_01", "evb_c125_00_01_02", "evb_c125_00_01_03"];
} else {
var ary = ["BattleHAnime_B15b_1", "BattleHAnime_B15b_2", "BattleHAnime_B15b_3"];
}
}
} else if (Htype == "魔豚") {
if ($gameVariables.value(133) == 1) {
if ($gameVariables.value(204) == 0) {
var ary = ["eva_c126_00_01_01", "eva_c126_00_01_02", "eva_c126_00_01_03"];
} else {
var ary = ["BattleHAnime_A15b_1", "BattleHAnime_A15b_2", "BattleHAnime_A15b_3"];
}
} else {
if ($gameVariables.value(205) == 0) {
var ary = ["evb_c126_00_01_01", "evb_c126_00_01_02", "evb_c126_00_01_03"];
} else {
var ary = ["BattleHAnime_B10b_1", "BattleHAnime_B10b_2", "BattleHAnime_B10b_3"];
}
}
} else if (Htype == "妖馬") {
if ($gameVariables.value(133) == 1) {
if ($gameVariables.value(204) == 0) {
var ary = ["eva_c127_00_01_01", "eva_c127_00_01_02", "eva_c127_00_01_03"];
} else {
var ary = ["BattleHAnime_A12b_1", "BattleHAnime_A12b_2", "BattleHAnime_A12b_3"];
}
} else {
if ($gameVariables.value(205) == 0) {
var ary = ["evb_c127_00_01_01", "evb_c127_00_01_02", "evb_c127_00_01_03"];
} else {
var ary = ["BattleHAnime_B12b_1", "BattleHAnime_B12b_2", "BattleHAnime_B12b_3"];
}
}
} else if (Htype == "触手") {
if ($gameVariables.value(133) == 1) {
if ($gameVariables.value(204) == 0) {
var ary = ["BattleHAnime_A13a_1", "BattleHAnime_A13a_2", "BattleHAnime_A13a_3"];
} else {
var ary = ["BattleHAnime_A13b_1", "BattleHAnime_A13b_2", "BattleHAnime_A13b_3"];
}
} else {
if ($gameVariables.value(205) == 0) {
var ary = ["BattleHAnime_B13a_1", "BattleHAnime_B13a_2", "BattleHAnime_B13a_3"];
} else {
var ary = ["BattleHAnime_B13b_1", "BattleHAnime_B13b_2", "BattleHAnime_B13b_3"];
}
}
}
}
if ($gameVariables.value(133) == 1) {
if ($gameVariables.value(136) == 1) {
var aryNum = 0;
} else if ($gameVariables.value(136) == 2 || $gameVariables.value(136) == 3) {
var aryNum = 1;
} else if ($gameVariables.value(136) == 4 || $gameVariables.value(136) == 5) {
var aryNum = 2;
} else {
var aryNum = 0;
}
} else {
if ($gameVariables.value(137) == 1) {
var aryNum = 0;
} else if ($gameVariables.value(137) == 2 || $gameVariables.value(137) == 3) {
var aryNum = 1;
} else if ($gameVariables.value(137) == 4 || $gameVariables.value(137) == 5) {
var aryNum = 2;
} else {
var aryNum = 0;
}
}
//Hアニメ回想登録処理
var actFile = ary[aryNum];
SDN_SetHanimeRef(actFile.slice(0, 17));
return actFile;
};
//■拘束時画像の表示
var SDN_ShowKousokuImg = function (name) {
//ベース設定
if (name == "Shirayuki") {
var evChara = "eva_d";
var cosChara = $gameVariables.value(204);
var kousokuState = $gameVariables.value(136);
var idx = 9;
} else {
var evChara = "evb_d";
var cosChara = $gameVariables.value(205);
var kousokuState = $gameVariables.value(137);
var idx = 5;
}
//拘束している敵の種類変数138番
var Enemy = $gameVariables.value(138);
var list = [
{ type: "人間", id: "001" },
{ type: "ゴブリン", id: "002" },
{ type: "オーク", id: "003" },
{ type: "魔犬", id: "004" },
{ type: "魔豚", id: "005" },
{ type: "妖馬", id: "006" },
{ type: "スライム", id: "007" },
{ type: "触手", id: "008" }
];
var evEnemy = list.find((e) => e.type === Enemy).id;
//服装
if (cosChara == 0) {
var evCos = "00";
} else {
var evCos = "01";
}
//部位
if ($gameVariables.value(134) == 1) {
var evPos = "00";
} else {
var evPos = "01";
}
//拘束状態(1=未挿入 2=マンコ挿入 3=アナル挿入)
if (kousokuState < 2) {
var evKousoku = "01";
} else {
var evKousoku = "02";
}
var dataName = evChara + evEnemy + "_" + evCos + "_" + evPos + "_" + evKousoku;
$gameScreen.showPicture(10, dataName, 0, -128, -72, 120, 120, 0, 0);
$gameScreen.movePicture(10, 0, 0, 0, 100, 100, 255, 0, 5);
};
//■戦闘行動の再定義
//※戦闘行動の条件をスイッチにしているスキルが
//スイッチがOFFになってるのに選ばれてしまう不具合に対応
const _BattleManager_processTurn = BattleManager.processTurn;
BattleManager.processTurn = function () {
const subject = this._subject;
//敵の場合のみ実行 拘束発生中sw166のみ実行
if (subject.isEnemy() && $gameSwitches.value(169)) {
const action = subject.currentAction();
//行動前にアクションを再設定させる
if (action) {
subject.makeActions();
subject._firstActionDone = true;
}
}
//元処理を実行
_BattleManager_processTurn.apply(this);
};
//----------------------------------------------------
//■ADVエッチアニメの処理
//----------------------------------------------------
//一時変数1・2と一時スイッチ1を使う
var SDN_SetAdvHanime = function (file, animeId, loop) {
$gameVariables.setValue(4, file);
$gameVariables.setValue(5, animeId);
$gameSwitches.setValue(102, loop);
//回想モード登録処理
SDN_SetHanimeRef(file);
};
//----------------------------------------------------
//■Hなことして時間つぶしの処理
//----------------------------------------------------
var SDN_SetFreeEro = function (name, type) {
//配列取得の数値
if (name == "Shirayuki") {
var num = 0;
} else {
var num = 1;
}
//typeを一時変数に代入履歴取得処理のため
$gameVariables.setValue(4, type);
//変数IDの設定
//H経験:人間相手
var tgt = [259, 339];
//H経験:人との性行為
var seitgt = [288, 368];
//セックス系
//H経験:セックス
var sex = [262, 342];
//H経験:キス
var kiss = [268, 348];
//H経験:乳揉み
var chichimomi = [269, 349];
//H経験:手マン
var teman = [271, 351];
//アナル系
//H経験:アナルセックス
var anal = [263, 343];
//H経験:尻揉み
var sirimomi = [270, 350];
//H経験:アナル弄り
var analijiri = [272, 352];
//セクハラ系
//H経験:クンニ
var kunni = [267, 347];
//H経験:セクハラ
var sexualharassment = [292, 372];
//奉仕系
//H経験:フェラチオ
var fera = [264, 344];
//H経験:パイズリ
var paizuri = [265, 345];
//H経験:手コキ
var tekoki = [266, 346];
//H経験:ご奉仕
var houshi = [293, 373];
//オナニー
//H経験:オナニー
var onanie = [273, 353];
//H経験:アナニー
var ananie = [274, 354];
//H経験:露出プレイ
var roshutsuplay = [276, 356];
//開発度経験値
//淫乱度
var expInran = [252, 332];
//口淫
var expMouse = [253, 333];
//乳房
var expBust = [254, 334];
//マンコ
var expVagina = [255, 335];
//アナル
var expAnal = [256, 336];
//露出
var expRoshutsu = [257, 337];
//奉仕
var expHoushi = [258, 338];
//絶頂
var ecstasy = [281, 361];
//潮吹き
var ecstasy_sio = [282, 362];
//母乳
var ecstasy_milk = [287, 367];
var ecstasy_milk_sw = [262, 308];
//射精
var bukkake = [283, 363];
var nakadashi = [284, 364];
var nakadashi_anal = [285, 365];
var nakadashi_mouse = [286, 366];
//実行処理
//オナニーの場合
if (type == 1) {
var setValue = Math.round(Math.random() * 3) + 2;
$gameVariables.setValue(onanie[num], $gameVariables.value(onanie[num]) + setValue);
$gameVariables.setValue(expInran[num], $gameVariables.value(expInran[num]) + 30);
$gameVariables.setValue(expVagina[num], $gameVariables.value(expVagina[num]) + 30);
$gameVariables.setValue(expRoshutsu[num], $gameVariables.value(expRoshutsu[num]) + 30);
//絶頂処理
var setExValue = Math.round(Math.random() * 10) + 5;
$gameVariables.setValue(ecstasy[num], $gameVariables.value(ecstasy[num]) + setExValue);
setExValue = setExValue - Math.round(Math.random() * 5);
if (setExValue >= 1) {
$gameVariables.setValue(ecstasy_sio[num], $gameVariables.value(ecstasy_sio[num]) + setExValue);
}
if ($gameSwitches.value(ecstasy_milk_sw[num])) {
setExValue = Math.round(Math.random() * 200) + 80;
$gameVariables.setValue(ecstasy_sio[num], $gameVariables.value(ecstasy_sio[num]) + setExValue);
}
//アナニーの場合
} else if (type == 2) {
var setValue = Math.round(Math.random() * 3) + 2;
$gameVariables.setValue(ananie[num], $gameVariables.value(ananie[num]) + setValue);
$gameVariables.setValue(expInran[num], $gameVariables.value(expInran[num]) + 30);
$gameVariables.setValue(expAnal[num], $gameVariables.value(expAnal[num]) + 30);
$gameVariables.setValue(expRoshutsu[num], $gameVariables.value(expRoshutsu[num]) + 30);
//絶頂処理
var setExValue = Math.round(Math.random() * 10) + 5;
$gameVariables.setValue(ecstasy[num], $gameVariables.value(ecstasy[num]) + setExValue);
setExValue = setExValue - Math.round(Math.random() * 5);
if (setExValue >= 1) {
$gameVariables.setValue(ecstasy_sio[num], $gameVariables.value(ecstasy_sio[num]) + setExValue);
}
if ($gameSwitches.value(ecstasy_milk_sw[num])) {
setExValue = Math.round(Math.random() * 200) + 80;
$gameVariables.setValue(ecstasy_sio[num], $gameVariables.value(ecstasy_sio[num]) + setExValue);
}
//セックスの場合
} else if (type == 3) {
var setValue = Math.round(Math.random() * 8) + 2;
$gameVariables.setValue(sex[num], $gameVariables.value(sex[num]) + setValue);
$gameVariables.setValue(tgt[num], $gameVariables.value(tgt[num]) + setValue);
$gameVariables.setValue(seitgt[num], $gameVariables.value(seitgt[num]) + setValue);
setValue = Math.round(Math.random() * 5);
$gameVariables.setValue(kiss[num], $gameVariables.value(kiss[num]) + setValue);
if (setValue >= 1) {
$gameVariables.setValue(expMouse[num], $gameVariables.value(expMouse[num]) + 20);
}
setValue = Math.round(Math.random() * 5);
$gameVariables.setValue(chichimomi[num], $gameVariables.value(chichimomi[num]) + setValue);
if (setValue >= 1) {
$gameVariables.setValue(expBust[num], $gameVariables.value(expBust[num]) + 20);
}
setValue = Math.round(Math.random() * 5);
$gameVariables.setValue(teman[num], $gameVariables.value(teman[num]) + setValue);
$gameVariables.setValue(expInran[num], $gameVariables.value(expInran[num]) + 50);
$gameVariables.setValue(expVagina[num], $gameVariables.value(expVagina[num]) + 50);
$gameVariables.setValue(expRoshutsu[num], $gameVariables.value(expRoshutsu[num]) + 30);
//絶頂処理
var setExValue = Math.round(Math.random() * 10) + 5;
$gameVariables.setValue(ecstasy[num], $gameVariables.value(ecstasy[num]) + setExValue);
setExValue = setExValue - Math.round(Math.random() * 5);
if (setExValue >= 1) {
$gameVariables.setValue(ecstasy_sio[num], $gameVariables.value(ecstasy_sio[num]) + setExValue);
}
if ($gameSwitches.value(ecstasy_milk_sw[num])) {
setExValue = Math.round(Math.random() * 200) + 80;
$gameVariables.setValue(ecstasy_sio[num], $gameVariables.value(ecstasy_sio[num]) + setExValue);
}
//射精処理
setExValue = Math.round(Math.random() * 5);
if (setExValue >= 1) {
setExValue = setExValue * 15;
$gameVariables.setValue(bukkake[num], $gameVariables.value(bukkake[num]) + setExValue);
}
setExValue = Math.round(Math.random() * 5);
if (setExValue >= 1) {
setExValue = setExValue * 15;
$gameVariables.setValue(nakadashi[num], $gameVariables.value(nakadashi[num]) + setExValue);
//中出しスイッチON
$gameSwitches.setValue(215, true);
}
//アナルセックスの場合
} else if (type == 4) {
var setValue = Math.round(Math.random() * 8) + 2;
$gameVariables.setValue(anal[num], $gameVariables.value(anal[num]) + setValue);
$gameVariables.setValue(tgt[num], $gameVariables.value(tgt[num]) + setValue);
$gameVariables.setValue(seitgt[num], $gameVariables.value(seitgt[num]) + setValue);
setValue = Math.round(Math.random() * 5);
$gameVariables.setValue(kiss[num], $gameVariables.value(kiss[num]) + setValue);
if (setValue >= 1) {
$gameVariables.setValue(expMouse[num], $gameVariables.value(expMouse[num]) + 20);
}
setValue = Math.round(Math.random() * 5);
$gameVariables.setValue(chichimomi[num], $gameVariables.value(chichimomi[num]) + setValue);
if (setValue >= 1) {
$gameVariables.setValue(expBust[num], $gameVariables.value(expBust[num]) + 20);
}
setValue = Math.round(Math.random() * 5);
$gameVariables.setValue(sirimomi[num], $gameVariables.value(sirimomi[num]) + setValue);
setValue = Math.round(Math.random() * 5);
$gameVariables.setValue(analijiri[num], $gameVariables.value(analijiri[num]) + setValue);
$gameVariables.setValue(expInran[num], $gameVariables.value(expInran[num]) + 50);
$gameVariables.setValue(expAnal[num], $gameVariables.value(expAnal[num]) + 50);
$gameVariables.setValue(expRoshutsu[num], $gameVariables.value(expRoshutsu[num]) + 30);
//絶頂処理
var setExValue = Math.round(Math.random() * 10) + 5;
$gameVariables.setValue(ecstasy[num], $gameVariables.value(ecstasy[num]) + setExValue);
setExValue = setExValue - Math.round(Math.random() * 5);
if (setExValue >= 1) {
$gameVariables.setValue(ecstasy_sio[num], $gameVariables.value(ecstasy_sio[num]) + setExValue);
}
if ($gameSwitches.value(ecstasy_milk_sw[num])) {
setExValue = Math.round(Math.random() * 200) + 80;
$gameVariables.setValue(ecstasy_sio[num], $gameVariables.value(ecstasy_sio[num]) + setExValue);
}
//射精処理
setExValue = Math.round(Math.random() * 5);
if (setExValue >= 1) {
setExValue = setExValue * 15;
$gameVariables.setValue(bukkake[num], $gameVariables.value(bukkake[num]) + setExValue);
}
setExValue = Math.round(Math.random() * 5);
if (setExValue >= 1) {
setExValue = setExValue * 15;
$gameVariables.setValue(nakadashi_anal[num], $gameVariables.value(nakadashi_anal[num]) + setExValue);
}
//セクハラの場合
} else if (type == 5) {
var setValue = Math.round(Math.random() * 4) + 1;
$gameVariables.setValue(kiss[num], $gameVariables.value(kiss[num]) + setValue);
if (setValue >= 1) {
$gameVariables.setValue(expMouse[num], $gameVariables.value(expMouse[num]) + 20);
}
var setValueSub = setValue;
setValue = Math.round(Math.random() * 5) + 1;
$gameVariables.setValue(chichimomi[num], $gameVariables.value(chichimomi[num]) + setValue);
$gameVariables.setValue(expBust[num], $gameVariables.value(expBust[num]) + 20);
setValueSub = setValueSub + setValue;
setValue = Math.round(Math.random() * 5) + 1;
$gameVariables.setValue(sirimomi[num], $gameVariables.value(sirimomi[num]) + setValue);
$gameVariables.setValue(expAnal[num], $gameVariables.value(expAnal[num]) + 20);
setValueSub = setValueSub + setValue;
setValue = Math.round(Math.random() * 5);
$gameVariables.setValue(teman[num], $gameVariables.value(teman[num]) + setValue);
if (setValue >= 1) {
$gameVariables.setValue(expVagina[num], $gameVariables.value(expVagina[num]) + 20);
}
setValueSub = setValueSub + setValue;
setValue = Math.round(Math.random() * 5);
$gameVariables.setValue(kunni[num], $gameVariables.value(kunni[num]) + setValue);
if (setValue >= 1) {
$gameVariables.setValue(expVagina[num], $gameVariables.value(expVagina[num]) + 20);
}
setValueSub = setValueSub + setValue;
setValue = Math.round(Math.random() * 5);
if (setValue >= 1) {
$gameVariables.setValue(analijiri[num], $gameVariables.value(analijiri[num]) + setValue);
$gameVariables.setValue(expAnal[num], $gameVariables.value(expAnal[num]) + 20);
}
$gameVariables.setValue(tgt[num], $gameVariables.value(tgt[num]) + setValueSub);
$gameVariables.setValue(sexualharassment[num], $gameVariables.value(sexualharassment[num]) + setValueSub);
$gameVariables.setValue(expInran[num], $gameVariables.value(expInran[num]) + 30);
if ($gameVariables.value(202) == 1) {
$gameVariables.setValue(roshutsuplay[num], $gameVariables.value(roshutsuplay[num]) + setValueSub);
$gameVariables.setValue(expRoshutsu[num], $gameVariables.value(expRoshutsu[num]) + 50);
}
//絶頂処理
var setExValue = Math.round(Math.random() * 10) + 5;
$gameVariables.setValue(ecstasy[num], $gameVariables.value(ecstasy[num]) + setExValue);
setExValue = setExValue - Math.round(Math.random() * 5);
if (setExValue >= 1) {
$gameVariables.setValue(ecstasy_sio[num], $gameVariables.value(ecstasy_sio[num]) + setExValue);
}
if ($gameSwitches.value(ecstasy_milk_sw[num])) {
setExValue = Math.round(Math.random() * 200) + 80;
$gameVariables.setValue(ecstasy_sio[num], $gameVariables.value(ecstasy_sio[num]) + setExValue);
}
//奉仕の場合
} else if (type == 6) {
var setValue = Math.round(Math.random() * 4) + 2;
$gameVariables.setValue(fera[num], $gameVariables.value(fera[num]) + setValue);
$gameVariables.setValue(expMouse[num], $gameVariables.value(expMouse[num]) + 50);
var setValueSub = setValue;
setValue = Math.round(Math.random() * 5);
$gameVariables.setValue(paizuri[num], $gameVariables.value(paizuri[num]) + setValue);
if (setValue >= 1) {
$gameVariables.setValue(expBust[num], $gameVariables.value(expBust[num]) + 30);
}
setValueSub = setValueSub + setValue;
setValue = Math.round(Math.random() * 5);
$gameVariables.setValue(tekoki[num], $gameVariables.value(tekoki[num]) + setValue);
setValueSub = setValueSub + setValue;
$gameVariables.setValue(tgt[num], $gameVariables.value(tgt[num]) + setValueSub);
$gameVariables.setValue(houshi[num], $gameVariables.value(houshi[num]) + setValueSub);
$gameVariables.setValue(expHoushi[num], $gameVariables.value(expHoushi[num]) + 50);
$gameVariables.setValue(expRoshutsu[num], $gameVariables.value(expRoshutsu[num]) + 20);
//射精処理
setExValue = Math.round(Math.random() * 5);
if (setExValue >= 1) {
setExValue = setExValue * 15;
$gameVariables.setValue(bukkake[num], $gameVariables.value(bukkake[num]) + setExValue);
}
setExValue = Math.round(Math.random() * 5);
if (setExValue >= 1) {
setExValue = setExValue * 15;
$gameVariables.setValue(nakadashi_mouse[num], $gameVariables.value(nakadashi_mouse[num]) + setExValue);
}
}
};
//■汎用異種姦の動画ファイル取得処理
var SDN_SetIshukanMovie = function () {
if ($gameSwitches.value(117)) {
if ($gameVariables.value(6) == "オーク") {
if ($gameVariables.value(5) == 0) {
$gameVariables.setValue(4, "Hanime_A07");
} else {
$gameVariables.setValue(4, "Hanime_A08");
}
} else if ($gameVariables.value(6) == "魔犬") {
if ($gameVariables.value(5) == 0) {
$gameVariables.setValue(4, "Hanime_A09");
} else {
$gameVariables.setValue(4, "Hanime_A10");
}
} else if ($gameVariables.value(6) == "魔豚") {
if ($gameVariables.value(5) == 0) {
$gameVariables.setValue(4, "Hanime_A11");
} else {
$gameVariables.setValue(4, "Hanime_A12");
}
} else if ($gameVariables.value(6) == "妖馬") {
if ($gameVariables.value(5) == 0) {
$gameVariables.setValue(4, "Hanime_A13");
} else {
$gameVariables.setValue(4, "Hanime_A14");
}
}
} else {
if ($gameVariables.value(6) == "オーク") {
if ($gameVariables.value(5) == 0) {
$gameVariables.setValue(4, "Hanime_B07");
} else {
$gameVariables.setValue(4, "Hanime_B08");
}
} else if ($gameVariables.value(6) == "魔犬") {
if ($gameVariables.value(5) == 0) {
$gameVariables.setValue(4, "Hanime_B09");
} else {
$gameVariables.setValue(4, "Hanime_B10");
}
} else if ($gameVariables.value(6) == "魔豚") {
if ($gameVariables.value(5) == 0) {
$gameVariables.setValue(4, "Hanime_B11");
} else {
$gameVariables.setValue(4, "Hanime_B12");
}
} else if ($gameVariables.value(6) == "妖馬") {
if ($gameVariables.value(5) == 0) {
$gameVariables.setValue(4, "Hanime_B13");
} else {
$gameVariables.setValue(4, "Hanime_B14");
}
}
}
SDN_SetHanimeRef($gameVariables.value(4));
};
//■操作キャラ変更可能フラグ
var SDN_CanChangeChara = function () {
if (!$gameSwitches.value(116)) {
return false;
}
//MAP毎に設定
if ($gameMap.mapId() == 74) {
return false;
}
//釣り実行中は無効に!
if ($gameSwitches.value(185)) {
return false;
}
//銭湯ではキャラ変更を不可に!
if ($gameMap.mapId() == 78 || $gameMap.mapId() == 79 || $gameMap.mapId() == 80) {
return false;
}
//臨月中のキャラがいるとキャラ変更を不可に!
if (SDN_CharaNowPregnancy()) {
return false;
}
return true;
};
//■引き継ぎプレイのデータ作成処理
var SDN_CreateGameDataEx = function () {
//装備を全て外す処理
$gameParty.members()[0].clearEquipments();
$gameParty.members()[1].clearEquipments();
//経験値の保管変数541番
$gameVariables.setValue(541, [$gameActors.actor(1).currentExp(), $gameActors.actor(2).currentExp()]);
//お金の保管変数542番
$gameVariables.setValue(542, $gameParty.gold());
//アイテムの保管変数543番
var GetDataItems = [];
for (let i = 2; i < 15; i++) {
GetDataItems.push($gameParty.numItems($dataItems[i]));
}
for (let i = 24; i < 38; i++) {
GetDataItems.push($gameParty.numItems($dataItems[i]));
}
for (let i = 39; i < 48; i++) {
GetDataItems.push($gameParty.numItems($dataItems[i]));
}
for (let i = 54; i < 57; i++) {
GetDataItems.push($gameParty.numItems($dataItems[i]));
}
for (let i = 64; i < 67; i++) {
GetDataItems.push($gameParty.numItems($dataItems[i]));
}
$gameVariables.setValue(543, GetDataItems);
//アクセの保管変数544番
var GetDataAcc = [];
for (let i = 4; i < 38; i++) {
GetDataItems.push($gameParty.numItems($dataWeapons[i]));
}
$gameVariables.setValue(544, GetDataAcc);
ConfigManager.saveCommonVariables();
};
//■引き継ぎプレイのエロステデータ作成処理
var SDN_CreateErosteData = function (name) {
var GetErosteData = [];
var GetEroSkillData = [];
//白雪変数545番/夜鶴変数546番
if (name == "Shirayuki") {
for (let i = 245; i < 309; i++) {
GetErosteData.push($gameVariables.value(i));
}
$gameVariables.setValue(545, GetErosteData);
//白雪の性経験を保存
$gameVariables.setValue(547, $gameVariables.value(69));
//Hスキルの取得状態を保存
for (let i = 130; i < 141; i++) {
if ($gameActors.actor(1).hasSkill(i)) {
GetEroSkillData.push(1);
} else {
GetEroSkillData.push(0);
}
}
$gameVariables.setValue(549, GetEroSkillData);
} else {
for (let i = 325; i < 389; i++) {
GetErosteData.push($gameVariables.value(i));
}
$gameVariables.setValue(546, GetErosteData);
//夜鶴の性経験を保存
$gameVariables.setValue(548, $gameVariables.value(70));
//Hスキルの取得状態を保存
for (let i = 130; i < 141; i++) {
if ($gameActors.actor(2).hasSkill(i)) {
GetEroSkillData.push(1);
} else {
GetEroSkillData.push(0);
}
}
$gameVariables.setValue(550, GetEroSkillData);
}
ConfigManager.saveCommonVariables();
};
//■引き継ぎデータプレイ
var SDN_SetGameDataEx = function () {
//経験値の引き継ぎ
$gameActors.actor(1).changeExp($gameActors.actor(1).currentExp() + $gameVariables.value(541)[0], false);
$gameActors.actor(2).changeExp($gameActors.actor(2).currentExp() + $gameVariables.value(541)[1], false);
//お金の引き継ぎ
$gameParty.gainGold($gameVariables.value(542));
//アイテムの引き継ぎ
var setNum = 0;
for (let i = 2; i < 15; i++) {
if ($gameVariables.value(543)[setNum] >= 1) {
$gameParty.gainItem($dataItems[i], $gameVariables.value(543)[setNum]);
}
setNum = setNum + 1;
}
for (let i = 24; i < 38; i++) {
if ($gameVariables.value(543)[setNum] >= 1) {
$gameParty.gainItem($dataItems[i], $gameVariables.value(543)[setNum]);
}
setNum = setNum + 1;
}
for (let i = 39; i < 48; i++) {
if ($gameVariables.value(543)[setNum] >= 1) {
$gameParty.gainItem($dataItems[i], $gameVariables.value(543)[setNum]);
}
setNum = setNum + 1;
}
for (let i = 54; i < 57; i++) {
if ($gameVariables.value(543)[setNum] >= 1) {
$gameParty.gainItem($dataItems[i], $gameVariables.value(543)[setNum]);
}
setNum = setNum + 1;
}
for (let i = 64; i < 67; i++) {
if ($gameVariables.value(543)[setNum] >= 1) {
$gameParty.gainItem($dataItems[i], $gameVariables.value(543)[setNum]);
}
setNum = setNum + 1;
}
//アクセサリーの引き継ぎ
setNum = 0;
for (let i = 4; i < 38; i++) {
if ($gameVariables.value(544)[setNum] >= 1) {
$gameParty.gainItem($dataWeapons[i], $gameVariables.value(544)[setNum], true);
}
setNum = setNum + 1;
}
};
//■エロステ引き継ぎ
var SDN_SetErosteData = function (name) {
var setNum = 0;
var GetPregnancyData = [];
if (name == "Shirayuki") {
for (let i = 245; i < 298; i++) {
$gameVariables.setValue(i, $gameVariables.value(393)[setNum]);
setNum = setNum + 1;
}
//妊娠関係は別に補完しておく
for (let i = 298; i < 308; i++) {
GetPregnancyData.push($gameVariables.value(393)[setNum]);
setNum = setNum + 1;
}
$gameVariables.setValue(308, $gameVariables.value(393)[setNum]);
$gameVariables.setValue(391, GetPregnancyData);
//エロスキルの習得
setNum = 0;
for (let i = 130; i < 136; i++) {
if ($gameVariables.value(395)[setNum] == 1) {
$gameActors.actor(1).learnSkill(i);
}
setNum = setNum + 1;
}
} else {
for (let i = 325; i < 378; i++) {
$gameVariables.setValue(i, $gameVariables.value(394)[setNum]);
setNum = setNum + 1;
}
//妊娠関係は別に補完しておく
for (let i = 378; i < 388; i++) {
GetPregnancyData.push($gameVariables.value(394)[setNum]);
setNum = setNum + 1;
}
$gameVariables.setValue(388, $gameVariables.value(394)[setNum]);
$gameVariables.setValue(392, GetPregnancyData);
//エロスキルの習得
setNum = 0;
for (let i = 130; i < 136; i++) {
if ($gameVariables.value(396)[setNum] == 1) {
$gameActors.actor(2).learnSkill(i);
}
setNum = setNum + 1;
}
//W系のスキル習得処理
for (let i = 137; i < 141; i++) {
if ($gameVariables.value(396)[setNum] == 1) {
$gameActors.actor(1).learnSkill(i);
$gameActors.actor(2).learnSkill(i);
}
setNum = setNum + 1;
}
}
};
//■出産データ引き継ぎ
var SDN_SetBirthData = function (name) {
var setNum = 0;
if (name == "Shirayuki") {
for (let i = 298; i < 308; i++) {
$gameVariables.setValue(i, $gameVariables.value(391)[setNum]);
setNum = setNum + 1;
}
} else {
for (let i = 378; i < 388; i++) {
$gameVariables.setValue(i, $gameVariables.value(392)[setNum]);
setNum = setNum + 1;
}
}
};
//■Hアニメ回想登録処理
var SDN_SetHanimeRef = function (filecode) {
//アニメ回想登録に使用する変数は522番
var setVari = 522;
var v = $gameVariables.value(setVari) || [];
var ary = [
"Dummy",
"BattleHAnime_A01a",
"BattleHAnime_A01b",
"BattleHAnime_A02a",
"BattleHAnime_A02b",
"BattleHAnime_A03a",
"BattleHAnime_A03b",
"BattleHAnime_A04b",
"BattleHAnime_A05a",
"BattleHAnime_A05b",
"BattleHAnime_A06b",
"BattleHAnime_A07a",
"BattleHAnime_A07b",
"BattleHAnime_A08a",
"BattleHAnime_A08b",
"BattleHAnime_A09b",
"BattleHAnime_A10a",
"BattleHAnime_A10b",
"BattleHAnime_A11a",
"BattleHAnime_A11b",
"BattleHAnime_A12b",
"BattleHAnime_A13a",
"BattleHAnime_A13b",
"BattleHAnime_A14b",
"BattleHAnime_A15b",
"BattleHAnime_A16b",
"BattleHAnime_B01a",
"BattleHAnime_B01b",
"BattleHAnime_B02a",
"BattleHAnime_B02b",
"BattleHAnime_B03a",
"BattleHAnime_B03b",
"BattleHAnime_B04b",
"BattleHAnime_B05a",
"BattleHAnime_B05b",
"BattleHAnime_B06b",
"BattleHAnime_B07a",
"BattleHAnime_B07b",
"BattleHAnime_B08a",
"BattleHAnime_B08b",
"BattleHAnime_B09a",
"BattleHAnime_B09b",
"BattleHAnime_B10b",
"BattleHAnime_B11a",
"BattleHAnime_B11b",
"BattleHAnime_B12b",
"BattleHAnime_B13a",
"BattleHAnime_B13b",
"BattleHAnime_B14b",
"BattleHAnime_B15b",
"BattleHAnime_B16b",
"Hanime_A01",
"Hanime_A02",
"Hanime_A03",
"Hanime_A04",
"Hanime_A05",
"Hanime_A06",
"Hanime_A07",
"Hanime_A08",
"Hanime_A09",
"Hanime_A10",
"Hanime_A11",
"Hanime_A12",
"Hanime_A13",
"Hanime_A14",
"Hanime_A15",
"Hanime_B01",
"Hanime_B02",
"Hanime_B03",
"Hanime_B04",
"Hanime_B05",
"Hanime_B06",
"Hanime_B07",
"Hanime_B08",
"Hanime_B09",
"Hanime_B10",
"Hanime_B11",
"Hanime_B12",
"Hanime_B13",
"Hanime_B14",
"Hanime_B15"
];
var idx = ary.findIndex((e) => e && e == filecode);
if (idx != -1) {
v[idx] = true;
$gameVariables.setValue(setVari, v);
ConfigManager.saveCommonVariables();
}
};