alter-egoism/js/plugins/CBR_eroStatus_kaihatu.js
2025-11-01 14:17:42 -05:00

650 lines
24 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.

function Window_EroStatus_kaihatu_select() {
this.initialize(...arguments);
}
function Window_EroStatus_kaihatu_view() {
this.initialize(...arguments);
}
(function () {
// ########################################################
// ################### 開発セレクト ######################
// ########################################################
Window_EroStatus_kaihatu_select.prototype = Object.create(Window_Selectable.prototype);
Window_EroStatus_kaihatu_select.prototype.constructor = Window_EroStatus_kaihatu_select;
Window_EroStatus_kaihatu_select.prototype.initialize = function (rect) {
Window_Selectable.prototype.initialize.call(this, rect);
this._additionalSprites = {};
//最初に0番目って指定、commandではデフォでやってるけど
// デフォではアクティブに
this.makeList();
this.select(0);
this.activate();
this.disp_list = {
kou: {
sira: [
"キスにはあまり興味がない。\n好きな人が相手なら、嫌ではないと\n思うが……。",
"口を使った行為も悪くないのではと\n最近思い始めてきている……。",
"口でする行為だが、テクニックが\n身についてきたのではないかと\n自負している。",
"舌技にはかなり自信がある。\nディープキスでもフェラチオでも\nなんだって大歓迎だ。"
],
yozu: [
"キスとか、あとお口を使ったエッチな\nこととか、してみたいって思ったこと\nないなぁ。",
"お口を使ったプレイって、嫌いって\nわけじゃないんだけど、進んでシたい\nとは思わないかな。",
"わたし、唇ってけっこう敏感なの\nかな 刺激されると、身体が\n火照ってきちゃうんだよね……。",
"わたしの舌使いって、けっこうエロい\nって言われる。相手が満足してくれる\nんだったら、それもいいかも。"
]
},
tibu: {
sira: [
"胸を触られるのは好きではない。\nそれは相手が女性でも同じこと。",
"胸が少し敏感になったというか、\n触れると妙な気分になってしまう。",
"私はこんなに胸が敏感だっただろう\nか 触れられるの好きではなかった\nはずなのだが……。",
"乳房はものすごく感じてしまうんだ。\n少し触れられただけでも、乳首が\n勃ってしまうようになった……。"
],
yozu: [
"おっぱい大きくてうらやましいって\n言われるけど、訓練とかの邪魔になる\nし、肩は凝るしいいものじゃない。",
"おっぱいを触ると、感じるように\nなってきちゃったんだよね……。",
"おっぱい、すごく敏感なのかも。\n触られると、気持ちよくなっちゃう。",
"ヤバイ……おっぱい、感じ過ぎちゃう\nようになっちゃった。ちょっと触れた\nだけで乳首ビンビンになっちゃう。"
]
},
man: {
sira: [
"アソコは、触れば多少感じることは\nあるが、あまり触れたいとは\n思えないな。",
"以前よりも、膣がすごく敏感に\nなって濡れやすくなった気がする。",
"オマンコでかなり感じるように\nなってしまった。触れただけでも、\nビショビショに濡れてしまう……。",
"オマンコ、ものすごく敏感になって\nしまってて、刺激を与えられたら、\nすぐにイキそうになってしまう。"
],
yozu: [
"感じなくはないんだけど、\nデリケートところだし、あまり刺激を\n与えたくないかも。",
"触ってると気持ちいいし、イけるよう\nにもなってきた。",
"オマンコ、すごく濡れやすくなっ\nちゃったかも。どんどん敏感になって\nいる気がする。",
"エッチなことを想像しただけで、\nぐちょぐちょになっちゃう。ウズウズ\nしてたまんないよぉ。"
]
},
ana: {
sira: [
"は……? 尻を使ったプレイ……?\nさすがに考えたくもないな。",
"尻穴に触れると、なんだが変な感じが\nするようになってしまった。",
"尻穴でかなり感じるようになって\nしまった。アブーマルなことって\nわかってはいるのだが……。",
"尻穴がずっとウズウズしっぱなしで\n落ち着かない。これまで、さすがに\n色々とヤりすぎてしまったか……。"
],
yozu: [
"お尻でするプレイがあるのは、\n知ってるけど……さすがに無理だよ。",
"お尻の穴、ちょっとだけだけど、\n気持ちよくなれるようになってきた\nかも……。",
"お尻の穴、すっごく感じちゃう。\n弄られたら、それだけで気持ちよく\nなってしまうし……。",
"最近、お尻の穴が緩くなってきた。\nやっぱ弄りすぎだよね ガマン\nしようとは思うんだけど無理っぽい。"
]
},
hou: {
sira: [
"好きな相手でもできれば、してやり\nたいと思うかもしれないが……。",
"誰かを性的に気持ちよくさせるのは\n悪くない。積極的にしたいとは\n思わないが……。",
"性的な奉仕をしてやると、相手が\n気持ちよくなってくれて、その顔を\n見るとゾクゾクする。",
"手や乳房などを駆使して、性的な刺激\nを与えると相手が喜んでくれる。\nそれを見ているだけで興奮する。"
],
yozu: [
"好きになった人が相手なら、\nエッチなことでもシてあげたいって\n思うかも……。",
"エッチなことをシてあげると、\n気持ちよさそうにしてくれる。それが\n嬉しいって思えるようになった。",
"エッチなことで気持ちよくするのって\nけっこう好きかも。相手が喜んでくれ\nると、わたしも興奮しちゃう。",
"エッチなご奉仕って、わたし、\nすごく好きなんだ。相手のエッチな\n顔見ていると満足感がすごいんだよ。"
]
},
rosyu: {
sira: [
"いや、風呂ならともかく人前で裸に\nなるとかありえないだろう。",
"裸を見られると、身体が熱くなると\nいうか、エロい気持ちになってしまう\nのはどういうことなのだろうか",
"裸でいると興奮するようになったし\nジロジロ見られるのもたまらない。\n私にこんな性癖があったとはな。",
"私の裸を見た者が興奮してくれると\nゾクゾクしてたまらない。見られて\nいるだけで気持ちが昂ぶってしまう。"
],
yozu: [
"誰かに肌を見せるのって、けっこう\n抵抗あるかも……。",
"裸を見られると、恥ずかしいんだけど\nそれだけじゃなくて……。どう言って\nいいかわからない気持ちになる。",
"最近、ここで裸になったら、どう\nなっちゃうんだろうって妄想する\nようになった。露出癖あるのかな",
"服を脱いで裸になって、色んな人に\nジロジロ見られたいって思っちゃう。\nすごく興奮しちゃうんだよ。"
]
},
sou: {
sira: [
"エロいことには全く興味がない。\n私には関係のないことだ。",
"少しずつではあるが、エロいことに\n興味がわいてきた。年頃の女が抱く\n感情としてはごく普通だと思うが。",
"私ってけっこうエロい女のかも\n知れないな。性的な行為をここまで\n好きになってしまうとは……。",
"ふとした瞬間にエロいことを考えて\nしまう。頭の中はチンポのことで\nいっぱいだ。"
],
yozu: [
"エッチなことかぁ……わたしには、\nまだまだ早いって思うんだよね。",
"わたしも年頃の女の子だし、エッチな\nことに興味がないってわけじゃないん\nだけど……。",
"エッチなことを知れば知るほど、\n好きになってきた。わたし、こんなに\nエッチな子だったんだ……。",
"ちょっと気を抜くと、すぐにエッチな\nことをしたくなっちゃう。身体の奥が\n疼いてたまんないよぉ……。"
]
}
};
};
Window_EroStatus_kaihatu_select.prototype.numVisibleRows = function () {
return 5;
};
Window_EroStatus_kaihatu_select.prototype.lineHeight = function () {
return 84;
};
Window_EroStatus_kaihatu_select.prototype.makeList = function () {
this._list = [
{
text: "口淫開発度",
id: "kou",
sira: { rank: 246, exp: 253 },
yozu: { rank: 326, exp: 333 }
},
{
text: "乳房開発度",
id: "tibu",
sira: { rank: 247, exp: 254 },
yozu: { rank: 327, exp: 334 }
},
{
text: "オマンコ開発度",
id: "man",
sira: { rank: 248, exp: 255 },
yozu: { rank: 328, exp: 335 }
},
{
text: "アナル開発度",
id: "ana",
sira: { rank: 249, exp: 256 },
yozu: { rank: 329, exp: 336 }
},
{
text: "奉仕開発度",
id: "hou",
sira: { rank: 251, exp: 258 },
yozu: { rank: 331, exp: 338 }
},
{
text: "露出開発度",
id: "rosyu",
sira: { rank: 250, exp: 257 },
yozu: { rank: 330, exp: 337 }
},
{
text: "淫乱度",
id: "sou",
sira: { rank: 245, exp: 252 },
yozu: { rank: 325, exp: 332 }
}
];
};
Window_EroStatus_kaihatu_select.prototype.maxItems = function () {
return this._list.length || 0;
};
Window_EroStatus_kaihatu_select.prototype.setViewWindow = function (viewWindow) {
this._viewWindow = viewWindow;
};
//右のウィンドウにデータを渡す
Window_EroStatus_kaihatu_select.prototype.callUpdateHelp = function () {
if (this.active && this._viewWindow) {
this.updateHelp();
}
};
// ok押すとここも実行される
Window_EroStatus_kaihatu_select.prototype.processOk = function () {
if (this.isCurrentItemEnabled()) {
this.callOkHandler();
}
};
Window_EroStatus_kaihatu_select.prototype.do_ok = function () {
var actor = $gameParty.menuActor();
var chara = actor.name() == "白雪" ? "sira" : "yozu";
// D→0 A→3
const info = this._list[this.index()];
var rank_num = $gameVariables.value(info[chara].rank);
var exp_val = $gameVariables.value(info[chara].exp);
var keiken = [100, 350, 850, Infinity];
if (exp_val >= keiken[rank_num]) {
$gameVariables.setValue(info[chara].rank, rank_num + 1);
AudioManager.playSe({ name: "Chime2", volume: 90, pitch: 100, pan: 0 });
this.refresh();
this._viewWindow.refresh();
if (info.id == "sou") {
var ary = ["exp0", "exp1", "exp2", "exp3"];
if (chara == "sira") {
var varNum = 245;
if ($gameVariables.value(204) == 0) {
var key = 10;
} else {
if ($gameVariables.value(204) == 1) {
if ($gameSwitches.value(267)) {
var key = 11;
} else {
key = 12;
}
} else if ($gameVariables.value(204) == 2) {
var key = 10;
} else if ($gameVariables.value(204) == 3) {
var key = 11;
}
}
// 表示された後妊娠描写をする
if ($gameVariables.value(204) == 2 || $gameVariables.value(204) == 3) {
SceneManager._scene.nin_flag = key;
}
// var key = 10; //"shirayuki_uniform_expression";
// var key = 12; //"shirayuki_holdnaked_expression";
// var key = 11; //"shirayuki_naked_expression";
} else {
var varNum = 325;
if ($gameVariables.value(205) == 0) {
var key = 13;
} else {
if ($gameVariables.value(205) == 1) {
if ($gameSwitches.value(313)) {
var key = 14;
} else {
var key = 15;
}
} else if ($gameVariables.value(205) == 2) {
var key = 13;
} else if ($gameVariables.value(205) == 3) {
var key = 14;
}
}
// 表示された後妊娠描写をする
if ($gameVariables.value(205) == 2 || $gameVariables.value(205) == 3) {
SceneManager._scene.nin_flag = key;
}
// var key = 13; //"yozuru_uniform_expression";
// var key = 15; //"yozuru_holdnaked_expression";
// var key = 14; //"yozuru_naked_expression";
}
SceneManager._scene.resetLive2d(key, ary[$gameVariables.value(varNum)]);
}
// ここでランクが上がるのでコモンイベント868称号習得処理を実行
const commonEvent = $dataCommonEvents[868];
if (commonEvent) {
const interpreter = new Game_Interpreter();
interpreter.setup(commonEvent.list);
interpreter.update();
}
} else {
SoundManager.playBuzzer();
}
};
Window_EroStatus_kaihatu_select.prototype.updateHelp = function () {
this._viewWindow.setItem(this._list[this.index()]);
};
Window_EroStatus_kaihatu_select.prototype.drawItem = function (index) {
const info = this._list[index];
const rect = this.itemRectWithPadding(index);
this.resetTextColor();
//this.changePaintOpacity(this.isEnabled(savefileId));
//this.drawTitle(savefileId, rect.x, rect.y + 4);
//数値だったら
//if (Number.isFinite(info)) {
this.drawContents(info, rect);
//}
};
Window_EroStatus_kaihatu_select.prototype.processNewLineS = function (textState) {
textState.x = textState.startX;
textState.y += textState.height - 60;
textState.height = this.calcTextHeight(textState);
};
Window_EroStatus_kaihatu_select.prototype.drawContents = function (info, rect) {
const bottom = rect.y + rect.height;
this.changeTextColor("#000000");
this.contents.fontFace = "serif";
this.contents.fontSize = 22;
this.drawTextM(info.text, 15, rect.y - 27, 400, "left");
var actor = $gameParty.menuActor();
var chara = actor.name() == "白雪" ? "sira" : "yozu";
this.changeTextColor("#FFFFFF");
this.contents.fontSize = 16;
// D→0 A→3
var rank_num = $gameVariables.value(info[chara].rank);
this.drawTextExS(this.disp_list[info.id][chara][rank_num], 30, rect.y + 4, 400, "left");
var exp_val = $gameVariables.value(info[chara].exp);
var ary = ["D", "C", "B", "A"];
var keiken = [100, 350, 850, Infinity];
this.contents.fontSize = 52;
this.drawTextM(ary[rank_num], 328, rect.y + 14, 100, "left");
this.changeTextColor("#000000");
this.contents.fontSize = 14;
if (exp_val >= keiken[rank_num]) {
this.contents.blt(this.menu_rank_skin, 0, 0, 208, 26, 175, rect.y + 1);
this.drawTextM("RANK UP", 304, rect.y - 21, 100, "left");
}
this.drawTextM(`EXP${Math.min(exp_val, 9999)}`, 194, rect.y - 21, 100, "left");
this.placeGauge(actor, `ero_${info.id}`, rect.x + 180, rect.y - 10, info[chara]);
};
Window_EroStatus_kaihatu_select.prototype.placeGauge = function (actor, type, x, y, info) {
const key = "actor%1-gauge-%2".format(actor.actorId(), type);
const sprite = this.createInnerSprite(key, Sprite_Gauge_Kaihatu);
sprite.setup(actor, type, info);
sprite.move(x, y);
sprite.show();
};
Window_EroStatus_kaihatu_select.prototype.createInnerSprite = function (key, spriteClass) {
const dict = this._additionalSprites;
if (dict[key]) {
return dict[key];
} else {
const sprite = new spriteClass();
dict[key] = sprite;
this.addInnerChild(sprite);
return sprite;
}
};
// ################# カーソルの変更 ##################
Window_EroStatus_kaihatu_select.prototype.updatePadding = function () {
this.padding = 0;
};
Window_EroStatus_kaihatu_select.prototype.colSpacing = function () {
return 0;
};
Window_EroStatus_kaihatu_select.prototype.refreshCursor = function () {
if (this._cursorAll) {
this.refreshCursorForAll();
} else if (this.index() >= 0) {
const rect = this.itemRect(this.index());
this.setCursorRect(rect.x, rect.y, 190, 92);
} else {
this.setCursorRect(0, 0, 0, 0);
}
};
Window_EroStatus_kaihatu_select.prototype.refreshCursorForAll = function () {
const maxItems = this.maxItems();
if (maxItems > 0) {
const rect = this.itemRect(0);
rect.enlarge(this.itemRect(maxItems - 1));
this.setCursorRect(rect.x, rect.y, 190, 92);
} else {
this.setCursorRect(0, 0, 0, 0);
}
};
Window_EroStatus_kaihatu_select.prototype.loadWindowskin = function () {
this.windowskin = ImageManager.loadSystem("Window");
this.menu_cursor_skin = ImageManager.loadSystem("menu_kaihatu_selected");
this.menu_rank_skin = ImageManager.loadSystem("erost_kaihatu_rankup");
};
Window_EroStatus_kaihatu_select.prototype._refreshCursor = function () {
const drect = this._cursorRect.clone();
const srect = { x: 0, y: 0, width: 190, height: 92 };
const m = 0;
for (const child of this._cursorSprite.children) {
child.bitmap = this.menu_cursor_skin;
}
this._setRectPartsGeometry(this._cursorSprite, srect, drect, m);
};
//未選択コマンドの背景を画像に
Window_EroStatus_kaihatu_select.prototype.drawItemBackground = function (index) {};
Window_EroStatus_kaihatu_select.prototype._refreshAllParts = function () {
//this._refreshBack();
// this._refreshFrame();
this._refreshCursor();
this._refreshArrows();
this._refreshPauseSign();
};
// ########################################################
// ################### 開発のビュー ######################
// ########################################################
Window_EroStatus_kaihatu_view.prototype = Object.create(Window_Base.prototype);
Window_EroStatus_kaihatu_view.prototype.constructor = Window_EroStatus_kaihatu_view;
Window_EroStatus_kaihatu_view.prototype.initialize = function (rect) {
Window_Base.prototype.initialize.call(this, rect);
this._list = [
{
id: "kou",
sira: { rank: 246, exp: 253 },
yozu: { rank: 326, exp: 333 }
},
{
id: "man",
sira: { rank: 248, exp: 255 },
yozu: { rank: 328, exp: 335 }
},
{
id: "hou",
sira: { rank: 251, exp: 258 },
yozu: { rank: 331, exp: 338 }
},
{
id: "tibu",
sira: { rank: 247, exp: 254 },
yozu: { rank: 327, exp: 334 }
},
{
id: "ana",
sira: { rank: 249, exp: 256 },
yozu: { rank: 329, exp: 336 }
},
{
id: "rosyu",
sira: { rank: 250, exp: 257 },
yozu: { rank: 330, exp: 337 }
}
];
this.refresh();
};
Window_EroStatus_kaihatu_view.prototype.setItem = function (data) {
this._data = data;
this.refresh();
};
Window_EroStatus_kaihatu_view.prototype._refreshAllParts = function () {
//this._refreshFrame();
this._refreshCursor();
this._refreshArrows();
this._refreshPauseSign();
this._refreshBack();
};
Window_EroStatus_kaihatu_view.prototype.loadWindowskin = function () {
this.windowskin = ImageManager.loadSystem("erost_kaihatu_waku");
var list_0 = ["sira", "yozu"];
var list_1 = ["kou", "man", "hou", "tibu", "ana", "rosyu"];
var list_2 = ["a", "b", "c", "d"];
this.erost_kai_icon = {
sira: {},
yozu: {}
};
for (var c = 0; c < 2; c++) {
this.erost_kai_icon[list_0[c]] = {};
for (var i = 0; i < 6; i++) {
this.erost_kai_icon[list_0[c]][list_1[i]] = {};
for (var k = 0; k < 4; k++) {
this.erost_kai_icon[list_0[c]][list_1[i]][list_2[k]] = ImageManager.loadSystem(
`erost_kai_${list_0[c]}_${list_1[i]}_${list_2[k]}`
);
}
}
}
};
Window_EroStatus_kaihatu_view.prototype._refreshBack = function () {
const sprite = this._backSprite;
sprite.bitmap = this._windowskin;
};
Window_EroStatus_kaihatu_view.prototype.refresh = function () {
//const rect = this.baseTextRect();
this.contents.clear();
var actor = $gameParty.menuActor();
var chara = actor.name() == "白雪" ? "sira" : "yozu";
var list_1 = ["kou", "man", "hou", "tibu", "ana", "rosyu"];
var list_2 = ["a", "b", "c", "d"];
var x1 = 3;
var x2 = 635;
var y1 = 57;
var y2 = 274;
var y3 = 490;
var y4 = 60;
var rectList = [
{ x: x1, y: y1 },
{ x: x1, y: y2 },
{ x: x1, y: y3 },
{ x: x2, y: y4 },
{ x: x2, y: y2 },
{ x: x2, y: y3 }
];
for (var i = 0; i < 6; i++) {
var info = this._list[i][chara];
// D→0 A→3
var rank_num = $gameVariables.value(info.rank);
var ary = ["d", "c", "b", "a"];
var img = this.erost_kai_icon[chara][list_1[i]][ary[rank_num]];
const bitmap = img;
const pw = img.width;
const ph = img.height;
const sx = 0;
const sy = 0;
this.contents.blt(bitmap, sx, sy, pw, ph, rectList[i].x, rectList[i].y);
}
};
// 背景(枠)を一番上のレイヤーにする
Window_EroStatus_kaihatu_view.prototype._createAllParts = function () {
this._createContainer();
this._createFrameSprite();
this._createClientArea();
this._createContentsBackSprite();
this._createCursorSprite();
this._createContentsSprite();
this._createArrowSprites();
this._createPauseSignSprites();
this._createBackSprite();
};
Window_EroStatus_kaihatu_view.prototype._createBackSprite = function () {
this._backSprite = new Sprite();
this._backSprite.addChild(new TilingSprite());
this.addChild(this._backSprite);
};
})();
function Sprite_Gauge_Kaihatu() {
this.initialize(...arguments);
}
Sprite_Gauge_Kaihatu.prototype = Object.create(Sprite_Gauge.prototype);
Sprite_Gauge_Kaihatu.prototype.constructor = Sprite_Gauge_Kaihatu;
Sprite_Gauge_Kaihatu.prototype.bitmapWidth = function () {
return 168;
};
Sprite_Gauge_Kaihatu.prototype.gaugeHeight = function () {
return 11;
};
Sprite_Gauge_Kaihatu.prototype.currentValue = function () {
if (this._battler) {
switch (this._statusType) {
case "hp":
return this._battler.hp;
case "ero_kou":
return $gameVariables.value(this.expVar);
case "ero_man":
return $gameVariables.value(this.expVar);
case "ero_hou":
return $gameVariables.value(this.expVar);
case "ero_tibu":
return $gameVariables.value(this.expVar);
case "ero_ana":
return $gameVariables.value(this.expVar);
case "ero_rosyu":
return $gameVariables.value(this.expVar);
case "ero_sou":
return $gameVariables.value(this.expVar);
}
}
return NaN;
};
Sprite_Gauge_Kaihatu.prototype.currentMaxValue = function () {
if (this._battler) {
var keiken = [100, 350, 850, 9999];
switch (this._statusType) {
case "hp":
return this._battler.mhp;
case "ero_kou":
return keiken[$gameVariables.value(this.maxRankVar)];
case "ero_man":
return keiken[$gameVariables.value(this.maxRankVar)];
case "ero_hou":
return keiken[$gameVariables.value(this.maxRankVar)];
case "ero_tibu":
return keiken[$gameVariables.value(this.maxRankVar)];
case "ero_ana":
return keiken[$gameVariables.value(this.maxRankVar)];
case "ero_rosyu":
return keiken[$gameVariables.value(this.maxRankVar)];
case "ero_sou":
return keiken[$gameVariables.value(this.maxRankVar)];
}
}
return NaN;
};
Sprite_Gauge_Kaihatu.prototype.setup = function (battler, statusType, info) {
this._battler = battler;
this._statusType = statusType;
this.maxRankVar = info.rank || 0;
this.expVar = info.exp || 0;
this._value = this.currentValue();
this._maxValue = this.currentMaxValue();
this.updateBitmap();
};
Sprite_Gauge_Kaihatu.prototype.redraw = function () {
this.bitmap.clear();
const currentValue = this.currentValue();
if (!isNaN(currentValue)) {
this.drawGauge();
}
};