diff options
Diffstat (limited to 'bubbob/mnstrmap.py')
-rw-r--r-- | bubbob/mnstrmap.py | 397 |
1 files changed, 397 insertions, 0 deletions
diff --git a/bubbob/mnstrmap.py b/bubbob/mnstrmap.py new file mode 100644 index 0000000..88e531d --- /dev/null +++ b/bubbob/mnstrmap.py @@ -0,0 +1,397 @@ + +class Monster1: + def __init__(self, x, y, dir, player=0): + self.x = x + self.y = y + self.dir = (1, -1)[dir] + self.player = player + +def nrange(start,n): + return range(start,start+n) + +class Nasty(Monster1): + right = nrange(239,4) + left = nrange(243,4) + jailed = nrange(247,3) + dead = nrange(253,4) + right_angry = nrange(800,4) + left_angry = nrange(804,4) + +class Monky(Monster1): + right = nrange(265,4) + left = nrange(269,4) + jailed = nrange(273,3) + dead = nrange(279,4) + left_weapon = right_weapon = nrange(451,1) # FIXME + decay_weapon = nrange(452,4) # FIXME + right_angry = nrange(808,4) + left_angry = nrange(812,4) + +class Ghosty(Monster1): + right = nrange(291,4) + left = nrange(295,4) + jailed = nrange(299,3) + dead = nrange(305,4) + right_angry = nrange(816,4) + left_angry = nrange(820,4) + +class Flappy(Monster1): + right = nrange(317,4) + left = nrange(321,4) + jailed = nrange(325,3) + dead = nrange(331,4) + right_angry = nrange(824,4) + left_angry = nrange(828,4) + +class Springy(Monster1): + right = nrange(343,4) + left = nrange(347,4) + jailed = nrange(351,3) + dead = nrange(357,4) + right_jump = nrange(369,2) + left_jump = nrange(371,2) + right_angry = nrange(832,4) + left_angry = nrange(836,4) + right_jump_angry = nrange(840,2) + left_jump_angry = nrange(842,2) + +class Orcy(Monster1): + right = nrange(373,4) + left = nrange(377,4) + jailed = nrange(381,3) + dead = nrange(387,4) + left_weapon = nrange(456,4) + right_weapon = nrange(460,4) + decay_weapon = nrange(456,0) # FIXME + right_angry = nrange(844,4) + left_angry = nrange(848,4) + +class Gramy(Monster1): + right = nrange(399,4) + left = nrange(403,4) + jailed = nrange(407,3) + dead = nrange(413,4) + left_weapon = right_weapon = nrange(472,4) # FIXME + right_angry = nrange(852,4) + left_angry = nrange(856,4) + +class Blitzy(Monster1): + right = left = nrange(425,4) + jailed = nrange(429,3) + dead = nrange(435,4) + right_angry = left_angry = nrange(860,4) + left_weapon = right_weapon = nrange(476,1) # FIXME + +class Ghost: + left = nrange(443,4) + right = nrange(447,4) + +class PlayerBubbles: + appearing = nrange(952,5) + bubble = nrange(910,3) + explosion = nrange(913,3) + left_weapon = nrange(464,4) + right_weapon = nrange(468,4) + decay_weapon = [] + +class LetterBubbles: + Extend = nrange(128,3) # FIXME + eXtend = nrange(136,3) + exTend = nrange(144,3) + extEnd = nrange(152,3) + exteNd = nrange(160,3) + extenD = nrange(168,3) + +class DyingBubble: + first = nrange(163,3) + medium = nrange(171,3) + last = nrange(155,3) + +class Fire: + ground = nrange(490,4) + drop = 489 + +class Lightning: + fired = 488 + +class Water: + h_flow = 900 + v_flow = 901 + start_right = 902 + start_left = 904 + bottom = 903 + top = 905 + tl_corner = 906 + bl_corner = 907 + br_corner = 908 + tr_corner = 909 + +class Flood: + waves = nrange(140,4) + fill = 495 + +class MiscPoints: + pink_100 = 496 + +class DigitsMisc: + digits_mask = nrange(519,10) + digits_border = nrange(920,10) + digits_white = nrange(930,10) + +class PotionBonuses: + coin = 477 + flower = 478 + trefle = 479 + rainbow = 480 + green_note = 481 + blue_note = 692 + + +class Bonuses: + monster_bonuses = [ + (593,1000), # banana + (594,2000), # peach + (595,3000), # quince + (596,4000), # pastec + (597,5000), # wine + (598,6000), # ananas + (599,8000) # diamond + ] + + door = 139 # Lots of diamonds + + red_potion = 637 #\ . + green_potion = 638 # > Clean the level and fill the top 5 lines with one of the PotionBonuses. + yellow_potion = 639 #/ + + kirsh = 600 + icecream1 = 601 # NOT_USED + erdbeer = 602 + fish1 = 603 + tomato = 604 + donut = 605 + apple = 606 + corn = 607 + icecream2 = 608 # NOT_USED + radish = 609 + + cyan_ice = 610 #\ . + violet_ice = 611 #| + peach2 = 612 # > Produced from the bubbles after a wand. + pastec2 = 613 #| + cream_pie = 614 #| + sugar_pie = 615 #/ + + brown_wand = 620 #\ . + yellow_wand = 621 #| + green_wand = 622 # > Bubbles turn into bonus of the previous set after + violet_wand = 623 # > the death of the last enemy plus a mega-bonus. + blue_wand = 624 #| + red_wand = 625 #/ + + violet_chest = 626 #\ . + blue_chest = 627 # > Bubbles turn into diamonds plus after the death + red_chest = 628 # > of the last enemy plus a mega-diamond + yellow_chest = 629 #/ + + shoe = 631 # speed player movements + grenade = 632 # put fire everywhere + + brown_umbrella = 633 # fire rain + grey_umbrella = 634 # water rain + violet_umbrella = 635 # spinning balls rain + + clock = 636 # time travel + coffee = 641 # Speed player's movements and fire rate. + book = 642 # Produces stars the middle-top going in any direction which kill the enemy upon contact. + heart_poison = 643 # Froze the enemy and they are now killed on contact. + gold_crux = 644 # become a bubble + red_crux = 645 # become a monster + blue_crux = 646 # become a monster + extend = 647 # Give 100'000 Points to the player and finish the level. + + ring = 640 # lord of the ring + green_pepper = 648 # hot stuff! + orange_thing = 649 # slippy + aubergine = 650 # rear gear + carrot = 651 # angry monsters + rape = 652 # auto-fire + white_carrot = 653 # fly + chickpea = 654 # shield + mushroom = 655 # pinball mode + egg = 656 # players permutation + chestnut = 657 # variation of frames per second + green_thing = 658 # sugar bomb + icecream3 = 659 # \ each icecream becomes two of the + icecream4 = 660 # \ next kind, which scores more points + icecream5 = 661 # / that's a lot of points in total + icecream6 = 662 # / + softice1 = 663 # shoot farther + softice2 = 665 # shoot nearer1 + french_fries = 664 # shoot 10 lightning bubbles + custard_pie = 666 # shoot faster + lollipop = 667 # invert left and right + cocktail = 668 # short-lived bubbles + ham = 669 # wall builder + bomb = 670 # explodes the structure of the level + beer = 671 # shoot 10 water bubbles + emerald = 672 # mega points + fish2 = 673 # mega blitz + sapphire = 681 # mega points + ruby = 682 # mega points + tin = 674 # angry (double-speed) player + hamburger = 675 # shoot 10 fire bubbles + insect = 676 # walls fall down + blue_necklace = 677 # player ubiquity + violet_necklace = 679 # monster ubiquity + butterfly = 678 # lunar gravity + conch = 680 # complete water flood + yellow_sugar = 630 # from a bonbon bomb + blue_sugar = 691 # from a bonbon bomb + +class Diamonds: + # Produced from the bubbles after last enemy is killed and a chest or wand has been caught. + violet = 616 + blue = 617 + red = 618 + yellow = 619 + +class Stars: + # Effect of the book. Kill monsters on contact. + blue = nrange(940,2) + yellow = nrange(942,2) + red = nrange(944,2) + green = nrange(946,2) + magenta = nrange(948,2) + cyan = nrange(950,2) + COLORS = ['blue', 'yellow', 'red', 'green', 'magenta', 'cyan'] + +class SpinningBalls: + free = nrange(482,4) + bubbled = nrange(486,2) # NOT_USED + +class BigImages: + cyan_ice = 10 # Megabonus produced after a wand + violet_ice = 11 + peach2 = 12 + pastec2 = 13 + cream_pie = 14 + sugar_pie = 15 + violet = 16 + blue = 17 + red = 18 + yellow = 19 + blitz = 30 + hurryup = nrange(31,2) + +class birange: + def __init__(self, a,b,n): + self.a = a + self.n = n + def __getitem__(self, pn): + return range(self.a + 1000*pn, self.a + 1000*pn + self.n) + +class bidict: + def __init__(self, a,b): + self.a = a.items() + def __getitem__(self, pn): + pn *= 1000 + d = {} + for key, value in self.a: + d[key] = value + pn + return d + +class GreenAndBlue: + water_bubbles = birange(182,185,3) + fire_bubbles = birange(176,554,3) + light_bubbles = birange(179,557,3) + normal_bubbles = birange(188,195,3) + new_bubbles = birange(191,203,4) + players = birange(210,226,13) + jumping_players = birange(683,687,4) + new_players = birange(693,696,3) + numbers = birange(499,509,10) # FIXME: already seen below + comming = birange(693,696,3) + points = bidict({ + 100: 529, + 150: 530, + 200: 531, + 250: 532, + 300: 533, + 350: 534, + 500: 535, + 550: 536, + 600: 537, + 650: 538, + 700: 539, + 750: 540, + 800: 541, + 850: 542, + 900: 543, + 950: 544, + 1000: 545, + 2000: 546, + 3000: 547, + 4000: 548, + 5000: 549, + 6000: 550, + 7000: 551, + 8000: 552, + 9000: 553, + 10000: 20, + 20000: 21, + 30000: 22, + 40000: 23, + 50000: 24, + 60000: 25, + 70000: 26, + },{ + 100: 561, + 150: 562, + 200: 563, + 250: 564, + 300: 565, + 350: 566, + 500: 567, + 550: 568, + 600: 569, + 650: 570, + 700: 571, + 750: 572, + 800: 573, + 850: 574, + 900: 575, + 950: 576, + 1000: 577, + 2000: 578, + 3000: 579, + 4000: 580, + 5000: 581, + 6000: 582, + 7000: 583, + 8000: 584, + 9000: 585, + 10000: 90, + 20000: 91, + 30000: 92, + 40000: 93, + 50000: 94, + 60000: 95, + 70000: 96, + }) + gameover = birange(497,498,1) + digits = birange(499,509,10) + fish = birange(700,707,7) + +class Butterfly(Monster1): + right = [('butterfly', 'fly', n) for n in range(2)] + left = [Bonuses.insect, Bonuses.butterfly] + jailed = [('butterfly', 'jailed', n) for n in range(3)] + dead = [('butterfly', 'dead', n) for n in range(4)] + +class Sheep(Monster1): + right = [('sheep', 1, n) for n in range(4)] + left = [('sheep',-1, n) for n in range(4)] + right_angry = right + left_angry = left + |