<html>
<head>
<title>シスター対宇宙アメーバ</title>
</head>
<body>
<script>
// シスターの設定
const sister = {
name: ["美緒", "葵", "恵子", "菜々子", "結衣", "まりか"],
age: [13, 16, 18, 21, 26, 30],
looks: ["美しい", "可愛らしい", "清楚な", "魅惑的な", "凛とした", "色っぽい"],
bodyType: ["スリムな", "引き締まった", "健康的な", "豊満な", "華奢な", "逞しい"],
attireAndWeapon: ["黒いレオタードを着用し、頭にウインプルを載せている。火器を携帯している。", "黒色のスーツを着用し、頭に帽子を被っている。剣を携帯している。", "白いドレスを着用し、帽子を被っている。杖を携帯している。", "赤いワンピースを着用し、ウサギの耳をつけている。鞭を携帯している。", "青いセーラー服を着用し、バンダナを頭に巻いている。銃を携帯している。", "緑の制服を着用し、細い眼鏡をかけている。鎖鎌を携帯している。"],
health: [6, 8, 9, 10, 13, 15]
};
// アメーバの設定
const amoeba = {
health: 100,
attack: Math.floor(Math.random() * 5) + 4 // 4~8の乱数
};
// シスターの遭遇セリフ
const sisterEncounterPhrases = ["道に迷ったのかしら?", "どこに行くのですか?", "教会のことですか?", "何かお困りですか?", "お手伝いしましょうか?", "神のお加護がありますように"];
// シスターの攻撃セリフ
const sisterAttackPhrases = ["祈りなさい!", "邪悪な者よ、退散なさい!", "神の光を浴びなさい!", "祈りに導かれし勇者よ、立ち上がれ!", "悪魔よ、裁く時が来た!", "神の名において、貴様を許すまじ!"];
// シスターの体力が少ない時のセリフ
const sisterLowHealthPhrases = ["なんとか……耐えてみせる!", "神よ、私に力を与えてください……", "体力が限界……でも私はあきらめません!", "まだ終わらせるとは思わないでください!", "神のお告げによれば、私が勝つ運命です!", "信仰を強く持つ私には負けませんよ!"];
// シスターの喘ぎ声
const sisterMoanPhrases = ["あぁ……!", "っふぅ……!", "もっと……!", "た、たすけてぇ!", "あぁ、もう……耐えられない!", "神に……感謝します……!"];
// 吸収されるシスターの情報
const absorbedSisterInfo = {
moans: ["あぁ……!", "っふぅ……!", "もっと……!", "た、たすけてぇ!", "あぁ、もう……耐えられない!", "神に……感謝します……!"],
underwear: ["白いパンツ", "黒いランジェリー", "ピンクのショーツ", "赤いビキニ", "レースのショーツ"],
bodyFeatures: ["美しい胸", "華奢なウエスト", "しなやかな腰", "すらりとした脚", "美麗なお尻"],
absorptionDescription: ["アメーバの触手がシスターの体をなぞっていく……", "快感が全身を駆け巡り、シスターは身をよじる……", "アメーバの触手がシスターを包み込む……", "快感に悶えるシスターの姿が目に浮かぶ……", "アメーバの粘液がシスターの肌を舐める……"]
};
// シスターの勝利回数
let victoryCount = 0;
function createSister() {
const sisterIndex = Math.floor(Math.random() * 6);
const sisterName = sister.name[sisterIndex];
const sisterAge = sister.age[sisterIndex];
const sisterLooks = sister.looks[Math.floor(Math.random() * 6)];
const sisterBodyType = sister.bodyType[Math.floor(Math.random() * 6)];
const attireAndWeapon = sister.attireAndWeapon[Math.floor(Math.random() * 6)];
const sisterHealth = Math.floor(sisterAge / 2);
return {
name: sisterName,
age: sisterAge,
looks: sisterLooks,
bodyType: sisterBodyType,
attireAndWeapon: attireAndWeapon,
health: sisterHealth
};
}
function startEncounter() {
const encounterChance = Math.random();
const encounterText = document.getElementById("encounterText");
const sisterInfo = createSister();
if (encounterChance <= 0.3) {
encounterText.innerHTML = "シスター「" + sisterEncounterPhrases[Math.floor(Math.random() * 6)] + "」";
document.getElementById("battleStartButton").style.display = "block";
} else {
encounterText.innerHTML = "シスター「" + sister.name[Math.floor(Math.random() * 6)] + "……この方は信者の方ではないようですね」";
}
// TODO: シスターの情報を表示する
}
function startBattle() {
const encounterText = document.getElementById("encounterText");
encounterText.innerHTML = "";
const battleText = document.getElementById("battleText");
battleText.innerHTML = "-------バトル開始-------";
document.getElementById("battleContinueButton").style.display = "block";
document.getElementById("battleStartButton").style.display = "none";
}
function calculateSisterAttackDamage() {
const attackPower = Math.floor(Math.random() * 5) + 1; // 1~5の攻撃力
return attackPower;
}
function calculateAmoebaAttackSuccess() {
const attackChance = Math.random();
return attackChance <= 0.6;
}
function calculateSisterDefenseSuccess() {
const defenseChance = Math.random();
return defenseChance <= 0.3;
}
function calculateAbsorptionSuccess() {
const absorptionChance = Math.random();
return absorptionChance <= 0.3;
}
function performSisterAttack() {
const sisterAttackPower = calculateSisterAttackDamage();
const battleText = document.getElementById("battleText");
battleText.innerHTML += "<br>シスターの攻撃!";
// TODO: シスターの攻撃メッセージを表示する
amoeba.health -= sisterAttackPower;
battleText.innerHTML += "<br>アメーバに" + sisterAttackPower + "ダメージ与えた!";
if (amoeba.health <= 0) {
victoryCount++;
battleText.innerHTML += "<br>シスター達の勝利!";
battleText.innerHTML += "<br>アメーバに吸収されたシスターの数:" + victoryCount;
document.getElementById("battleContinueButton").style.display = "none";
document.getElementById("restartButton").style.display = "block";
return;
}
setTimeout(performAmoebaAttack, 10000); // 次のターンまで10秒待つ
}
function performAmoebaAttack() {
const isAttackSuccessful = calculateAmoebaAttackSuccess();
const battleText = document.getElementById("battleText");
if (isAttackSuccessful) {
battleText.innerHTML += "<br>アメーバの攻撃!";
// TODO: アメーバの攻撃メッセージを表示する
if (calculateSisterDefenseSuccess()) {
battleText.innerHTML += "<br>シスターが攻撃を防いだ!";
} else {
const sisterHealthPhrases = sisterLowHealthPhrases[Math.floor(Math.random() * 6)];
const sisterMoanPhrase = sisterMoanPhrases[Math.floor(Math.random() * 6)];
battleText.innerHTML += "<br>シスターが" + amoeba.attack + "ダメージを受けた!" + sisterHealthPhrases;
// TODO: シスターの喘ぎ声を表示する
if (calculateAbsorptionSuccess()) {
battleText.innerHTML += "<br>麻痺性の粘液によりシスターは身動きが取れなくなった!";
// TODO: アメーバに