mirror of
https://github.com/2009scape/2009scape.github.io.git
synced 2024-11-04 10:02:36 +01:00
256 lines
11 KiB
JavaScript
256 lines
11 KiB
JavaScript
var underwaterCave = {
|
|
|
|
// Variables
|
|
size : 54,
|
|
|
|
// Functions
|
|
onload : function(){
|
|
land.addLand("Underwater cave", this.size, 2, this.load.bind(this), this.getText.bind(this), this.move.bind(this));
|
|
},
|
|
|
|
move : function(){
|
|
var defeated = false;
|
|
if(quest.things[51].type != "mob") defeated = true; // The Whale has been defeated
|
|
|
|
// We create a variable to store the lines of the underwater cave, depending on if the Whale is defeated or not
|
|
var lines = [];
|
|
if(defeated == false) lines = this.text.slice(0);
|
|
else lines = this.textWithoutWhale.slice(0);
|
|
|
|
// We make bubbles go up
|
|
for(var i = this.bubbles.length - 1; i >= 0; i--){
|
|
if(this.bubbles[i].y == 0 || lines[this.bubbles[i].y-1].charAt(this.bubbles[i].x) != " "){
|
|
this.bubbles.splice(i, 1);
|
|
}
|
|
else this.bubbles[i].y -= 1;
|
|
}
|
|
|
|
// We add bubbles if there isn't enough
|
|
if(this.bubbles.length < 4){
|
|
var b = this.bubblesStartingPositions[random.getRandomIntUpTo(this.bubblesStartingPositions.length-1)];
|
|
if(lines[b.y].charAt(b.x) == " " && lines[b.y-1].charAt(b.x) == " "){
|
|
this.bubbles.push({x:0, y:0});
|
|
this.bubbles[this.bubbles.length-1].x = b.x;
|
|
this.bubbles[this.bubbles.length-1].y = b.y;
|
|
}
|
|
}
|
|
},
|
|
|
|
load : function(){
|
|
for(var i = 1; i < quest.things.length; i++){
|
|
if(i < 47){ // If we're before the place of octopus guardians
|
|
if(i > 2){ // If we're underwater
|
|
if(i >= 26 && i <= 35){ // Eel zone
|
|
if(random.oneChanceOutOf(3)){
|
|
quest.things[i] = land.createMob("EEL", 3, 3, "electric tail", "An eel. Weak, but aggressive.", [drops.createDrop("candies", 50 + random.getRandomIntUpTo(50))]);
|
|
}
|
|
}
|
|
else{
|
|
if(random.flipACoin()){
|
|
var n = 9 + random.getRandomIntUpTo(3);
|
|
quest.things[i] = land.createMob("F~H", n, n, "fins", "A fish. Easy to beat.", [drops.createDrop("candies", 5)]);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if(i <= 50){ // If we're before the whale
|
|
if(random.getRandomIntUpTo(10) <= 9) // 9/10 chances
|
|
quest.things[i] = land.createMob("OCT", 45, 45, "tentacles", "An octopus guardian. It looks dangerous.", []);
|
|
}
|
|
else if(i == 51){ // It's the whale (52 and 53 must be void)
|
|
quest.things[i] = land.createMob("The Whale.", 100, 100, "giant tail", "The Whale does not like to be disturbed.", [drops.createDrop("candies", 400 + random.getRandomIntUpTo(400)), drops.createDrop("object", "key", true), drops.createDrop("object", "hutMap", true), drops.createDrop("object", "swampMap", true), drops.createDrop("object", "boots", true), drops.createDrop("object", "wellMap", true), drops.createDrop("object", "magicianHat", true), drops.createDrop("object", "pinkRing", true), drops.createDrop("object", "forgeMap", true)]);
|
|
}
|
|
}
|
|
},
|
|
|
|
getText : function(){
|
|
var defeated = false;
|
|
if(quest.things[51].type != "mob") defeated = true; // The Whale has been defeated
|
|
|
|
// We create a variable to store the lines of the underwater cave, depending on if the Whale is defeated or not
|
|
var lines = [];
|
|
if(defeated == false) lines = this.text.slice(0);
|
|
else lines = this.textWithoutWhale.slice(0);
|
|
|
|
// We modify this variable by adding things to it
|
|
for(var i = 0; i < this.size; i++){
|
|
if(defeated == true || (defeated == false && i <= 50)){ // If we defeated the Whale or we're not drawing the things located after the Whale
|
|
if(quest.things[i].type != "none"){
|
|
lines[this.positions[i].y] = lines[this.positions[i].y].replaceAt(this.positions[i].x, quest.things[i].text);
|
|
}
|
|
}
|
|
}
|
|
|
|
// We modify this land var by drawing bubbles
|
|
for(var i = this.bubbles.length - 1; i >= 0; i--){
|
|
if(lines[this.bubbles[i].y].charAt(this.bubbles[i].x) == " ") lines[this.bubbles[i].y] = lines[this.bubbles[i].y].replaceAt_with_size(this.bubbles[i].x, "°", 1);
|
|
else this.bubbles.splice(i, 1);
|
|
}
|
|
|
|
return lines.join("");
|
|
},
|
|
|
|
// Variables
|
|
|
|
text : [
|
|
" / . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n",
|
|
"___________| . . . . . . . . . . . . . . . . . . . . . . _______ . . .\n",
|
|
". . .| |. . . . . . . . . . . . . . . . . . . ._____/ \\ . . .\n",
|
|
" . . | | . . . ________. . . . . . . . . . . ./ \\ . .\n",
|
|
". . .| \\_____/ \\_______ . . . . . . ./ \\ . .\n",
|
|
" . . \\ \\____________/ \\ .\n",
|
|
". . . \\ __ | .\n",
|
|
" . . . \\ __/. | |.\n",
|
|
". . . . \\ ________/. . .| | .\n",
|
|
" . . . . \\ ____/. . . . . . ./ / .\n",
|
|
". . . . . \\___ __/. . . . . . . . ./ / . .\n",
|
|
" . . . . . . .\\ ______/. . . . . . . . . ./ / . .\n",
|
|
". . . . . . . .\\_____________/. . . . . ____. . . . . ./ / . . .\n",
|
|
" . .__________ . . . . . . . . . . . __/ \\_________/ \\. . .\n",
|
|
". ./ \\ . . . . . . . ______/ \\. . .\n",
|
|
" ./ ::. \\_____________/ |. .\n",
|
|
".|(\\./) .-\"\"-. | . .\n",
|
|
" | `\\'-'` \\ / . .\n",
|
|
".| '.___,_`__/ / . . .\n",
|
|
" | __________ _____________/ . . .\n",
|
|
". \\_____ ________/ . . . . .\\_________/. . . . . . . . . . .\n",
|
|
" . . . .\\__________/ . . . . . . . . . . . . . . . . . . . . . . . . .\n",
|
|
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ."
|
|
],
|
|
|
|
textWithoutWhale : [
|
|
" / . . . . . . . . . . . . . . . . . . . . . . . . . . . . .\n",
|
|
"___________| . . . . . . . . . . . . . . . . . . . . . . _______ . . .\n",
|
|
". . .| |. . . . . . . . . . . . . . . . . . . ._____/ \\ . . .\n",
|
|
" . . | | . . . ________. . . . . . . . . . . ./ \\ . .\n",
|
|
". . .| \\_____/ \\_______ . . . . . . ./ \\ . .\n",
|
|
" . . \\ \\____________/ \\ .\n",
|
|
". . . \\ __ | .\n",
|
|
" . . . \\ __/. | |.\n",
|
|
". . . . \\ ________/. . .| | .\n",
|
|
" . . . . \\ ____/. . . . . . ./ / .\n",
|
|
". . . . . \\___ __/. . . . . . . . ./ / . .\n",
|
|
" . . . . . . .\\ ______/. . . . . . . . . ./ / . .\n",
|
|
". . . . . . . .\\_____________/. . . . . ____. . . . . ./ / . . .\n",
|
|
" . .__________ . . . . . . . . . . . __/ \\_________/ \\. . .\n",
|
|
". ./ \\ . . . . . . . ______/ \\. . .\n",
|
|
" ./ \\_____________/ |. .\n",
|
|
".| | . .\n",
|
|
" | / . .\n",
|
|
".| / . . .\n",
|
|
" | __________ _____________/ . . .\n",
|
|
". \\_____ ________/ . . . . .\\_________/. . . . . . . . . . .\n",
|
|
" . . . .\\__________/ . . . . . . . . . . . . . . . . . . . . . . . . .\n",
|
|
". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ."
|
|
],
|
|
|
|
positions : [
|
|
{x:0, y:1},
|
|
{x:3, y:1},
|
|
{x:6, y:1},
|
|
{x:7, y:2},
|
|
{x:7, y:3},
|
|
{x:7, y:4},
|
|
{x:9, y:5},
|
|
{x:11, y:6},
|
|
{x:13, y:7},
|
|
{x:14, y:8},
|
|
{x:15, y:9},
|
|
{x:18, y:10},
|
|
{x:21, y:10},
|
|
{x:24, y:9},
|
|
{x:27, y:8},
|
|
{x:30, y:7},
|
|
{x:33, y:7},
|
|
{x:36, y:8},
|
|
{x:39, y:8},
|
|
{x:42, y:7},
|
|
{x:45, y:7},
|
|
{x:48, y:7},
|
|
{x:51, y:6},
|
|
{x:54, y:5},
|
|
{x:57, y:4},
|
|
{x:60, y:5},
|
|
{x:62, y:6},
|
|
{x:62, y:7},
|
|
{x:62, y:8},
|
|
{x:61, y:9},
|
|
{x:60, y:10},
|
|
{x:59, y:11},
|
|
{x:58, y:12},
|
|
{x:58, y:13},
|
|
{x:58, y:14},
|
|
{x:58, y:15},
|
|
{x:55, y:16},
|
|
{x:52, y:17},
|
|
{x:51, y:18},
|
|
{x:48, y:18},
|
|
{x:45, y:19},
|
|
{x:42, y:19},
|
|
{x:39, y:18},
|
|
{x:36, y:17},
|
|
{x:33, y:16},
|
|
{x:30, y:17},
|
|
{x:27, y:17},
|
|
{x:25, y:18},
|
|
{x:22, y:18},
|
|
{x:19, y:18},
|
|
{x:16, y:18},
|
|
{x:13, y:18},
|
|
{x:10, y:18},
|
|
{x:7, y:18}
|
|
],
|
|
|
|
bubblesStartingPositions : [
|
|
{x:10, y:9},
|
|
{x:13, y:9},
|
|
{x:18, y:11},
|
|
{x:20, y:11},
|
|
{x:22, y:11},
|
|
{x:24, y:11},
|
|
{x:26, y:11},
|
|
{x:30, y:10},
|
|
{x:32, y:10},
|
|
{x:34, y:10},
|
|
{x:38, y:9},
|
|
{x:41, y:8},
|
|
{x:43, y:8},
|
|
{x:54, y:7},
|
|
{x:56, y:7},
|
|
{x:57, y:5},
|
|
{x:59, y:5},
|
|
{x:63, y:18},
|
|
{x:61, y:18},
|
|
{x:59, y:18},
|
|
{x:57, y:18},
|
|
{x:55, y:18},
|
|
{x:53, y:18},
|
|
{x:51, y:18},
|
|
{x:49, y:19},
|
|
{x:47, y:19},
|
|
{x:45, y:19},
|
|
{x:43, y:19},
|
|
{x:41, y:19},
|
|
{x:38, y:18},
|
|
{x:36, y:18},
|
|
{x:34, y:18},
|
|
{x:32, y:18},
|
|
{x:30, y:18},
|
|
{x:27, y:19},
|
|
{x:25, y:19},
|
|
{x:23, y:19},
|
|
{x:21, y:19},
|
|
{x:18, y:20},
|
|
{x:16, y:20},
|
|
{x:14, y:20},
|
|
{x:12, y:20},
|
|
{x:10, y:20},
|
|
{x:7, y:19},
|
|
{x:5, y:19},
|
|
{x:3, y:19}
|
|
],
|
|
|
|
bubbles : []
|
|
|
|
};
|