mirror of
https://github.com/abakh/nbsdgames.git
synced 2025-02-02 15:07:27 -05:00
398 lines
10 KiB
Python
398 lines
10 KiB
Python
|
|
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 list(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 list(range(self.a + 1000*pn, self.a + 1000*pn + self.n))
|
|
|
|
class bidict:
|
|
def __init__(self, a,b):
|
|
self.a = list(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
|
|
|