mirror of
https://gitgud.io/BondageProjects/Bondage-College.git
synced 2025-04-03 23:19:18 +00:00
137 lines
No EOL
5.8 KiB
JavaScript
137 lines
No EOL
5.8 KiB
JavaScript
// Struggle parameters
|
|
var StruggleType = "";
|
|
var StruggleDifficulty = ""; // Easy, Normal, Hard, Impossible
|
|
var StruggleDifficultyShown = ""; // To translate the shown difficulty
|
|
var StruggleMessage = "";
|
|
var StruggleDoneMessage = "";
|
|
var StruggleX = 0;
|
|
var StruggleY = 0;
|
|
var StruggleRadius = 0;
|
|
var StruggleProgress = 0; // 0 - Not started, 100 - Done
|
|
var StruggleNextTick = 0;
|
|
var StruggleDone = false;
|
|
var StruggleImageFrame = 0;
|
|
var StruggleImageFrameMax = 1;
|
|
var StruggleImageFrameTime = 0;
|
|
var StruggleSkillBonus = 0;
|
|
|
|
// For each Rope Mastery level, it's 50% easier to struggle out
|
|
function StruggleLoad() {
|
|
StruggleDone = false;
|
|
StruggleProgress = 0;
|
|
StruggleSkillBonus = PlayerGetSkillLevel("RopeMastery");
|
|
}
|
|
|
|
// The next tick to lower the struggle time comes faster with harder levels
|
|
function StruggleGetNextTick() {
|
|
if ((StruggleDifficulty == "Easy") && (StruggleProgress <= 33)) StruggleNextTick = CurrentTime + 600;
|
|
if ((StruggleDifficulty == "Easy") && (StruggleProgress > 33) && (StruggleProgress <= 66)) StruggleNextTick = CurrentTime + 450;
|
|
if ((StruggleDifficulty == "Easy") && (StruggleProgress > 66)) StruggleNextTick = CurrentTime + 300;
|
|
if ((StruggleDifficulty == "Normal") && (StruggleProgress <= 33)) StruggleNextTick = CurrentTime + 400;
|
|
if ((StruggleDifficulty == "Normal") && (StruggleProgress > 33) && (StruggleProgress <= 66)) StruggleNextTick = CurrentTime + 325;
|
|
if ((StruggleDifficulty == "Normal") && (StruggleProgress > 66)) StruggleNextTick = CurrentTime + 250;
|
|
if ((StruggleDifficulty == "Hard") && (StruggleProgress <= 33)) StruggleNextTick = CurrentTime + 300;
|
|
if ((StruggleDifficulty == "Hard") && (StruggleProgress > 33) && (StruggleProgress <= 66)) StruggleNextTick = CurrentTime + 225;
|
|
if ((StruggleDifficulty == "Hard") && (StruggleProgress > 66)) StruggleNextTick = CurrentTime + 150;
|
|
if ((StruggleDifficulty == "Impossible") && (StruggleProgress <= 33)) StruggleNextTick = CurrentTime + 250;
|
|
if ((StruggleDifficulty == "Impossible") && (StruggleProgress > 33) && (StruggleProgress <= 66)) StruggleNextTick = CurrentTime + 125;
|
|
if ((StruggleDifficulty == "Impossible") && (StruggleProgress > 66)) StruggleNextTick = CurrentTime + 10;
|
|
}
|
|
|
|
// When the user clicks to struggle
|
|
function StruggleClick(SType, SDifficulty, SMessage, SDoneMessage, SX, SY, SRadius) {
|
|
|
|
// If the user clicked on a struggling point
|
|
if ((MouseX >= SX - SRadius) && (MouseX <= SX + SRadius) && (MouseY >= SY - SRadius) && (MouseY <= SY + SRadius)) {
|
|
|
|
// If we must start a new struggling
|
|
if ((SType != StruggleType) || (StruggleDifficultyShown == "")) {
|
|
StruggleType = SType;
|
|
StruggleDifficulty = SDifficulty;
|
|
StruggleDifficultyShown = GetText(SDifficulty);
|
|
StruggleMessage = SMessage;
|
|
StruggleDoneMessage = SDoneMessage;
|
|
StruggleX = SX;
|
|
StruggleY = SY;
|
|
StruggleRadius = SRadius;
|
|
StruggleProgress = 0;
|
|
StruggleDone = false;
|
|
StruggleGetNextTick();
|
|
}
|
|
|
|
// Raise the progress by 2 for each click, 100 is done
|
|
if (StruggleProgress <= 0) StruggleProgress = 8;
|
|
StruggleProgress = StruggleProgress + 2 + StruggleSkillBonus;
|
|
if (StruggleProgress >= 100) {
|
|
StruggleProgress = 100;
|
|
StruggleDone = true;
|
|
StruggleNextTick = CurrentTime + 6000;
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// Return the correct background image related to the player's progress
|
|
function StruggleGetImage(StruggleStage) {
|
|
|
|
// The frame of the image changes faster when progress is higher
|
|
if (StruggleImageFrameTime < CurrentTime) {
|
|
if (StruggleProgress <= 0) StruggleImageFrameTime = CurrentTime + 3000;
|
|
if ((StruggleProgress > 0) && (StruggleProgress <= 33)) StruggleImageFrameTime = CurrentTime + 2000;
|
|
if ((StruggleProgress > 33) && (StruggleProgress <= 66)) StruggleImageFrameTime = CurrentTime + 1300;
|
|
if ((StruggleProgress > 66) && (StruggleProgress < 100)) StruggleImageFrameTime = CurrentTime + 800;
|
|
StruggleImageFrame++;
|
|
if (StruggleImageFrame > StruggleImageFrameMax) StruggleImageFrame = 0;
|
|
}
|
|
if (StruggleProgress >= 100) StruggleImageFrame = StruggleImageFrameMax + 1;
|
|
|
|
// Returns the correct image file
|
|
if (StruggleProgress <= 0) return CurrentChapter + "/" + CurrentScreen + "/Idle_" + StruggleStage.toString() + "_" + StruggleImageFrame.toString() + ".jpg";
|
|
else return CurrentChapter + "/" + CurrentScreen + "/" + StruggleType + "_" + StruggleStage.toString() + "_" + StruggleImageFrame.toString() + ".jpg";
|
|
|
|
}
|
|
|
|
// Draw the fight progress in the bottom of the fight scene
|
|
function StruggleDraw(NoStruggleMessage, StruggleStage) {
|
|
|
|
// Draw the background image
|
|
DrawImage(StruggleGetImage(StruggleStage), 0, 0);
|
|
|
|
// Draw the struggle text on top
|
|
if (StruggleProgress <= 0) DrawText(NoStruggleMessage, 600, 30, "white");
|
|
if (StruggleProgress >= 100) DrawText(StruggleDoneMessage, 600, 30, "white");
|
|
if ((StruggleProgress > 0) && (StruggleProgress < 100)) { DrawText(StruggleMessage, 600, 30, "white"); DrawCircle(StruggleX, StruggleY, StruggleRadius + 4, 4, "white"); }
|
|
if ((StruggleProgress > 50) && (StruggleProgress < 100)) DrawText(StruggleDifficultyShown, StruggleX, StruggleY + StruggleRadius + 30, "white");
|
|
|
|
// Draw the progress meter
|
|
DrawRect(399, 579, 402, 12, "white");
|
|
DrawRect(400, 580, StruggleProgress * 4, 10, "#66FF66");
|
|
DrawRect(400 + (StruggleProgress * 4), 580, (100 - StruggleProgress) * 4, 10, "red");
|
|
|
|
}
|
|
|
|
// When the struggle timer runs
|
|
function StruggleRun(NoStruggleMessage, StruggleStage) {
|
|
|
|
// When the struggle timer ticks
|
|
if (StruggleNextTick <= CurrentTime) {
|
|
|
|
// If it's done, we call the done procedure from the calling module, if not we lower the struggle progress
|
|
if (StruggleDone) {
|
|
DynamicFunction(CurrentChapter + "_" + CurrentScreen + "_StruggleDone()");
|
|
StruggleDone = false;
|
|
StruggleProgress = 0;
|
|
StruggleType = "";
|
|
} else {
|
|
StruggleProgress--;
|
|
if (StruggleProgress < 0) StruggleProgress = 0;
|
|
StruggleGetNextTick();
|
|
}
|
|
|
|
}
|
|
|
|
// Draw the struggle scene
|
|
StruggleDraw(NoStruggleMessage, StruggleStage);
|
|
|
|
} |