diff --git a/data/levels.dat b/data/levels.dat index 6812963..eb9cf1e 100644 --- a/data/levels.dat +++ b/data/levels.dat @@ -32,7 +32,7 @@ 102,level102.dat,Diving Pool 18,level8.5.dat,Look out above... 110,level110.dat,Portrait Gallery #1 -114,level114.dat,NEW LEVEL +114,level114.dat,Loopy Plants 106,level106.dat,Bunkers 112,level112.dat,Divide and Conquer 109,level109.dat,THE END SO FAR diff --git a/data/sprites/plant.png b/data/sprites/plant.png new file mode 100644 index 0000000..bd9fba7 Binary files /dev/null and b/data/sprites/plant.png differ diff --git a/data/sprites/plantdead.png b/data/sprites/plantdead.png new file mode 100644 index 0000000..0a65e0c Binary files /dev/null and b/data/sprites/plantdead.png differ diff --git a/data/sprites/plantjump.png b/data/sprites/plantjump.png new file mode 100644 index 0000000..8d2e903 Binary files /dev/null and b/data/sprites/plantjump.png differ diff --git a/data/world1/level10.dat b/data/world1/level10.dat index b1d713f..4c39598 100644 --- a/data/world1/level10.dat +++ b/data/world1/level10.dat @@ -2,6 +2,7 @@ bgfile forest2.png bg 0 hurryup 70 help +Plants don't move, but can still kill you! endhelp monsters 0 3 28 @@ -33,6 +34,10 @@ monsters 12 31 24 1 20 21 7 37 9 +14 7 28 +124 15 28 +124 18 9 +124 31 18 endmonsters exitdir 1 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, diff --git a/data/world1/level104.dat b/data/world1/level104.dat index 6efff37..eba402f 100644 --- a/data/world1/level104.dat +++ b/data/world1/level104.dat @@ -4,6 +4,8 @@ hurryup 30 help endhelp monsters +0 8 5 +23 32 5 49 17 14 6 19 21 17 21 23 @@ -42,13 +44,13 @@ monsters 15 18 5 15 16 5 15 14 5 -0 8 5 -23 32 5 6 5 11 18 31 14 18 26 5 18 9 23 49 28 23 +124 24 5 +124 15 5 endmonsters exitdir 1 44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44, diff --git a/data/world1/level106.dat b/data/world1/level106.dat index 3aba31d..499f2e8 100644 --- a/data/world1/level106.dat +++ b/data/world1/level106.dat @@ -5,6 +5,7 @@ help endhelp monsters 0 19 11 +23 19 18 18 33 13 18 4 13 18 22 18 @@ -23,10 +24,9 @@ monsters 15 21 18 16 25 18 16 13 18 -1 6 4 -1 33 26 12 20 4 -23 19 18 +124 6 4 +124 33 26 endmonsters exitdir 1 44,0,0,0,44,44,44,44,44,0,0,0,0,0,44,44,44,44,44,44,44,44,44,44,44,0,0,0,0,0,0,44,44,44,44,44,0,0,0,44, diff --git a/data/world1/level11.5.dat b/data/world1/level11.5.dat index 68f8b1c..e0af754 100644 --- a/data/world1/level11.5.dat +++ b/data/world1/level11.5.dat @@ -6,7 +6,6 @@ endhelp monsters 0 1 2 23 19 2 -1 33 7 1 13 10 16 6 28 16 6 28 @@ -46,6 +45,9 @@ monsters 17 12 10 15 14 10 12 30 5 +124 30 14 +124 3 10 +124 34 7 endmonsters exitdir 1 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, diff --git a/data/world1/level111.dat b/data/world1/level111.dat index 2b13811..b64e38a 100644 --- a/data/world1/level111.dat +++ b/data/world1/level111.dat @@ -46,27 +46,29 @@ monsters 15 18 27 15 25 27 17 17 27 +124 6 18 +124 33 18 endmonsters exitdir 1 -4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, -4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, -4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, -4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, -4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, -4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, -4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, -4,0,0,0,0,0,0,0,0,0,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,4, -4,0,0,0,0,0,0,0,0,0,0,0,0,0,50,45,45,45,45,45,45,45,45,45,45,45,45,51,0,0,0,0,0,0,0,0,0,0,0,4, -4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,19,0,0,0,0,0,0,0,0,0,0,0,0,4, -4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, -4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, -4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, -4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, -4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, -4,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,52,52,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,4, -4,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,52,52,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,4, -4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, -4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, +44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44, +44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44, +44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44, +44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44, +44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44, +44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44, +44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44, +44,0,0,0,0,0,0,0,0,0,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,0,45,0,0,0,0,0,0,0,0,0,0,0,44, +44,0,0,0,0,0,0,0,0,0,0,0,0,0,50,45,45,45,45,45,45,45,45,45,45,45,45,51,0,0,0,0,0,0,0,0,0,0,0,44, +44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,19,0,0,0,0,0,0,0,0,0,0,0,0,44, +44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44, +44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44, +44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44, +44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44, +44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44, +44,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,52,52,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,44, +44,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,52,52,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,44, +44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44, +44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44, 44,28,28,28,28,28,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,28,28,28,28,28,44, 44,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,44, 44,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,44, diff --git a/data/world1/level114.dat b/data/world1/level114.dat index f6860cc..3d4d5d9 100644 --- a/data/world1/level114.dat +++ b/data/world1/level114.dat @@ -4,9 +4,9 @@ hurryup 30 help endhelp monsters +0 6 4 49 30 18 49 16 18 -0 6 4 1 36 1 1 26 7 1 3 1 @@ -41,14 +41,14 @@ monsters 17 34 18 7 34 9 7 18 12 -1 31 26 -1 26 26 -1 21 26 -1 18 22 -1 13 22 -1 8 22 -15 18 22 15 8 22 +124 18 22 +124 13 22 +124 9 22 +124 21 26 +124 26 26 +124 31 26 +15 18 22 endmonsters exitdir -1 44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44, @@ -78,7 +78,7 @@ exitdir -1 44,44,44,44,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,0,0,44,44,44,44, 44,44,44,44,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,44,44,44, 44,44,44,44,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,44,44,44, -44,44,44,44,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,17,17,44,44,44,44, +44,44,44,44,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,17,44,44,44,44, 44,44,44,44,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,44,44,44,44, 44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44, layer2 diff --git a/data/world1/level13.dat b/data/world1/level13.dat index f92b982..e8fba2b 100644 --- a/data/world1/level13.dat +++ b/data/world1/level13.dat @@ -12,7 +12,6 @@ monsters 6 29 18 6 6 11 18 9 5 -18 31 23 12 24 28 6 21 2 6 37 10 @@ -54,6 +53,7 @@ monsters 15 29 7 12 32 7 14 8 22 +124 31 23 endmonsters exitdir 1 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, diff --git a/data/world1/level7.dat b/data/world1/level7.dat index c74e9de..35d4a8a 100644 --- a/data/world1/level7.dat +++ b/data/world1/level7.dat @@ -25,6 +25,9 @@ monsters 15 9 8 15 2 8 6 4 8 +124 23 10 +124 13 28 +124 17 28 endmonsters exitdir 1 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, diff --git a/defs.h b/defs.h index 5a47f00..58fb793 100644 --- a/defs.h +++ b/defs.h @@ -297,7 +297,7 @@ #define S_SLOPE 2 // Sprite types -#define MAXPTYPES 124 +#define MAXPTYPES 125 #define P_PLAYER 0 #define P_RAT 1 #define P_CHEESE 2 @@ -427,6 +427,7 @@ #define P_SKULL 121 #define P_WINGLEFT 122 #define P_WINGRIGHT 123 +#define P_PLANT 124 // cards #define CARDFONTX 4 diff --git a/edit.c b/edit.c index c49665b..3604e82 100644 --- a/edit.c +++ b/edit.c @@ -1036,6 +1036,7 @@ int isplacablesprite(int sid) { case P_RINGGOLD: case P_CLOCK: case P_BELL: + case P_ARMOUR: case P_GEMBOOST: case P_HELMET: case P_PHONE: diff --git a/rc.c b/rc.c index 786abb4..21c7c16 100644 --- a/rc.c +++ b/rc.c @@ -2313,6 +2313,9 @@ if (s->id == P_PUFF) printf("PUFF WITH DOOMCOUNT!\n"); // move forwards rv = movex(s, s->dir*getspeed(s)); } + } else if (s->id == P_PLANT) { + // don't move! + s->moved = MV_WALK; } else if (s->id == P_KINGRAT) { /* timer1 is state @@ -3060,15 +3063,19 @@ void dotileeffects(sprite_t *s) { // CHECKS WHICH COUlD APPLY TO TILES UNDER AND SLIGHTLY LEFT/RIGHT OF US while (!finished) { if (tt->id == T_RIGHT) { - if (!ismonster(s->id) && !isfruit(s->id)) { - if (player->powerup != PW_CLOCK) { + if (player->powerup != PW_CLOCK) { + if (!ismonster(s->id) && !isfruit(s->id)) { + movex(s, 1.5); + } else if (s->id == P_PLANT) { movex(s, 1.5); } + finished = B_TRUE; } - finished = B_TRUE; } else if (tt->id == T_LEFT) { - if (!ismonster(s->id) && !isfruit(s->id)) { - if (player->powerup != PW_CLOCK) { + if (player->powerup != PW_CLOCK) { + if (!ismonster(s->id) && !isfruit(s->id)) { + movex(s, -1.5); + } else if (s->id == P_PLANT) { movex(s, -1.5); } } diff --git a/shared.c b/shared.c index 4fdee60..1c23947 100644 --- a/shared.c +++ b/shared.c @@ -1106,6 +1106,13 @@ int loadimagesets(void) { loadspriteimage(P_TICK,F_DEAD, "sprites/tickdead.png"); imageset[P_TICK].numimages = 8; + loadspriteimage(P_PLANT,F_WALK1, "sprites/plant.png"); + loadspriteimage(P_PLANT,F_JUMP, "sprites/plantjump.png"); + loadspriteimage(P_PLANT,F_FALL, "sprites/plantjump.png"); + loadspriteimage(P_PLANT,F_CAUGHT, "sprites/plant.png"); + loadspriteimage(P_PLANT,F_DEAD, "sprites/plantdead.png"); + imageset[P_PLANT].numimages = 8; + loadspriteimage(P_KINGRAT,F_WALK1, "sprites/kingrat.png"); loadspriteimage(P_KINGRAT,F_JUMP, "sprites/kingratjump.png"); loadspriteimage(P_KINGRAT,F_FALL, "sprites/kingratjump.png"); @@ -2353,6 +2360,7 @@ int ismonster(int id) { case P_SPIDER: case P_SNAKE: case P_TICK: + case P_PLANT: case P_SNAIL: case P_SLUG: case P_FISH: @@ -2768,6 +2776,7 @@ void setfruitinfo(void) { setinfo(P_TICK, "Tick", "The tick is small but intelligent - even in its regular placid state it will move in the same manner as an angry rat. Because of their small size, they are also difficult to arget with a slam!", "tick.png"); + setinfo(P_PLANT, "Plant", "Evil venus fly trap plants will lie in wait and devour any player foolish enough to wander into their clutches.", "plant.png"); setinfo(P_BLACKCLOUD, "Cloud of Doom", "This unkillable cloud will appear if you spend too much time on one level. Beware, as the only way to defeat the cloud of doom is to complete the level before it grows too large to handle!", "cloud.png"); diff --git a/templates/plantbase.png b/templates/plantbase.png new file mode 100644 index 0000000..6593692 Binary files /dev/null and b/templates/plantbase.png differ diff --git a/templates/plantclose.png b/templates/plantclose.png new file mode 100644 index 0000000..fa1139f Binary files /dev/null and b/templates/plantclose.png differ diff --git a/templates/planthalf.png b/templates/planthalf.png new file mode 100644 index 0000000..b283a34 Binary files /dev/null and b/templates/planthalf.png differ diff --git a/templates/plantjaw.png b/templates/plantjaw.png new file mode 100644 index 0000000..6f699c9 Binary files /dev/null and b/templates/plantjaw.png differ diff --git a/templates/plantopen.png b/templates/plantopen.png new file mode 100644 index 0000000..7e5b407 Binary files /dev/null and b/templates/plantopen.png differ