var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError( "Class extends value " + String(b) + " is not a constructor or null" ); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : ((__.prototype = b.prototype), new __()); }; })(); /*:ja * @target MZ * @author ル * * @command dousei * @text 同棲選択 * @des 同棲選択 * @arg actorId * @type number * @text actorId * @desc actorId * * @command douseiSet * @text 同棲相手設定 * @des 同棲相手設定 * @arg actorId * @type number * @text actorId * @desc actorId * @arg manId * @type number * @text manId * @desc manId * * @command douseiPlay * @text 同棲アニメ再生 * @arg actorId * @type number * @text actorId * @desc actorId * * @command douseiSexPlay * @text 同棲SEXアニメ再生 * @arg actorId * @type number * @text actorId * @desc actorId * * @command nekoUpdate * @text 猫操作かを更新 * * @command douseiNameSet * @text 同棲相手の名前を変数56番に設定し、55番にIDを設定 * @des 同棲相手の名前を変数56番に設定 * @arg actorId * @type number * @text actorId * @desc actorId * * @command startDouseiMsg * @text 55番のIDの男との汎用同棲会話を作成 * @arg actorId * @type number * * @command startDouseiNinshinMsg * @text 55番のIDの男との妊娠会話を作成 * @arg actorId * @type number * * @command startDouseiSyusanMsg * @text 55番のIDの男との出産会話を作成 * @arg actorId * @type number * * @command startDouseiMaxMsg * @text 同棲相手との友好度MAX会話を実行 * @arg actorId * @type number * * @command upDouseiMaxBonusAndRunScenario * @text 同棲相手との友好度MAXボーナスを獲得してシナリオ実行 * @arg actorId * @type number * * @command upDouseiSyusanFriendship * @text 同棲出産で友好度アップ * @arg actorId * @type number * * @command useCondom * @text コンドーム使用設定 * @arg actorId * @type number * @arg b * @type boolean * * @command startDouseiSexMsg * @text 同棲相手との覗き見イベントを実行 * @arg actorId * @type number */ var Nore; (function (Nore) { var DOUSEI_TOP_Y = 45; var pluginName = "Nore_Dousei"; PluginManager.registerCommand(pluginName, "dousei", function (args) { var actorId = parseInt(args.actorId); if (actorId > 0) { $gameParty.setMenuActorId(actorId); } SceneManager.push(Scene_Dousei); }); PluginManager.registerCommand(pluginName, "douseiSet", function (args) { var actorId = parseInt(args.actorId); var manId = parseInt(args.manId); var dousei = $gameActors.actor(actorId).dousei(); dousei.setMan(manId); }); PluginManager.registerCommand(pluginName, "douseiPlay", function (args) { var actorId = parseInt(args.actorId); $gameActors.actor(actorId).dousei().run(); }); PluginManager.registerCommand(pluginName, "douseiSexPlay", function (args) { var actorId = parseInt(args.actorId); var dousei = $gameActors.actor(actorId).dousei(); dousei.run(); //$gameVariables.setValue(dousei.actorDouseiVar(), Nore.DOUSEI_CHAR_VAR.gyaku); }); PluginManager.registerCommand(pluginName, "nekoUpdate", function (args) { if ($gameVariables.value(72) != 1) { $gameSystem.endNeko(); return; } if ($gameSwitches.value(Nore.SENRI_DOUSEI_SW)) { $gameSystem.playNeko(); } else { $gameSystem.endNeko(); } }); PluginManager.registerCommand(pluginName, "douseiNameSet", function (args) { var actorId = parseInt(args.actorId); var manId = $gameActors.actor(actorId).dousei().manId(); $gameVariables.setValue(55, manId); $gameVariables.setValue(56, $gameActors.actor(manId).name()); }); PluginManager.registerCommand(pluginName, "startDouseiMsg", function (args) { var actorId = parseInt(args.actorId); var manId = $gameVariables.value(55); var manParam = MAN_PARAMS[manId]; var actorName = $gameActors.actor(actorId).nameJp(); var text = "%1_同棲開始_%2_01".format(actorName, manParam.type); p(text); var list = $dataScenario[text]; if (!list) { console.error("id:" + text + " のデータが見つかりません"); return; } console.log("Scenario \u30B3\u30DE\u30F3\u30C9\u5B9F\u884C: ".concat(text)); this.setupChild(list, this._eventId); }); PluginManager.registerCommand( pluginName, "startDouseiNinshinMsg", function (args) { $gameSwitches.setValue(20, false); var actorId = parseInt(args.actorId); var manId = $gameVariables.value(55); var man = $gameActors.actor(manId); var manParam = MAN_PARAMS[manId]; var actor = $gameActors.actor(actorId); var actorName = actor.nameJp(); if (actor.friendship(manId) >= 100) { var text1 = "%1_同棲_妊娠_%2_02".format(actorName, man.nameJp()); if (this.runDouseiScenario(text1)) { return; } var text2 = "%1_同棲_妊娠_%2_02".format(actorName, manParam.type); if (this.runDouseiScenario(text2)) { return; } } var text1_1 = "%1_同棲_妊娠_%2_01".format(actorName, man.nameJp()); if (this.runDouseiScenario(text1_1)) { return; } var text1_2 = "%1_同棲_妊娠_%2_01".format(actorName, manParam.type); if (this.runDouseiScenario(text1_2)) { return; } } ); Game_Interpreter.prototype.runDouseiScenario = function (file) { var list = $dataScenario[file]; if (list) { $gameSwitches.setValue(20, true); console.log( "Scenario \u30B3\u30DE\u30F3\u30C9\u5B9F\u884C: ".concat(file) ); this.setupChild(list, this._eventId); return true; } return false; }; PluginManager.registerCommand( pluginName, "startDouseiSyusanMsg", function (args) { $gameSwitches.setValue(20, false); var actorId = parseInt(args.actorId); var manId = $gameVariables.value(55); var manParam = MAN_PARAMS[manId]; var man = $gameActors.actor(manId); var actorName = $gameActors.actor(actorId).nameJp(); var actor = $gameActors.actor(actorId); if (actor.friendship(manId) >= 100) { var text1 = "%1_同棲_出産_%2_02".format(actorName, man.nameJp()); if (this.runDouseiScenario(text1)) { $gameSwitches.setValue(20, true); return; } var text2 = "%1_同棲_出産_%2_02".format(actorName, manParam.type); if (this.runDouseiScenario(text2)) { $gameSwitches.setValue(20, true); return; } } var text3 = "%1_同棲_出産_%2_01".format(actorName, man.nameJp()); if (this.runDouseiScenario(text3)) { $gameSwitches.setValue(20, true); return; } var text4 = "%1_同棲_出産_%2_01".format(actorName, manParam.type); if (this.runDouseiScenario(text4)) { $gameSwitches.setValue(20, true); return; } } ); PluginManager.registerCommand( pluginName, "startDouseiMaxMsg", function (args) { var actorId = parseInt(args.actorId); var actor = $gameActors.actor(actorId); var actorName = actor.nameJp(); var manId = actor.dousei().manId(); var man = $gameActors.actor(manId); if (!man) { console.error(actorId + "の同棲相手がみつかりません"); return; } var text1 = "%1_同棲マックス会話_%2_01".format(actorName, man.nameJp()); if (this.runDouseiScenario(text1)) { return; } var manParam = MAN_PARAMS[manId]; var text2 = "%1_同棲マックス会話_%2_01".format(actorName, manParam.type); if (this.runDouseiScenario(text2)) { return; } console.error( "" .concat(actorName, "\u3068") .concat( man.nameJp(), "\u306E\u53CB\u597D\u5EA6\u30DE\u30C3\u30AF\u30B9\u30A4\u30D9\u30F3\u30C8\u304C\u5B58\u5728\u3057\u307E\u305B\u3093" ) ); } ); PluginManager.registerCommand( pluginName, "upDouseiMaxBonusAndRunScenario", function (args) { var actorId = parseInt(args.actorId); var actor = $gameActors.actor(actorId); var bonusType = actor.dousei().calcFriendshipMaxBonusType(); $gameParty.upFriendshipBonus(bonusType, 1); $gameVariables.setValue(40, friendshipBonusName(bonusType)); $gameVariables.setValue(39, $gameParty.friendshipBonusRate(bonusType)); var text1 = "同棲友好度MAXボーナス_01"; if (this.runDouseiScenario(text1)) { return; } } ); PluginManager.registerCommand( pluginName, "upDouseiSyusanFriendship", function (args) { var actorId = parseInt(args.actorId); var actor = $gameActors.actor(actorId); var manId = actor.dousei().manId(); actor.addFriendship(manId, 15, false); } ); PluginManager.registerCommand(pluginName, "useCondom", function (args) { var actorId = parseInt(args.actorId); var actor = $gameActors.actor(actorId); var b = args.b == true; actor.dousei().setUseCondom(b); if (!b) { actor.dousei().setSexOnly(); } }); PluginManager.registerCommand( pluginName, "startDouseiSexMsg", function (args) { $gameSwitches.setValue(20, false); $gameSwitches.setValue(52, false); var actorId = parseInt(args.actorId); var actor = $gameActors.actor(actorId); var manId = $gameVariables.value(55); var man = $gameActors.actor(manId); var manParam = MAN_PARAMS[manId]; var actorName = actor.nameJp(); if (actor.friendship(manId) >= 100) { var text1 = "%1_同棲覗き見_SEX_%2_02".format(actorName, man.nameJp()); if (this.runDouseiScenario(text1)) { $gameSwitches.setValue(52, true); return; } var text2 = "%1_同棲覗き見_SEX_%2_02".format(actorName, manParam.type); if (this.runDouseiScenario(text2)) { $gameSwitches.setValue(52, true); return; } } var text1_1 = "%1_同棲覗き見_SEX_%2_01".format(actorName, man.nameJp()); if (this.runDouseiScenario(text1_1)) { return; } var text1_2 = "%1_同棲覗き見_SEX_%2_01".format(actorName, manParam.type); if (this.runDouseiScenario(text1_2)) { return; } } ); function friendshipBonusName(type) { switch (type) { case FriendshipBonusType.atkFlame: return TextManager.atkFlame; case FriendshipBonusType.atkWater: return TextManager.atkWater; case FriendshipBonusType.atkWood: return TextManager.atkWood; case FriendshipBonusType.hpFlame: return TextManager.hpFlame; case FriendshipBonusType.hpWater: return TextManager.hpWater; case FriendshipBonusType.hpWood: return TextManager.hpWood; default: console.error("不正なボーナスタイプです:" + type); return ""; } } var DOUSEI_CHAR_VAR; (function (DOUSEI_CHAR_VAR) { DOUSEI_CHAR_VAR[(DOUSEI_CHAR_VAR["sex"] = 1)] = "sex"; DOUSEI_CHAR_VAR[(DOUSEI_CHAR_VAR["anal"] = 1)] = "anal"; DOUSEI_CHAR_VAR[(DOUSEI_CHAR_VAR["cri"] = 1)] = "cri"; DOUSEI_CHAR_VAR[(DOUSEI_CHAR_VAR["chichi"] = 2)] = "chichi"; DOUSEI_CHAR_VAR[(DOUSEI_CHAR_VAR["fela"] = 3)] = "fela"; DOUSEI_CHAR_VAR[(DOUSEI_CHAR_VAR["sm"] = 4)] = "sm"; DOUSEI_CHAR_VAR[(DOUSEI_CHAR_VAR["kijoui"] = 5)] = "kijoui"; DOUSEI_CHAR_VAR[(DOUSEI_CHAR_VAR["gyaku"] = 6)] = "gyaku"; DOUSEI_CHAR_VAR[(DOUSEI_CHAR_VAR["back"] = 7)] = "back"; DOUSEI_CHAR_VAR[(DOUSEI_CHAR_VAR["kunni"] = 8)] = "kunni"; })((DOUSEI_CHAR_VAR = Nore.DOUSEI_CHAR_VAR || (Nore.DOUSEI_CHAR_VAR = {}))); Nore.NONOKA_DOUSEI_VAR = 31; Nore.SENRI_DOUSEI_VAR = 32; Nore.MARINA_DOUSEI_VAR = 33; Nore.SAKI_DOUSEI_VAR = 34; Nore.KOKONA_DOUSEI_VAR = 35; Nore.KANAMI_DOUSEI_VAR = 36; Nore.MIYU_DOUSEI_VAR = 37; Nore.NONOKA_DOUSEI_SW = 91; Nore.SENRI_DOUSEI_SW = 92; Nore.MARINA_DOUSEI_SW = 93; Nore.SAKI_DOUSEI_SW = 94; Nore.KOKONA_DOUSEI_SW = 95; Nore.KANAMI_DOUSEI_SW = 96; Nore.MIYU_DOUSEI_SW = 97; var Scene_Dousei = /** @class */ (function (_super) { __extends(Scene_Dousei, _super); function Scene_Dousei() { return (_super !== null && _super.apply(this, arguments)) || this; } Scene_Dousei.prototype.create = function () { _super.prototype.create.call(this); this.createDouseiWindow(); this.createMsgWindow(); this.createConfirmWindow(); }; Scene_Dousei.prototype.createDouseiWindow = function () { var dousei = this.actor().dousei(); if (this.actor().countSyusan() == 0 && $gameSwitches.value(228)) { dousei.useRubber(); } this._lastMan = dousei.manId(); this._douseiWindow = new Window_Dousei(dousei.manId()); this.addChild(this._douseiWindow); this._douseiWindow.activate(); this._douseiWindow.select(0); this._douseiWindow.setHandler("ok", this.onOk.bind(this)); this._douseiWindow.setHandler("cancel", this.onCancel.bind(this)); this._douseiWindow.setHandler("change", this.onChange.bind(this)); this._manDescWindow = new Window_DouseiManDesc(); this.addChild(this._manDescWindow); this._manWindow = new Window_DouseiMan(this.actor()); this.addChild(this._manWindow); this._manWindow.select(0); this._manWindow.setHandler("ok", this.onManOk.bind(this)); this._manWindow.setHandler("cancel", this.onManCancel.bind(this)); }; Scene_Dousei.prototype.createMsgWindow = function () { this._msgWindow = new Nore.Window_Msg(); this._msgWindow.setTexts([TextManager.douseiNg1, TextManager.douseiNg2]); this.addChild(this._msgWindow); this._msgWindow.visible = false; this._msgWindow.setHandler("ok", this.onMsgOk.bind(this)); this._msgWindow.setHandler("cancel", this.onMsgOk.bind(this)); }; Scene_Dousei.prototype.createConfirmWindow = function () { this._confirmWindow = new Nore.Window_Confirm(700); this.addChild(this._confirmWindow); this._confirmWindow.setTexts([" ", " "]); this._confirmWindow.visible = false; this._confirmWindow.setHandler("ok", this.onConfirmOk.bind(this)); this._confirmWindow.setHandler("cancel", this.onConfirmCancel.bind(this)); }; Scene_Dousei.prototype.onMsgOk = function () { this._msgWindow.hide(); this._douseiWindow.activate(); }; Scene_Dousei.prototype.onOk = function () { if (this._douseiWindow.index() == 0) { if (this.actor().dousei().isDouseiNinshin()) { this.showMsgWindow(0); return; } this._manDescWindow.show(); this._manWindow.show(); this._manWindow.activate(); return; } if (this._douseiWindow.index() == 10) { this.decide(); return; } if (this._douseiWindow.index() <= 6) { if (!$gameSwitches.value(228)) { this.showMsgWindow(1); return; } var play_1 = this._douseiWindow.getPlay(this._douseiWindow.index()); play_1.changeEnable(); this._douseiWindow.refresh(); this._douseiWindow.activate(); return; } var play = this._douseiWindow.getOption(this._douseiWindow.index()); play.changeEnable(); this._douseiWindow.refresh(); this._douseiWindow.activate(); }; Scene_Dousei.prototype.showMsgWindow = function (msgType) { this._msgWindow.visible = true; if (msgType == 0) { this._msgWindow.setTexts([ TextManager.douseiNg1, TextManager.douseiNg2, ]); } else { this._msgWindow.setText(TextManager.douseiNg3); } SoundManager.playBuzzer(); this._msgWindow.activate(); }; Scene_Dousei.prototype.onCancel = function () { //this.popScene(); this.decide(); }; Scene_Dousei.prototype.decide = function () { var manId = this._douseiWindow.manId(); if (manId > 0) { var man = $gameActors.actor(manId); var alreadyId = this._manWindow.alreadyDouseiId(man); if (alreadyId > 0) { var name_1 = man.name(); var name2 = $gameActors.actor(alreadyId).name(); var name3 = this.actor().name(); var text1 = TextManager.douseiAlreadyDialog1.format(name_1, name2); var text2 = TextManager.douseiAlreadyDialog2.format(name3); this._confirmWindow.setTexts([text1, text2]); this._confirmWindow.show(); this._confirmWindow.select(0); } else { this.decideInternal(); } } else { this.decideInternal(); } }; Scene_Dousei.prototype.onConfirmOk = function () { this.decideInternal(); }; Scene_Dousei.prototype.onConfirmCancel = function () { this._confirmWindow.hide(); this._douseiWindow.activate(); }; Scene_Dousei.prototype.decideInternal = function () { var dousei = this.actor().dousei(); var manId = this._douseiWindow.manId(); if (manId > 0) { var man = $gameActors.actor(manId); var alreadyId = this._manWindow.alreadyDouseiId(man); if (alreadyId > 0) { $gameActors.actor(alreadyId).dousei().setMan(0); $gameActors.actor(alreadyId).dousei().stop(); } } if (this._douseiWindow.isDecideEnabled()) { dousei.setMan(manId); this.runDouseiTimeEvent(); } this.popScene(); $gameSystem.endNeko(); $gamePlayer.refresh(); }; Scene_Dousei.prototype.onWomanOk = function () { this._douseiWindow.activate(); }; Scene_Dousei.prototype.onManOk = function () { var actor = this._manWindow.selectedActor(); if (actor) { this._douseiWindow.setMan(actor.actorId()); } else { this._douseiWindow.setMan(0); } this._douseiWindow.activate(); }; Scene_Dousei.prototype.onManCancel = function () { this._douseiWindow.activate(); }; Scene_Dousei.prototype.onChange = function () { this._manWindow.hide(); this._manDescWindow.hide(); if (this._douseiWindow.index() == 0) { this._manDescWindow.show(); this._manWindow.show(); this._manWindow.selectedActor(); } }; Scene_Dousei.prototype.runDouseiTimeEvent = function () { var actorId = this.actor().actorId(); $slg.removeDouseiTimeGaugeEvent(actorId); var dousei = this.actor().dousei(); if (!dousei.isPlayEnabled(dousei.manId())) { dousei.stop(); return; } if (this._lastMan != dousei.manId()) { this.runDouseiStartEvent(); } else { dousei.run(); } }; Scene_Dousei.prototype.runDouseiStartEvent = function () { var dousei = this.actor().dousei(); var actorId = this.actor().actorId(); switch (actorId) { case 4: this.runDouseiStartEvent4(); dousei.stop(); break; case 8: this.runDouseiStartEvent8(); dousei.stop(); break; case 9: this.runDouseiStartEvent9(); dousei.stop(); break; case 10: this.runDouseiStartEvent10(); dousei.stop(); break; case 11: this.runDouseiStartEvent11(); dousei.stop(); break; case 13: this.runDouseiStartEvent13(); dousei.stop(); break; case 17: this.runDouseiStartEvent17(); dousei.stop(); break; default: dousei.run(); break; } p("runDouseiStartEvent:" + actorId); }; Scene_Dousei.prototype.runDouseiStartEvent4 = function () { $gameParty.addCommonEvent(560, -1); }; Scene_Dousei.prototype.runDouseiStartEvent8 = function () { $gameParty.addCommonEvent(650, -1); }; Scene_Dousei.prototype.runDouseiStartEvent9 = function () { $gameParty.addCommonEvent(530, -1); }; Scene_Dousei.prototype.runDouseiStartEvent10 = function () { $gameParty.addCommonEvent(500, -1); }; Scene_Dousei.prototype.runDouseiStartEvent11 = function () { $gameParty.addCommonEvent(470, -1); }; Scene_Dousei.prototype.runDouseiStartEvent13 = function () { $gameParty.addCommonEvent(590, -1); }; Scene_Dousei.prototype.runDouseiStartEvent17 = function () { $gameParty.addCommonEvent(620, -1); }; Scene_Dousei.prototype.createCancelButton = function () { this._cancelButton = new Sprite_Button2("cancel", true); this._cancelButton.x = Graphics.boxWidth - this._cancelButton.width - 26; this._cancelButton.y = 35; this.addWindow(this._cancelButton); }; return Scene_Dousei; })(Scene_MenuBase); Nore.Scene_Dousei = Scene_Dousei; var Window_Dousei = /** @class */ (function (_super) { __extends(Window_Dousei, _super); function Window_Dousei(manId) { var _this = this; var r = new Rectangle(100, DOUSEI_TOP_Y, 600, 724); _this = _super.call(this, r) || this; _this._manId = 0; _this._manId = manId; _this.contents.outlineWidth = 5; _this.refresh(); return _this; } Window_Dousei.prototype.maxItems = function () { return 11; }; Window_Dousei.prototype.itemRect = function (index) { var r = _super.prototype.itemRect.call(this, index); r.x += 120; r.y += 92 + index * 6; r.height += 1; r.width = 200; if (index > 0) { r.x += 92; r.y += 92; r.width = 110; } if (index > 6) { r.y += 54; } if (index == 10) { r.y += 25; r.width += 10; r.height += 6; } return r; }; Window_Dousei.prototype.itemHeight = function () { return 32; }; Window_Dousei.prototype.rowSpacing = function () { return 0; }; Window_Dousei.prototype.refresh = function () { _super.prototype.refresh.call(this); this.drawTitle(); this.drawName(); this.drawFriendship(); }; Window_Dousei.prototype.actor = function () { return $gameParty.menuActor(); }; Window_Dousei.prototype.drawFriendship = function () { this.contents.fontSize = 14; var textY = 124; this.drawText(TextManager.douseiFriendship, 32, textY, 200); var xx = 125; var yy = textY + 16; var hh = 8; if (this._manId == 0) { return; } var actor = this.actor(); var friendship = actor.friendship(this._manId); var max = actor.maxFriendship(this._manId); var ww = max * 2; // 200 this.contents.fillRect(xx, yy, 200 + 2, hh, "#000000"); this.contents.fillRect(xx + 1, yy + 1, ww, hh - 2, "#666666"); var color; if (friendship >= 100) { color = ColorManager.friendshipMaxColor(); } else { color = ColorManager.friendshipColor(); } this.contents.fillRect(xx + 1, yy + 1, friendship * 2, hh - 2, color); var friendshipLevel = actor.friendshipLevel(this._manId); var text = actor.getFriendshipLevelText(friendshipLevel); this.drawText(text, xx - 20, textY, 100); }; Window_Dousei.prototype.getSprite = function (x, y, w, h) { var baseTexture = Nore.getSystemBaseTexture("dousei"); var r = new Rectangle(x, y, w, h); var texture = new PIXI.Texture(baseTexture, r); var s = new PIXI.Sprite(texture); return s; }; Window_Dousei.prototype.drawTitle = function () { this.contents.fontSize = 24; var s = this.getSprite(0, 0, 521, 64); s.x = 38; s.y = 26; this._windowContentsSprite.addChild(s); this.drawText( TextManager.douseiTitile.format(this.actor().name()), 120, 24, 300, "center" ); this.drawIcon(this.actor().iconIndex(), 82, 24); this.contents.fontSize = 22; var rect2 = this.itemRect(0); var spriteOffset = ConfigManager.language == "jp" ? 0 : 192; this.drawText(TextManager.douseiMan, 32, rect2.y - 4, 200); { var s_1 = this.getSprite(spriteOffset, 64, 160, 32); s_1.x = 388; s_1.y = 100; this._windowContentsSprite.addChild(s_1); } //this.drawText('プレイジャンル', 350, rect2.y - 8, 200); if (this._manId > 0) { var upList = getManDouseiSkill( this._manId, this.actor().friendshipLevel(this._manId) ); for (var _i = 0, upList_1 = upList; _i < upList_1.length; _i++) { var type = upList_1[_i]; this.drawIconType(type, rect2.y + 33); } } this.contents.fontSize = 20; var rect3 = this.itemRect(1); { var s_2 = this.getSprite(spriteOffset, 96, 160, 32); s_2.x = 388; s_2.y = 198; this._windowContentsSprite.addChild(s_2); } { var s_3 = this.getSprite(spriteOffset, 128, 192, 32); s_3.x = 48; s_3.y = 198; this._windowContentsSprite.addChild(s_3); } //this.drawText('許可するプレイ', 10, rect3.y - 38, 200); //this.drawText('上昇パラメータ', 350, rect3.y - 38, 200); { var s_4 = this.getSprite(spriteOffset, 160, 192, 32); s_4.x = 48; s_4.y = 478; this._windowContentsSprite.addChild(s_4); } //this.drawText('追加オプション', 10, rect3.y + 233, 200); this.contents.fontSize = 20; var dousei = this.actor().dousei(); var index = 1; for (var _a = 0, _b = dousei.playList(); _a < _b.length; _a++) { var d = _b[_a]; this.drawPlay(index, d); index++; } for (var _c = 0, _d = dousei.optionList(); _c < _d.length; _c++) { var d = _d[_c]; this.drawPlay(index, d); index++; } }; Window_Dousei.prototype.drawIconType = function (type, y) { var interval = 35; var base = this.paramX(); switch (type) { case AvRequired.kiss: this.drawIcon(Icon.kiss, base + interval * 0, y); break; case AvRequired.chichi: this.drawIcon(Icon.chichi, base + interval * 1, y); break; case AvRequired.cri: this.drawIcon(Icon.cri, base + interval * 2, y); break; case AvRequired.manko: this.drawIcon(Icon.manko, base + interval * 3, y); break; case AvRequired.anal: this.drawIcon(Icon.anal, base + interval * 4, y); break; case AvRequired.sm: this.drawIcon(Icon.sm, base + interval * 5, y); break; } }; Window_Dousei.prototype.isAutoSyusanEnabled = function () { return $gameSwitches.value(282); }; Window_Dousei.prototype.drawPlay = function (index, play) { var rect = this.itemRect(index); var yy = rect.y - 2; if (play.isOption()) { if (play.itemId() == 11) { if (!$gameSwitches.value(1038)) { return; } } if (play.itemId() == 12) { if (!$slg.facilityInfo().hasFacility(57)) { return; } } if (play.itemId() == 13) { if (!this.isAutoSyusanEnabled()) { return; } } } else if (this._manId > 0) { if (this.isManEnabledPlay(this._manId, play)) { this.changePaintOpacity(true); } else { return; this.changePaintOpacity(false); } } else { return; } this.contents.fontSize = 20; var offsetX = 0; if (play.iconIndex() > 0) { this.drawIcon(play.iconIndex(), 25, yy); offsetX = 12; } this.contents.outlineColor = "#050081"; this.drawText(play.name(), 45 + offsetX, yy, 150); this.contents.outlineColor = "#000000"; if (play.isEnabled()) { this.drawText("OK", rect.x + 60, yy, 100); } else { this.drawText("NG", rect.x + 10, yy, 100); } this.changePaintOpacity(play.isEnabled()); if (play.isOption()) { this.drawDescription(yy, play); } else { this.drawUpParam(yy, play); } this.changePaintOpacity(true); }; Window_Dousei.prototype.isManEnabledPlay = function (manId, play) { var list = getManDouseiSkill( manId, this.actor().friendshipLevel(this._manId) ); return list.contains(play.bodyType()); }; Window_Dousei.prototype.drawDescription = function (yy, play) { if (play.itemId() == 11) { if (Nore.isTaikenban()) { this.contents.fontSize = 14; this.drawText(TextManager.douseiRubber1, 350, yy - 9, 250); this.drawText(TextManager.douseiRubberTaikenban2, 350, yy + 9, 250); } else { if (this.actor().countSyusan() == 0) { this.drawText(TextManager.douseiRubber2, 350, yy, 250); } else { this.drawText(TextManager.douseiRubber1, 350, yy, 250); } } } if (play.itemId() == 12) { this.contents.fontSize = 14; this.drawText(TextManager.douseiNinshinSkip, 350, yy - 9, 250); this.drawText(TextManager.douseiNinshinSkip2, 350, yy + 9, 250); } if (play.itemId() == 13) { this.contents.fontSize = 14; this.drawText(TextManager.douseiAutoSyusan, 350, yy - 9, 250); this.drawText(TextManager.douseiAutoSyusan2, 350, yy + 9, 250); } //this.drawText(play.description(), 350, yy, 250); }; Window_Dousei.prototype.drawUpParam = function (yy, play) { if (this.isTaikenbanNg(play)) { this.contents.fontSize = 17; this.drawText(TextManager.douseiTaikenbanNg, 350, yy, 200); return; } var list = [ AvRequired.kiss, AvRequired.chichi, AvRequired.cri, AvRequired.manko, AvRequired.anal, AvRequired.sm, ]; var index = 0; var baseX = this.paramX() + 18; var interval = 32 - 3; this.contents.fontSize = 15; for (var _i = 0, list_1 = list; _i < list_1.length; _i++) { var type = list_1[_i]; var upValue = play.upValue(type); if (upValue > 0) { var icon = getAvRequiredIcon(type); this.drawIcon(icon, baseX + interval * index, yy); var param = this.actor().eroParam10(type); this.drawText(param, 300, yy + 1, 58, "right"); } index++; } }; Window_Dousei.prototype.isTaikenbanNg = function (play) { if (!Nore.isTaikenban()) { return false; } if (play.bodyType() == BodyType.manko) { return false; } return true; }; Window_Dousei.prototype.paramX = function () { return 350; }; Window_Dousei.prototype.drawName = function () {}; Window_Dousei.prototype.drawItem = function (index) { this.contents.fontSize = 20; var rect = this.itemRect(index); var yy = rect.y - 2; if (index == 0) { if (this._manId > 0) { var actor = $gameActors.actor(this._manId); this.drawIcon(actor.iconIndex(), rect.x + 2, yy + 1); this.drawText(actor.name(), rect.x + 42, yy, rect.width); } } if (index == 10) { var enabled = this.isDecideEnabled(); this.changePaintOpacity(enabled); this.drawText("OK", rect.x, yy + 4, rect.width, "center"); this.changePaintOpacity(true); if (!enabled) { if (this._manId > 0) { this.drawText( TextManager.douseiDecide, rect.x + 130, yy + 4, 150, "left" ); } } } this.changePaintOpacity(true); }; Window_Dousei.prototype.isManOk = function () { return this._manId > 0; }; Window_Dousei.prototype.isPlayOk = function () { var dousei = this.actor().dousei(); return dousei.isPlayEnabled(this._manId); }; Window_Dousei.prototype.getPlay = function (index) { if (index < 1) { return null; } var dousei = this.actor().dousei(); return dousei.playList()[index - 1]; }; Window_Dousei.prototype.getOption = function (index) { if (index < 7) { return null; } var dousei = this.actor().dousei(); return dousei.optionList()[index - 7]; }; Window_Dousei.prototype.setMan = function (actorId) { this._manId = actorId; this.refresh(); }; Window_Dousei.prototype.manId = function () { return this._manId; }; Window_Dousei.prototype.isCurrentItemEnabled = function () { if (this.index() == 7) { if (this.actor().countSyusan() == 0) { return false; } //return this.isManOk(); } if (this.index() == 10) { return this.isDecideEnabled(); } return true; }; Window_Dousei.prototype.isDecideEnabled = function () { if (this._manId == 0) { return true; } return this.isManOk() && this.isPlayOk(); }; return Window_Dousei; })(Window_Selectable); var Window_DouseiManDesc = /** @class */ (function (_super) { __extends(Window_DouseiManDesc, _super); function Window_DouseiManDesc() { var _this = this; var r = new Rectangle(710, DOUSEI_TOP_Y, 460, 110); _this = _super.call(this, r) || this; _this.refresh(); return _this; } Window_DouseiManDesc.prototype.refresh = function () { this.drawTitle(); }; Window_DouseiManDesc.prototype.drawTitle = function () { this.changePaintOpacity(true); this.contents.fontSize = 15; this.drawText(TextManager.douseiManTitle1, 10, 0, 410, "center"); this.drawText(TextManager.douseiManTitle2, 10, 18, 410, "center"); var y = this.itemHeight() + 12; this.contents.fontSize = 18; this.drawText(TextManager.douseiName, 40, y, 200); this.drawText(TextManager.douseiJenre, 170, y, 200); }; return Window_DouseiManDesc; })(Window_Base); var Window_DouseiMan = /** @class */ (function (_super) { __extends(Window_DouseiMan, _super); function Window_DouseiMan(actor) { var _this = this; var r = new Rectangle(710, DOUSEI_TOP_Y + 110, 460, 614); _this = _super.call(this, r) || this; _this._actor = actor; _this.makeData(); _this.refresh(); return _this; } Window_DouseiMan.prototype.refresh = function () { _super.prototype.refresh.call(this); }; Window_DouseiMan.prototype.makeData = function () { this._itemList = []; for (var _i = 0, _a = $slg.manList(); _i < _a.length; _i++) { var man = _a[_i]; if (this.isInclude(man)) { this._itemList.push(man); } } this._itemList.push(null); }; Window_DouseiMan.prototype.isInclude = function (man) { if (this._actor.actorId() == 8) { switch (man.actorId()) { case 5: case 18: return true; default: return false; } } if (this._actor.actorId() == 10) { switch (man.actorId()) { case 3: case 26: return true; default: return false; } } if (this._actor.actorId() == 11) { switch (man.actorId()) { case 22: case 48: case 49: return true; default: return false; } } return true; }; Window_DouseiMan.prototype.maxItems = function () { if (!this._itemList) { return 0; } return this._itemList.length; }; /*itemRect(index: number): Rectangle { const rect = super.itemRect(index); rect.y += this.itemHeight() * 2; return rect; }*/ Window_DouseiMan.prototype.drawItem = function (index) { this.contents.fontSize = 20; var rect = this.itemRect(index); var man = this._itemList[index]; if (!man) { return; } this.changePaintOpacity(this.isEnabled(man)); this.drawIcon(man.iconIndex(), rect.x + 4, rect.y + 2); this.drawText(man.name(), rect.x + 42, rect.y - 4, rect.width); this.drawFriendship(man, rect); var alreadyActorId = this.alreadyDouseiId(man); if (alreadyActorId > 0) { this.contents.fontSize = 16; var actor = $gameActors.actor(alreadyActorId); var name_2 = actor.name(); if (actor.dousei().isDouseiNinshin()) { this.drawText( TextManager.douseiNinshinMan.format(name_2), rect.x + 198, rect.y, 220 ); } else { this.drawText( TextManager.douseiAlready.format(name_2), rect.x + 198, rect.y, 220 ); } return; } var upList = getManDouseiSkill( man.actorId(), this._actor.friendshipLevel(man.actorId()) ); for (var _i = 0, upList_2 = upList; _i < upList_2.length; _i++) { var type = upList_2[_i]; this.drawIconType(type, rect.y + 2); } }; Window_DouseiMan.prototype.drawFriendship = function (man, rect) { var xx = rect.x + 42 + 20; var yy = rect.y + 28; var hh = 5; var friendship = this._actor.friendship(man.actorId()); var ww = 100; this.contents.fillRect(xx, yy, ww + 2, hh, "#000000"); var maxFriendship = this._actor.maxFriendship(man.actorId()); this.contents.fillRect( xx + 1, yy + 1, (maxFriendship * ww) / 100, hh - 2, "#666666" ); var color; if (friendship >= 100) { color = ColorManager.friendshipMaxColor(); } else { color = ColorManager.friendshipColor(); } this.contents.fillRect( xx + 1, yy + 1, (friendship * ww) / 100, hh - 2, color ); var friendshipLevel = this._actor.friendshipLevel(man.actorId()); var text = this._actor.getFriendshipLevelText(friendshipLevel); this.contents.fontSize = 10; this.drawText(text, xx - 15, yy - 15, 100); }; Window_DouseiMan.prototype.drawIconType = function (type, y) { var interval = 35; var base = 170; switch (type) { case AvRequired.kiss: this.drawIcon(Icon.kiss, base + interval * 1, y); break; case AvRequired.chichi: this.drawIcon(Icon.chichi, base + interval * 2, y); break; case AvRequired.cri: this.drawIcon(Icon.cri, base + interval * 3, y); break; case AvRequired.manko: this.drawIcon(Icon.manko, base + interval * 4, y); break; case AvRequired.anal: this.drawIcon(Icon.anal, base + interval * 5, y); break; case AvRequired.sm: this.drawIcon(Icon.sm, base + interval * 6, y); break; } }; Window_DouseiMan.prototype.selectedActor = function () { return this._itemList[this.index()]; }; Window_DouseiMan.prototype.isEnabled = function (man) { if (!man) { return true; } if (this.isNonokaFirst(man)) { return false; } if (this.isMarinaFirst(man)) { return false; } if (this.isDouseiSyusan(man)) { return false; } return this._actor.canDousei(man.actorId()); }; Window_DouseiMan.prototype.isDouseiSyusan = function (man) { var actorIds = $gameParty.getActorIdList(); for (var _i = 0, actorIds_1 = actorIds; _i < actorIds_1.length; _i++) { var id = actorIds_1[_i]; var actor = $gameActors.actor(id); if (actor.dousei().isDouseiNinshin()) { if (actor.dousei().manId() == man.actorId()) { return true; } } } return false; }; Window_DouseiMan.prototype.isNonokaFirst = function (man) { if (this._actor.actorId() != 9) { return false; } if ($gameSwitches.value(303)) { return false; } if (man.actorId() == 19) { return false; } return true; }; Window_DouseiMan.prototype.isMarinaFirst = function (man) { if (this._actor.actorId() != 4) { return false; } if ($gameSwitches.value(307)) { return false; } if (man.actorId() == 20) { return false; } return true; }; Window_DouseiMan.prototype.alreadyDouseiId = function (man) { if (!man) { return 0; } for (var _i = 0, _a = $gameParty.getActorIdList(); _i < _a.length; _i++) { var actorId = _a[_i]; if (actorId == this._actor.actorId()) { continue; } var actor = $gameActors.actor(actorId); if (actor.dousei().manId() == man.actorId()) { return actor.actorId(); } } return 0; }; Window_DouseiMan.prototype.isCurrentItemEnabled = function () { return this.isEnabled(this.selectedActor()); }; Window_DouseiMan.prototype.itemHeight = function () { return 39; }; return Window_DouseiMan; })(Window_Selectable); })(Nore || (Nore = {})); var DouseiUpResult = /** @class */ (function () { function DouseiUpResult( actorId, manActorId, t, up, acme, useCondom, useDrag ) { this._actorId = actorId; this._manActorId = manActorId; this.type = t; this.up = up; this._acme = acme; this._useCondom = useCondom; this._useDrag = useDrag; } DouseiUpResult.prototype.iconIndex = function () { return getAvRequiredIcon(this.type); }; DouseiUpResult.prototype.execute = function () { var actor = $gameActors.actor(this._actorId); actor.upEroParam(this.type, this.up); actor.upEro(toEroType(this.type), 1); actor.upEro(EroType.acme, this._acme); var n = this.calcNinshinDamage(); if (n <= 0) { return false; } var canNinshin = false; if (this.type == AvRequired.manko) { canNinshin = true; } if (this._useCondom) { canNinshin = false; } if (this._useDrag) { n *= 5; } var isMax = actor.dousei().friendshipLevel() == FriendshipLevel.S; var isNinshin = actor.ninshinDamage( n, this._manActorId, canNinshin, true, isMax ); if (isNinshin) { actor.dousei().setDouseiNinshin(true); this.reserveNinshinCommonEvent(); return true; } return false; }; DouseiUpResult.prototype.reserveNinshinCommonEvent = function () { switch (this._actorId) { case 4: $gameParty.addCommonEvent(565, -1); break; case 8: $gameParty.addCommonEvent(655, -1); break; case 9: $gameParty.addCommonEvent(535, -1); break; case 10: $gameParty.addCommonEvent(505, -1); break; case 11: $gameParty.addCommonEvent(475, -1); break; case 13: $gameParty.addCommonEvent(595, -1); break; case 17: $gameParty.addCommonEvent(625, -1); break; } }; DouseiUpResult.prototype.calcNinshinDamage = function () { var baseDamage = 3; if (this.type == AvRequired.manko) { baseDamage++; } baseDamage *= this.bonusNinshinRate(); return Math.round(baseDamage); }; DouseiUpResult.prototype.bonusNinshinRate = function () { var man = new Man(this._manActorId); return 1 + man.bonusNinshinRate(); }; return DouseiUpResult; })(); var DouseiPlay = /** @class */ (function () { function DouseiPlay(itemId, option) { if (option === void 0) { option = false; } this._itemId = itemId; this._option = option; if (!option) { this._enabled = true; } else { this._enabled = false; } this._bodyType = this.calcBodyType(); } DouseiPlay.prototype.calcBodyType = function () { var item = this.item(); if (!item) { return; } if (item.meta[AvRequired.kiss]) { return BodyType.kiss; } if (item.meta[AvRequired.chichi]) { return BodyType.chichi; } if (item.meta[AvRequired.cri]) { return BodyType.cri; } if (item.meta[AvRequired.manko]) { return BodyType.manko; } if (item.meta[AvRequired.anal]) { return BodyType.anal; } if (item.meta[AvRequired.sm]) { return BodyType.sm; } return null; }; DouseiPlay.prototype.bodyType = function () { if (!this._bodyType) { this._bodyType = this.calcBodyType(); } return this._bodyType; }; DouseiPlay.prototype.item = function () { return $dataItems[this._itemId]; }; DouseiPlay.prototype.name = function () { switch (ConfigManager.language) { case "en": if (this.item().meta["nameEn"]) { return this.item().meta["nameEn"]; } break; case "ch": case "jp": break; } return this.item().name; }; DouseiPlay.prototype.iconIndex = function () { return this.item().iconIndex; }; DouseiPlay.prototype.isEnabled = function () { if (Nore.isTaikenban()) { if (this._option) { if (this._itemId == 11) { if (!$gameSwitches.value(1038)) { return false; } return true; } } if (this._bodyType != BodyType.manko) { return false; } } return this._enabled; }; DouseiPlay.prototype.enable = function () { this._enabled = true; }; DouseiPlay.prototype.disable = function () { this._enabled = false; }; DouseiPlay.prototype.changeEnable = function () { this._enabled = !this._enabled; }; DouseiPlay.prototype.upValue = function (type) { if (!this.item()) { return 0; } if (this.item().meta[type]) { return parseInt(this.item().meta[type]); } else { return 0; } }; DouseiPlay.prototype.itemId = function () { return this._itemId; }; DouseiPlay.prototype.isOption = function () { return this._option; }; DouseiPlay.prototype.description = function () { return this.item().description; }; DouseiPlay.prototype.upStatus = function ( actorId, manActorId, useCondom, useDrag ) { var result = []; var actor = $gameActors.actor(actorId); var list = [ AvRequired.kiss, AvRequired.chichi, AvRequired.cri, AvRequired.manko, AvRequired.anal, AvRequired.sm, ]; for (var _i = 0, list_2 = list; _i < list_2.length; _i++) { var type = list_2[_i]; var up = this.upValue(type); if (up > 0) { var acme = this.acmeCount(type, actor); result.push( new DouseiUpResult( actorId, manActorId, type, up, acme, useCondom, useDrag ) ); } } return result; }; DouseiPlay.prototype.acmeCount = function (type, actor) { switch (type) { case AvRequired.chichi: return this.acmeCountChichi(actor); case AvRequired.kiss: return 0; case AvRequired.cri: return this.acmeCountCri(actor); case AvRequired.manko: return this.acmeCountManko(actor); case AvRequired.anal: return this.acmeCountAnal(actor); case AvRequired.sm: return this.acmeCountSm(actor); } return 0; }; DouseiPlay.prototype.acmeCountChichi = function (actor) { var value = actor.eroParam(AvRequired.chichi); if (value <= 50) { return 0; } if (value >= 300) { return 2; } if (value >= 100) { return 1; } if (Math.randomInt(2) == 0) { return 1; } return 0; }; DouseiPlay.prototype.acmeCountCri = function (actor) { var value = actor.eroParam(AvRequired.cri); if (value <= 50) { return 1; } if (value >= 300) { return 4; } if (value >= 100) { return 3; } if (Math.randomInt(2) == 0) { return 3; } return 2; }; DouseiPlay.prototype.acmeCountManko = function (actor) { var value = actor.eroParam(AvRequired.manko); if (value <= 50) { if (Math.randomInt(2) == 0) { return 1; } else { return 0; } } if (value >= 300) { return 3; } if (value >= 100) { return 2; } if (Math.randomInt(2) == 0) { return 2; } return 1; }; DouseiPlay.prototype.acmeCountAnal = function (actor) { var value = actor.eroParam(AvRequired.anal); if (value <= 100) { return 0; } if (value >= 300) { return 2; } if (value >= 100) { return 1; } if (Math.randomInt(2) == 0) { return 1; } return 0; }; DouseiPlay.prototype.acmeCountSm = function (actor) { var value = actor.eroParam(AvRequired.sm); if (value <= 100) { return 0; } if (value >= 300) { return 2; } if (value >= 100) { return 1; } if (Math.randomInt(2) == 0) { return 1; } return 0; }; DouseiPlay.prototype.douseiVar = function () { var item = this.item(); if (!item) { return 0; } if (item.meta[AvRequired.kiss]) { return Nore.DOUSEI_CHAR_VAR.fela; } if (item.meta[AvRequired.anal]) { return Nore.DOUSEI_CHAR_VAR.anal; } if (item.meta[AvRequired.manko]) { return Nore.DOUSEI_CHAR_VAR.sex; } if (item.meta[AvRequired.chichi]) { return Nore.DOUSEI_CHAR_VAR.chichi; } if (item.meta[AvRequired.cri]) { return Nore.DOUSEI_CHAR_VAR.cri; } if (item.meta[AvRequired.sm]) { return Nore.DOUSEI_CHAR_VAR.sm; } return 0; }; return DouseiPlay; })(); var DouseiPlayId; (function (DouseiPlayId) { DouseiPlayId[(DouseiPlayId["fela"] = 2)] = "fela"; DouseiPlayId[(DouseiPlayId["sex"] = 3)] = "sex"; DouseiPlayId[(DouseiPlayId["anal"] = 4)] = "anal"; DouseiPlayId[(DouseiPlayId["chichi"] = 5)] = "chichi"; DouseiPlayId[(DouseiPlayId["kunni"] = 6)] = "kunni"; DouseiPlayId[(DouseiPlayId["sm"] = 7)] = "sm"; DouseiPlayId[(DouseiPlayId["rubber"] = 11)] = "rubber"; DouseiPlayId[(DouseiPlayId["drag"] = 12)] = "drag"; DouseiPlayId[(DouseiPlayId["skipSyusan"] = 13)] = "skipSyusan"; DouseiPlayId[(DouseiPlayId["skipBote"] = 12)] = "skipBote"; DouseiPlayId[(DouseiPlayId["empty"] = -1)] = "empty"; })(DouseiPlayId || (DouseiPlayId = {})); var DouseiPlayHistory = /** @class */ (function () { function DouseiPlayHistory(manId) { this._manId = manId; this._playCountMap = {}; } DouseiPlayHistory.prototype.up = function (playId) { this._playCountMap[playId] = this._playCountMap[playId] || 0; this._playCountMap[playId] = this._playCountMap[playId] + 1; }; DouseiPlayHistory.prototype.count = function (playId) { this._playCountMap[playId] = this._playCountMap[playId] || 0; return this._playCountMap[playId]; }; return DouseiPlayHistory; })(); var Dousei = /** @class */ (function () { function Dousei(actorId) { this._manList = []; this._lastGainGold = 0; this._nakadashi = 0; this._douseiNishin = false; this._actorId = actorId; this._count = 0; this._day = 0; this._manId = 0; this.createPlayList(); } Dousei.prototype.resetNakadashi = function () { this._nakadashi = 0; }; Dousei.prototype.calcFriendshipMaxBonusType = function () { if (this._actorId == 8) { if (this._manId == 18) { // ヨシオとセンリ return FriendshipBonusType.atkFlame; } } if (this._manId == 20) { // タロウ return FriendshipBonusType.atkFlame; } var manParam = MAN_PARAMS[this._manId]; if (!manParam) { console.error(this._manId); return; } switch (manParam.type) { case "クズ": return FriendshipBonusType.hpFlame; case "丁寧": return FriendshipBonusType.hpWater; case "じじい": return FriendshipBonusType.hpWood; case "外人": return FriendshipBonusType.atkWood; case "子供": return FriendshipBonusType.atkWater; default: console.error("不正なタイプです:" + manParam.type); return FriendshipBonusType.hpFlame; } }; Dousei.prototype.isCondom = function () { for (var _i = 0, _a = this._optionList; _i < _a.length; _i++) { var o = _a[_i]; if (o.itemId() == 11) { return o.isEnabled(); } } return false; }; Dousei.prototype.setUseCondom = function (b) { for (var _i = 0, _a = this._optionList; _i < _a.length; _i++) { var o = _a[_i]; if (o.itemId() == 11) { if (b) { o.enable(); } else { o.disable(); } return; } } }; Dousei.prototype.setSexOnly = function () { for (var _i = 0, _a = this._playList; _i < _a.length; _i++) { var o = _a[_i]; if (o.itemId() == 3) { o.enable(); } else { o.disable(); } } }; Dousei.prototype.isDrag = function () { return false; }; Dousei.prototype.isSkipBoteEvent = function () { for (var _i = 0, _a = this._optionList; _i < _a.length; _i++) { var o = _a[_i]; if (o.itemId() == 12) { return o.isEnabled(); } } return false; }; Dousei.prototype.addHistory = function (manId, playId) { this.history(manId).up(playId); if (playId == DouseiPlayId.sex) { if (!this.isCondom()) { this._nakadashi++; } } }; Dousei.prototype.history = function (manId) { this._historyMap = this._historyMap || {}; if (!this._historyMap[manId]) { this._historyMap[manId] = new DouseiPlayHistory(manId); } return this._historyMap[manId]; }; Dousei.prototype.makeItemList = function () { var candidates = []; var skillList = getManDouseiSkill( this._manId, this.actor().friendshipLevel(this._manId) ); for (var _i = 0, _a = this._playList; _i < _a.length; _i++) { var play = _a[_i]; if (!skillList.contains(play.bodyType())) { continue; } if (play.isEnabled()) { candidates.push(play.itemId()); } } if (candidates.length == 0) { return []; } var result = Nore.shuffle(candidates); var remain = 8 - result.length; var shuffle2 = Nore.shuffle(candidates); for (var i = 0; i < remain; i++) { if (shuffle2.length == 0) { shuffle2 = Nore.shuffle(candidates); } result.push(shuffle2.shift()); } return result; }; Dousei.prototype.isPlayEnabled = function (manId) { if (manId == 0) { return false; } for (var _i = 0, _a = this._playList; _i < _a.length; _i++) { var play = _a[_i]; if (this.isManEnabledPlay(manId || this._manId, play)) { if (play.isEnabled()) { return true; } } } return false; }; Dousei.prototype.isManEnabledPlay = function (manId, play) { var list = getManDouseiSkill(manId, this.actor().friendshipLevel(manId)); return list.contains(play.bodyType()); }; Dousei.prototype.isHpOk = function () { return this.actor().hp >= 1; }; Dousei.prototype.createPlayList = function () { this._playList = []; this._playList.push(new DouseiPlay(DouseiPlayId.fela)); this._playList.push(new DouseiPlay(DouseiPlayId.chichi)); this._playList.push(new DouseiPlay(DouseiPlayId.kunni)); this._playList.push(new DouseiPlay(DouseiPlayId.sex)); this._playList.push(new DouseiPlay(DouseiPlayId.anal)); this._playList.push(new DouseiPlay(DouseiPlayId.sm)); this._optionList = []; this._optionList.push(new DouseiPlay(DouseiPlayId.rubber, true)); this._optionList.push(new DouseiPlay(DouseiPlayId.skipBote, true)); this._optionList.push(new DouseiPlay(DouseiPlayId.skipSyusan, true)); }; Dousei.prototype.useRubber = function () { for (var _i = 0, _a = this._optionList; _i < _a.length; _i++) { var o = _a[_i]; if (o.itemId() === DouseiPlayId.rubber) { o.enable(); } } }; Dousei.prototype.actor = function () { return $gameActors.actor(this._actorId); }; Dousei.prototype.actorId = function () { return this._actorId; }; Dousei.prototype.count = function () { return this._count; }; Dousei.prototype.day = function () { return this._day; }; Dousei.prototype.addCount = function (count) { this._day++; this._count += count; }; Dousei.prototype.name = function () { if (!this._manId) { return "同棲可能"; } var manName = $gameActors.actor(this._manId).name(); return manName + "と同棲"; }; Dousei.prototype.addMan = function (actorId) { if (this._manList.contains(actorId)) { return; } this._manList.push(actorId); }; Dousei.prototype.playList = function () { return this._playList; }; Dousei.prototype.optionList = function () { return this._optionList; }; Dousei.prototype.setMan = function (manId) { if (this._manId == manId) { return; } this._manId = manId; this.updateDouseiSwitch(); this.resetNakadashi(); }; Dousei.prototype.updateDouseiSwitch = function () { var sw = this.douseiSwitchId(); var on = this._manId > 0; $gameSwitches.setValue(sw, on); $gameVariables.setValue(this.actorDouseiVar(), 0); }; Dousei.prototype.douseiSwitchId = function () { switch (this._actorId) { case 10: return Nore.KANAMI_DOUSEI_SW; case 11: return Nore.MIYU_DOUSEI_SW; case 8: return Nore.SENRI_DOUSEI_SW; case 9: return Nore.NONOKA_DOUSEI_SW; case 4: return Nore.MARINA_DOUSEI_SW; case 13: return Nore.SAKI_DOUSEI_SW; case 17: return Nore.KOKONA_DOUSEI_SW; } }; Dousei.prototype.manId = function () { return this._manId; }; Dousei.prototype.man = function () { if (this._manId == 0) { return null; } return $gameActors.actor(this._manId); }; Dousei.prototype.manName = function () { if (this._manId > 0) { return $gameActors.actor(this._manId).name(); } else { return ""; } }; Dousei.prototype.isEmpty = function () { return this._manId == 0; }; Dousei.prototype.setCurrentPlay = function (itemId) { this._nextUpInfo = []; this._playId = itemId; this._dirty = true; var play = this.currentPlayItem(); this._nextUpInfo = play.upStatus( this._actorId, this._manId, this.isCondom(), this.isDrag() ); this.setDouseiValue(play.douseiVar()); }; Dousei.prototype.setDouseiValue = function (value) { var actorVar = this.actorDouseiVar(); if (actorVar > 0) { $gameVariables.setValue(actorVar, value); } }; Dousei.prototype.currentDouseiValue = function () { var actorVar = this.actorDouseiVar(); if (actorVar > 0) { return $gameVariables.value(actorVar); } return -1; }; Dousei.prototype.actorDouseiVar = function () { switch (this._actorId) { case 10: return Nore.KANAMI_DOUSEI_VAR; case 11: return Nore.MIYU_DOUSEI_VAR; case 8: return Nore.SENRI_DOUSEI_VAR; case 9: return Nore.NONOKA_DOUSEI_VAR; case 4: return Nore.MARINA_DOUSEI_VAR; case 13: return Nore.SAKI_DOUSEI_VAR; case 17: return Nore.KOKONA_DOUSEI_VAR; } return -1; }; Dousei.prototype.douseiUpFriendship = function () { if ($slg.facilityInfo().hasFacility(61)) { return 5; } if ($slg.facilityInfo().hasFacility(60)) { return 2; } return 1; }; Dousei.prototype.upCurrentPlay = function () { if (this._nextUpInfo) { var isMax = this.actor().addFriendship( this._manId, this.douseiUpFriendship(), true ); this.addHistory(this._manId, this._playId); if (isMax) { $gameParty.addCommonEvent(this.douseiMaxCommonId(), -1); } for (var _i = 0, _a = this._nextUpInfo; _i < _a.length; _i++) { var result = _a[_i]; var isNinshin = result.execute(); if (isNinshin) { this._active = false; } } if ($slg.facilityInfo().findFacility(75)) { var gold = 2; if ($slg.facilityInfo().findFacility(76)) { gold += 2; } this._lastGainGold = gold; $gameParty.gainGold(gold); } } }; Dousei.prototype.douseiMaxCommonId = function () { switch (this._actorId) { case 8: return 701; case 9: return 703; case 4: return 705; case 13: return 707; case 10: return 709; case 11: return 711; case 17: return 713; default: console.error("友好度MAXイベントがみつかりません:" + this._actorId); return -1; } }; Dousei.prototype.lastGainGold = function () { return this._lastGainGold; }; Dousei.prototype.clearLastGainGold = function () { this._lastGainGold = 0; }; Dousei.prototype.nextUpInfo = function () { return this._nextUpInfo; }; Dousei.prototype.isDirty = function () { return this._dirty; }; Dousei.prototype.clearDirty = function () { this._dirty = false; }; Dousei.prototype.currentPlayItem = function () { if (this.isDouseiPeeping()) { return new DouseiPlay(DouseiPlayId.sex); } if (this._playId > 0) { for (var _i = 0, _a = this._playList; _i < _a.length; _i++) { var play = _a[_i]; if (play.itemId() == this._playId) { return play; } } return new DouseiPlay(DouseiPlayId.empty); } else { return new DouseiPlay(DouseiPlayId.empty); } }; Dousei.prototype.isDouseiPeeping = function () { if (this._actorId == 9 && $gameSwitches.value(361)) { return true; } if (this._actorId == 4 && $gameSwitches.value(362)) { return true; } if (this._actorId == 13 && $gameSwitches.value(363)) { return true; } if (this._actorId == 17 && $gameSwitches.value(364)) { return true; } return false; }; Dousei.prototype.update = function () { if (!this._active) { return; } if (this._rest) { return; } if (!this.isHpOk()) { return; } if (this._playWait > 0) { this._playWait--; if (this._playWait == 0) { this.upCurrentPlay(); this.next(); } } }; Dousei.prototype.next = function () { this._playIndex++; if (this._playIndex >= this._itemList.length) { if (this._itemList.length > 0) { this.run(); } return; } this.playCurrentItem(); }; Dousei.prototype.playCurrentItem = function () { var playId = this._itemList[this._playIndex]; this.setCurrentPlay(playId); this._playWait = this.calcPlayWait(); }; Dousei.prototype.run = function () { this._dirty = true; this._rest = false; if (this._manId == 0) { this._active = false; this._nextUpInfo = []; this._playIndex = -1; this._itemList = []; var actorVar = this.actorDouseiVar(); $gameVariables.setValue(actorVar, 0); return; } this._active = true; this._playIndex = -1; this._itemList = this.makeItemList(); this.next(); }; Dousei.prototype.stop = function () { this._active = false; this._nextUpInfo = null; }; Dousei.prototype.calcPlayWait = function () { return 360; }; Dousei.prototype.isActive = function () { return this._active; }; Dousei.prototype.isEnabled = function () { switch (this._actorId) { // マリナ case 4: return $slg.facilityInfo().hasFacility(48); // センリ case 8: return $gameSwitches.value(225); // ノノカ case 9: return $slg.facilityInfo().hasFacility(46); // カナミ // ミユ case 10: case 11: return true; // サキ case 13: return $slg.facilityInfo().hasFacility(50); // ココナ case 17: return $slg.facilityInfo().hasFacility(53); } return false; }; Dousei.prototype.rest = function () { this._rest = true; this._nextUpInfo = null; }; Dousei.prototype.isRest = function () { return this._rest; }; Dousei.prototype.resume = function () { this._rest = false; }; Dousei.prototype.isDouseiNinshin = function () { return this._douseiNishin; }; Dousei.prototype.setDouseiNinshin = function (b) { this._douseiNishin = b; }; Dousei.prototype.isSyusanSkip = function () { for (var _i = 0, _a = this._optionList; _i < _a.length; _i++) { var o = _a[_i]; if (o.itemId() === DouseiPlayId.skipSyusan) { return o.isEnabled(); } } return false; }; Dousei.prototype.isTaikenbanNg = function () { if (!Nore.isTaikenban()) { return false; } if (this._actorId == 9) { return false; } return true; }; Dousei.prototype.nakadashi = function () { return this._nakadashi; }; Dousei.prototype.friendshipLevel = function () { if (this._manId <= 0) { return FriendshipLevel.NONE; } return this.actor().friendshipLevel(this._manId); }; return Dousei; })();