Adding feature: curtains.
This commit is contained in:
parent
e65504184f
commit
9f2c38f48f
87
cat.html
87
cat.html
|
@ -593,14 +593,14 @@ function isvalidpath(mypath) {
|
|||
if (!gcount) {
|
||||
return false;
|
||||
}
|
||||
} else if ((thisone.type == "curtain") && (dirtonext == 0)) {
|
||||
// upwards from a curtain is okay.
|
||||
} else if (thisone.type == "curtain") {
|
||||
// anywhere from a curtain is okay. (direction checked in canextendpath())
|
||||
} else if ((i == 0) && (thisone.type == "cat") && (nextone.type == "food")) {
|
||||
// first cat -> food is ok
|
||||
} else if ((i == 0) && (thisone.type == "cat") && (nextone.type == "toad")) {
|
||||
// first cat -> toad is ok
|
||||
} else if ((i == 0) && (thisone.type == "cat") && (nextone.type == "curtain") && (dirtonext == 0)) {
|
||||
// first cat -> curtain is ok if we're going UP only
|
||||
} else if ((i == 0) && (thisone.type == "cat") && (nextone.type == "curtain")) {
|
||||
// first cat -> curtain is ok if we're going UP/DOWN only
|
||||
} else if ((i == 0) && (thisone.type == "cat") && (nextone.type == "whitecat")) {
|
||||
// first cat -> whitecat is ok
|
||||
} else if ((i != 0) && firstcat && (ccount == 0) && (thisone.type == "food") && (nextone.type == "food")) {
|
||||
|
@ -1861,7 +1861,7 @@ console.log("lev " + lev + " newwid " + newwid + " ratio " + ratio);
|
|||
this.addlevelgoals("food", 25);
|
||||
|
||||
this.addlevel(21, false); // oooooooooooo
|
||||
this.addlevelallowedthings("cat", "food");
|
||||
this.addlevelallowedthings("curtain");
|
||||
this.addlevelforcethings("curtain", 2);
|
||||
this.addlevelgoals("curtain", 2);
|
||||
this.addlevelgoals("cat", 30);
|
||||
|
@ -2066,6 +2066,10 @@ console.log("lev " + lev + " newwid " + newwid + " ratio " + ratio);
|
|||
col = "#00ff00";
|
||||
texttodraw = "CAT PARADE!";
|
||||
break;
|
||||
case "climb":
|
||||
col = "#00ff00";
|
||||
texttodraw = "Climb";
|
||||
break;
|
||||
case "chomp":
|
||||
col = "#00cc00";
|
||||
texttodraw = "Chomp!";
|
||||
|
@ -5118,7 +5122,7 @@ console.log("lev " + lev + " newwid " + newwid + " ratio " + ratio);
|
|||
'cat1', 'catfull1', 'catscared1',
|
||||
'llama', 'cheese', 'title',
|
||||
'goat', 'lock','catwalkl','catwalkr','goatwalkl','goatwalkr',
|
||||
'starfull','starempty', 'curtain','curtainshred',
|
||||
'starfull','starempty', 'curtain','curtainshred', 'curtainfall',
|
||||
'door', 'sunlight', 'toad', 'whitecat', // special things
|
||||
'brick', // obstacles
|
||||
'bag', 'bagpop', 'fez', 'pow', 'brickpop', // effects
|
||||
|
@ -5274,6 +5278,19 @@ console.log("lev " + lev + " newwid " + newwid + " ratio " + ratio);
|
|||
curtaindie = true;
|
||||
}
|
||||
}
|
||||
|
||||
// first cat swaps places with last object
|
||||
curpath[0].pushpath(curpath[curpath.length-1].x, curpath[curpath.length-1].y);
|
||||
curpath[0].state = "swapping";
|
||||
curpath[0].counter = 1;
|
||||
// ...then becomes sleepy
|
||||
curpath[0].sleepy = true;
|
||||
|
||||
|
||||
curpath[curpath.length-1].pushpath(curpath[0].x, curpath[0].y);
|
||||
curpath[curpath.length-1].state = "swapping";
|
||||
|
||||
|
||||
if (curtaindie) {
|
||||
// if any curtains died, _all_ curtains die
|
||||
for (i = 1; i < curpath.length-1; i++) {
|
||||
|
@ -5281,16 +5298,6 @@ console.log("lev " + lev + " newwid " + newwid + " ratio " + ratio);
|
|||
curpath[i].losehp();
|
||||
}
|
||||
}
|
||||
// move cat up so it'll fall
|
||||
curpath[0].setgridxy(curpath[curpath.length-2].gridx, curpath[curpath.length-2].gridy);
|
||||
} else {
|
||||
// first cat swaps places with last object
|
||||
curpath[0].pushpath(curpath[curpath.length-1].x, curpath[curpath.length-1].y);
|
||||
curpath[0].state = "swapping";
|
||||
curpath[0].counter = 1;
|
||||
|
||||
curpath[curpath.length-1].pushpath(curpath[0].x, curpath[0].y);
|
||||
curpath[curpath.length-1].state = "swapping";
|
||||
}
|
||||
break;
|
||||
case "slap": // toad drops down.
|
||||
|
@ -5450,7 +5457,7 @@ function collectprize(bag) {
|
|||
case "tissues": // all sleepy cats wake up
|
||||
for (i = 0; i < things.length; i++) {
|
||||
if (things[i].type == "cat") {
|
||||
things[i].eaten = false;
|
||||
things[i].sleepy = false;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -5525,6 +5532,7 @@ function getrandomtype() {
|
|||
if (dodb) console.log("specials are possible");
|
||||
thinglist.push({ type: 'special', pct: 5 } );
|
||||
}
|
||||
if (!game.isbanned(curlevel, 'curtain')) thinglist.push({ type: 'curtain', pct: 5 } );
|
||||
if (!game.isbanned(curlevel, 'goat')) thinglist.push({ type: 'goat', pct: 10 } );
|
||||
if (!game.isbanned(curlevel, 'llama')) thinglist.push({ type: 'llama', pct: 10 } );
|
||||
if (!game.isbanned(curlevel, 'food')) thinglist.push({ type: 'food', pct: 40 } );
|
||||
|
@ -5749,6 +5757,9 @@ function thing(gridx, gridy, type, text, col) {
|
|||
if (this.type == "bagpop") {
|
||||
this.yspeed = 0 - rndfloat(8);
|
||||
this.xspeed = 0 - rndfloat(16) - 1;
|
||||
} else if (this.type == "curtainfall") {
|
||||
this.yspeed = 0 - rndfloat(8);
|
||||
this.xspeed = rndfloat(8) - 4;
|
||||
} else if (this.type == "brickpop") {
|
||||
this.yspeed = 0 - rndfloat(8);
|
||||
this.xspeed = rndfloat(32) - 16;
|
||||
|
@ -5769,7 +5780,7 @@ function thing(gridx, gridy, type, text, col) {
|
|||
|
||||
this.path = [];
|
||||
this.pathspeed = PARADESPEED;
|
||||
this.eaten = false;
|
||||
this.sleepy = false;
|
||||
|
||||
if (this.type == "text" ) {
|
||||
this.x = gridx * GRIDSIZE + (GRIDSIZE/2);
|
||||
|
@ -5793,7 +5804,7 @@ function thing(gridx, gridy, type, text, col) {
|
|||
|
||||
this.issleepy = function() {
|
||||
if (this.type == "cat") {
|
||||
if (this.eaten == true) {
|
||||
if (this.sleepy == true) {
|
||||
return true;
|
||||
} else if (isadjacenttotype(this, "sunlight")) {
|
||||
return true;
|
||||
|
@ -6176,7 +6187,7 @@ function thing(gridx, gridy, type, text, col) {
|
|||
} else {
|
||||
ctx.fillStyle = "black";
|
||||
ctx.fillText(this.name, BOARDX + this.x + 10, BOARDY + this.y + (THINGSIZE/2));
|
||||
ctx.fillText(this.eaten ? "FULL" : "", BOARDX + this.x + 10, BOARDY + this.y + (THINGSIZE/2) + 10);
|
||||
ctx.fillText(this.sleepy ? "FULL" : "", BOARDX + this.x + 10, BOARDY + this.y + (THINGSIZE/2) + 10);
|
||||
}
|
||||
*/
|
||||
|
||||
|
@ -6240,11 +6251,26 @@ function thing(gridx, gridy, type, text, col) {
|
|||
}
|
||||
|
||||
this.getstoppedbelowthing = function() {
|
||||
var bt;
|
||||
var bt,i;
|
||||
bt = getgridthing(this.gridx, this.gridy + 1);
|
||||
if (bt && bt.state != "fall") {
|
||||
return bt;
|
||||
}
|
||||
// look for things movng to the place below.
|
||||
for (i = 0; i < things.length; i += 1) {
|
||||
if (things[i] != this && things[i].state == "swapping" && things[i].path != undefined) {
|
||||
var n;
|
||||
for (n = 0; n < things[i].path.length; n++) {
|
||||
var gx,gy;
|
||||
gx = Math.floor(things[i].path[n].x / GRIDSIZE);
|
||||
gy = Math.floor(things[i].path[n].y / GRIDSIZE);
|
||||
// get grid coords
|
||||
if (gx == this.gridx && gy == this.gridy + 1) {
|
||||
return things[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -6353,7 +6379,7 @@ function thing(gridx, gridy, type, text, col) {
|
|||
food.startexplode("chomp");
|
||||
|
||||
// mark that we've eaten something
|
||||
this.eaten = true;
|
||||
this.sleepy = true;
|
||||
|
||||
console.log("chomp");
|
||||
}
|
||||
|
@ -6363,12 +6389,24 @@ function thing(gridx, gridy, type, text, col) {
|
|||
if (this.type == "firework") return true;
|
||||
if (this.type == "bagpop") return true;
|
||||
if (this.type == "brickpop") return true;
|
||||
if (this.type == "curtainfall") return true;
|
||||
if (this.state == "explode") return true;
|
||||
if (this.state == "shrink") return true;
|
||||
if (this.state == "parade") return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
this.shredcurtain = function() {
|
||||
var i,nshards = 7;
|
||||
for (i = 0; i < nshards; i++) {
|
||||
things.push(new thing(this.gridx, this.gridy, "curtainfall"));
|
||||
}
|
||||
|
||||
this.givepoints();
|
||||
this.addabove();
|
||||
this.kill();
|
||||
}
|
||||
|
||||
this.breakbrick = function() {
|
||||
var i,nshards = 7;
|
||||
for (i = 0; i < nshards; i++) {
|
||||
|
@ -6388,8 +6426,7 @@ function thing(gridx, gridy, type, text, col) {
|
|||
if (this.type == "brick") {
|
||||
this.breakbrick();
|
||||
} else {
|
||||
this.addabove();
|
||||
this.startexplode();
|
||||
this.shredcurtain();
|
||||
}
|
||||
} else {
|
||||
// add a slash from a random x/y to a random x/y
|
||||
|
@ -6475,7 +6512,7 @@ function thing(gridx, gridy, type, text, col) {
|
|||
|
||||
if (this.type == "firework" && this.delay > 0) {
|
||||
this.delay--;
|
||||
} else if ((this.type == "bagpop") || (this.type == "brickpop") || (this.type == "firework")) {
|
||||
} else if ((this.type == "bagpop") || (this.type == "brickpop") || (this.type == "firework") || (this.type == "curtainfall")) {
|
||||
game.dirty = true; // need to redraw
|
||||
|
||||
// regular gravity
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 351 B |
49
todo
49
todo
|
@ -1,10 +1,5 @@
|
|||
http://www.w3schools.com/games/tryit.asp?filename=trygame_default_gravity
|
||||
|
||||
*don't draw fireworks on gameover screen.
|
||||
*randomised goat on title screen.
|
||||
|
||||
|
||||
|
||||
phone fixes as per http://www.html5rocks.com/en/mobile/touch/
|
||||
|
||||
----------------------------
|
||||
|
@ -15,6 +10,8 @@ https://www.smashingmagazine.com/2012/10/design-your-own-mobile-game/
|
|||
-------------------
|
||||
|
||||
|
||||
*things shouldn't all if something is swapping to underneath them!.
|
||||
|
||||
new door fell down on top of new goat!!
|
||||
(or the other way around ??)
|
||||
check code for doors falling when off the top of the screen.
|
||||
|
@ -23,26 +20,50 @@ new door fell down on top of new goat!!
|
|||
change 'thing' to have a constructor!!
|
||||
then remove dupe hp code
|
||||
|
||||
curtain
|
||||
*can only drag a cat UP onto a curtain.
|
||||
*cat UP onto curtain = lose 1 hp
|
||||
*clime multi curtain
|
||||
*if ANY curtains are shredded, all are.
|
||||
*shred all curtains climed
|
||||
|
||||
normal chance for curtain (5% ???)
|
||||
curtain shred explosion
|
||||
|
||||
curtain
|
||||
*normal chance for curtain (5%)
|
||||
*allowing climbing over to curtain from any dir
|
||||
*becomesleepy after climb
|
||||
*curtain shred explosion
|
||||
help (lev21)
|
||||
cats can climb across curtains in any direction.
|
||||
|
||||
this damages the curtains, and swaps places with
|
||||
something else.
|
||||
|
||||
|
||||
------->
|
||||
ca CU CU ch
|
||||
|
||||
to
|
||||
|
||||
------------|
|
||||
| V
|
||||
ch CU- CU- ca
|
||||
^ |
|
||||
-------------
|
||||
|
||||
After being climbed twice, curtains are shredded.
|
||||
|
||||
ch ca
|
||||
|
||||
CU- ----> POP ----> ca
|
||||
|
||||
ca ch ch
|
||||
|
||||
|
||||
remaining levels.
|
||||
*19/20 - more with brick patterns
|
||||
22/23/24 - curtains
|
||||
22/23/24 - curtains (shred 2, 4, 6)
|
||||
24/25/26 - boxes
|
||||
26/27/28 - cat toys
|
||||
29/30 - ???
|
||||
|
||||
goal: x parades of y length!!!
|
||||
|
||||
random levels.
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue