mirror of
https://github.com/jakejarvis/jarv.is.git
synced 2025-07-21 16:01:17 -04:00
commit all random stuff to repo
This commit is contained in:
162
static/candies/scripts/castleEntrance.js
Executable file
162
static/candies/scripts/castleEntrance.js
Executable file
@@ -0,0 +1,162 @@
|
||||
var castleEntrance = {
|
||||
|
||||
// Variables
|
||||
|
||||
size : 30,
|
||||
timeSpent : 0, // Time spent since the beginning of the quest
|
||||
thereIsAMagicBall : false, // True if there's a magic ball right now
|
||||
magicBallX : 0, // X position of the magic ball
|
||||
magicBallY : 0, // Y position of the magic ball
|
||||
|
||||
// Functions
|
||||
|
||||
onload : function(){
|
||||
land.addLand("Castle's entrance", this.size, 3, this.load.bind(this), this.getText.bind(this), this.move.bind(this));
|
||||
},
|
||||
|
||||
move : function(){
|
||||
// Make enemies go toward the left
|
||||
for(var i = 0; i < quest.things.length; i++){
|
||||
if(quest.things[i].type == "mob" && quest.things[i-1].type == "none"){
|
||||
quest.things[i-1] = quest.things[i];
|
||||
quest.things[i] = quest.makeNoneThing();
|
||||
}
|
||||
}
|
||||
|
||||
// We add ennemies
|
||||
if(this.timeSpent < 1000){ // We must stop adding ennemies after a while, else the player could be blocked in certain conditions
|
||||
if(this.timeSpent % 16 == 5){
|
||||
// If there's nothing here, we add a knight
|
||||
if(quest.things[29].type == "none") quest.things[29] = this.makeKnight();
|
||||
}
|
||||
else if(this.timeSpent % 30 == 29){
|
||||
// If there's nothing here, we add a guard
|
||||
if(quest.things[29].type == "none") quest.things[29] = this.makeGuard();
|
||||
}
|
||||
}
|
||||
|
||||
// We handle the magic ball if we spent at least four movements
|
||||
if(this.timeSpent > 4){
|
||||
// If there is already a magic ball
|
||||
if(this.thereIsAMagicBall){
|
||||
var index = quest.getCharacterIndex();
|
||||
|
||||
// If the magic ball just hit the player !
|
||||
if(Math.abs(this.magicBallX - (index*3 + 1)) <= 1 && this.magicBallY == 19){
|
||||
// No more magic ball
|
||||
this.thereIsAMagicBall = false;
|
||||
|
||||
// We teleport the player
|
||||
quest.things[0] = quest.things[index];
|
||||
quest.things[index] = quest.makeNoneThing();
|
||||
}
|
||||
// Else
|
||||
else{
|
||||
// If the magic ball is at the right of the player or is above the steps (it mustn't be above the steps)
|
||||
if(this.magicBallX > index*3 + 1 || this.magicBallX > 77){
|
||||
this.magicBallX -= 1;
|
||||
}
|
||||
// Else, if it's at the left
|
||||
else if(this.magicBallX < index*3 + 1){
|
||||
this.magicBallX += 1;
|
||||
}
|
||||
// If the magic ball isn't already just above the lawn and we're not too far from the play horizontally
|
||||
if(this.magicBallY < 19 && Math.abs(this.magicBallX - index*3) < (19 - this.magicBallY)*3){
|
||||
this.magicBallY += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
// If there is not already a magic ball
|
||||
else{
|
||||
this.thereIsAMagicBall = true;
|
||||
this.magicBallX = 83;
|
||||
this.magicBallY = 1;
|
||||
}
|
||||
}
|
||||
|
||||
// We increment the time spent
|
||||
this.timeSpent += 1;
|
||||
},
|
||||
|
||||
load : function(){
|
||||
// We add some guards on the lawn to slow down the player
|
||||
quest.things[10] = this.makeGuard();
|
||||
quest.things[12] = this.makeGuard();
|
||||
quest.things[15] = this.makeGuard();
|
||||
quest.things[17] = this.makeGuard();
|
||||
|
||||
// We reset the time spent
|
||||
this.timeSpent = 0;
|
||||
},
|
||||
|
||||
makeGuard : function(){
|
||||
return land.createMob("GUA", 25, 25, "spear", "One of the castle's guards.", [drops.createDrop("candies", random.getRandomIntUpTo(40))]);
|
||||
},
|
||||
|
||||
makeKnight : function(){
|
||||
return land.createMob("KNI", 70, 70, "sharp sword", "A knight with a huge armor.", [drops.createDrop("candies", 230 + random.getRandomIntUpTo(70)), drops.createDrop("object", "plateArmour", random.oneChanceOutOf(10))]);
|
||||
},
|
||||
|
||||
getText : function(){
|
||||
var lines = [];
|
||||
lines = this.text.slice(0); // It will store the lines of the castle entrance
|
||||
|
||||
// We add things to the lines (we use size - 1 to avoid drawing the last position, which is inside the castle)
|
||||
for(var i = 0; i < this.size - 1; i++){
|
||||
// If there's a thing
|
||||
if(quest.things[i].type != "none"){
|
||||
// Before the first step
|
||||
if(i < 26){
|
||||
lines[20] = lines[20].replaceAt(i*3, quest.things[i].text);
|
||||
}
|
||||
// On the first step
|
||||
else if(i == 26){
|
||||
lines[19] = lines[19].replaceAt(i*3, quest.things[i].text);
|
||||
}
|
||||
// On the second step
|
||||
else if(i <= 28){
|
||||
lines[18] = lines[18].replaceAt(i*3, quest.things[i].text);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// We add the magic ball
|
||||
if(this.thereIsAMagicBall){
|
||||
lines[this.magicBallY] = lines[this.magicBallY].replaceAt(this.magicBallX, "*");
|
||||
}
|
||||
|
||||
// We return the lines
|
||||
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",
|
||||
" \"\' \' \" \' \" \' \" \' \" \' \' \" \' \' \" \' \" \' \' \" \" \" \' \' \" \"\' \'\n",
|
||||
" \'\" \' \" \' \" \' \" \' \" \' \" \" \' \" \' \" \' \n",
|
||||
" \' \" \' \' \" \" \' \' \' \" \"\n"
|
||||
]
|
||||
|
||||
};
|
Reference in New Issue
Block a user