def init(g, r, p, big=False): if not hasattr(g, 'bubble_count'): g.bubble_count = 0 if g.bubble_count >= 3: return None g.bubble_count += 1 print 'new bubble', g.bubble_count if not big: s = sprite.Sprite3(g, r, 'bubble', (0, 0, 7, 7)) else: s = sprite.Sprite3(g, r, 'big-bubble', (0, 0, 16, 16)) s.big = big s.rect.centerx = r.centerx s.rect.centery = r.centery s.groups.add('solid') s.groups.add('bubble') s.hit_groups.add('enemy') s.hit = hit g.sprites.append(s) s.loop = loop s.life = 30 s.strength = 1 s.deinit = deinit if big: s.strength = 3 s.vx = 1 if p.facing == 'left': s.vx = -1 s.vy = 0 s.rect.centerx += s.vx * (6 + s.rect.width / 2) s.rect.centery -= 4 g.game.sfx['bubble'].play() return s
def init(g, r, p): s = sprite.Sprite3(g, r, 'shoots/%s-draco-shoot' % (p.facing), (0, 0, 5, 5)) s.rect.centerx = r.centerx s.rect.centery = r.centery s.groups.add('solid') s.groups.add('enemyshoot') s.hit_groups.add('player') s.hit = hit g.sprites.append(s) s.loop = loop s.life = 70 s.strength = 3 s.damage = 1 s.vx = 1 if p.facing == 'left': s.vx = -1 s.vy = 1 s.rect.centerx += s.vx * (0 + s.rect.width / 2) s.rect.centery += 6 return s
def init(g, r, n, drone): s = sprite.Sprite3(g, r, "drone/%s-0" % drone, (0, 0, 7, 7)) s.drone = drone s.player = n s.rect.bottom = r.bottom - 32 s.rect.centerx = r.centerx s.groups.add('solid') g.sprites.append(s) s.loop = loop s.facing = "right" s.shoot = 100 s.shooting = 0 s.x_pid = PID(3.0, 0.4, 1.2) s.y_pid = PID(3.0, 0.4, 1.2) s.vx = 0 s.vy = 0 s.max_speed_x = 1.0 s.max_speed_y = 1.0 s._prev = pygame.Rect(-1, -1, 0, 0) s.standing = None return s
def init(g, r): #print 'new capsule bubble' s = sprite.Sprite3(g, r, 'captured-generic', (0, 0, 16, 16)) s.rect.centerx = r.centerx s.rect.centery = r.centery s.hit_groups.add('player') s.groups.add('capsule') s.hit = hit g.sprites.append(s) s.loop = loop s.life = 300 s.vx = (g.game.random % 10) / 10.0 - 0.5 #random.random() - 0.5 s.vy = -0.5 s.x = float(s.rect.x) #s.y = float(s.rect.y) s.carrying = [] s.prev = pygame.Rect(s.rect) g.game.sfx['capsule'].play() s.type = 'capsule' return s
def init(g, r, n, vx, *params): s = sprite.Sprite3(g, r, 'parrot/left-0', (0, 3, 24, 10)) #3 #s.rect.bottom = r.bottom s.rect.centery = r.centery s.rect.centerx = r.centerx s.groups.add('solid') s.groups.add('enemy') s.hit_groups.add('player') s.hit = hit g.sprites.append(s) s.loop = loop s.vx = vx s.vy = 0 s.facing = 'right' if s.vx < 0: s.facing = 'left' s._prev = None # pygame.Rect(s.rect) s.strength = 3 #s.standing = None s.type = 'parrot' return s
def init(g, r, n, vx, *params): s = sprite.Sprite3(g, r, 'spiner/left-0', (0, 0, 16, 16)) # s.rect.bottom = r.bottom s.rect.centery = r.centery s.rect.centerx = r.centerx s.groups.add('solid') s.groups.add('enemy') s.hit_groups.add('player') s.hit = hit g.sprites.append(s) s.loop = loop s.vx = vx s.vy = 0 s.facing = 'right' if s.vx < 0: s.facing = 'left' s._prev = None # pygame.Rect(s.rect) s.strength = 3 s.damage = 1 # s.standing = None return s
def init(g, r, p): s = sprite.Sprite3(g, r, 'shoots/%s-tower-shoot' % (p.facing), (0, 0, 13, 7)) s.rect.centerx = r.centerx s.rect.centery = r.centery s.groups.add('solid') s.groups.add('towershoot') # s.groups.add('enemy') s.hit_groups.add('player') s.hit = hit g.sprites.append(s) s.loop = loop s.life = 90 s.strength = 1 s.damage = 1 # if big: s.strength = 3 s.vx = 1 if p.facing == 'left': s.vx = -1 s.vy = 0 s.rect.centerx += s.vx * (0 + s.rect.width / 2) s.rect.centery -= 7 return s
def init(g, r, n, vx, *params): s = sprite.Sprite3(g, r, 'frog/walk-right-0', (8, 4, 8, 18)) # (1,1,22,22)) s.rect.bottom = r.bottom s.rect.centerx = r.centerx s.groups.add('solid') s.groups.add('enemy') s.hit_groups.add('player') s.hit = hit g.sprites.append(s) s.loop = loop s.next_frame = 12 s.frame = 0 s.vx = vx s.vy = 0 s.jumping = False s.walking = True # make sure this is always different at startup s._prev = None s.strength = 3 s.damage = 1 s.vy_jump = 0 s.standing = None return s
def init(g,r,p): s = sprite.Sprite3(g,r,'laser',(0,0,4,2)) s.rect.centerx = r.centerx s.rect.centery = r.centery s.groups.add('solid') s.groups.add('laser') #s.groups.add('enemy') s.hit_groups.add('player') s.hit = hit g.sprites.append(s) s.loop = loop s.life = 90 s.strength = 1 #if big: s.strength = 3 s.vx = 1 if p.facing == 'left': s.vx = -1 s.vy = 0 s.rect.centerx += s.vx*(6+s.rect.width/2) s.rect.centery -= 2 return s
def init(g, r, p): s = sprite.Sprite3(g, r, 'shoots/laser', (0, 0, 4, 2)) s.rect.centerx = r.centerx s.rect.centery = r.centery s.groups.add('solid') s.groups.add('enemyshoot') s.hit_groups.add('player') s.hit = hit g.sprites.append(s) s.loop = loop s.life = 180 s.strength = 1 s.damage = 1 s.vx = 2 if p.facing == 'left': s.vx = -2 s.vy = 0 s.rect.centerx += s.vx * (4 + s.rect.width / 2) s.rect.centery -= 0 return s
def init(g, r, n, facing='left', *params): s = sprite.Sprite3(g, r, 'shootbot-%s-0' % (facing), (0, 0, 18, 24)) s.rect.bottom = r.bottom s.rect.centerx = r.centerx s.groups.add('solid') s.groups.add('enemy') s.hit_groups.add('player') s.hit = hit g.sprites.append(s) s.loop = loop s.facing = facing s.shoot = 120 s.shooting = 0 if s.facing == 'left': s.vx = -1.0 else: s.vx = 1.0 s.vy = 0 s._prev = pygame.Rect(-1, -1, 0, 0) s.strength = 3 s.standing = None return s
def init(g, r, n, facing, *params): s = sprite.Sprite3(g, r, 'brobo-%s-0' % (facing), (0, 0, 30, 37)) s.rect.bottom = r.bottom s.rect.centerx = r.centerx s.groups.add('solid') s.groups.add('enemy') s.hit_groups.add('player') s.hit = hit g.sprites.append(s) s.loop = loop s.facing = facing #s.shoot = 0 if s.facing == 'left': s.vx = -0.2 else: s.vx = 0.2 s.vy = 0 s._prev = None #pygame.Rect(-1,-1,0,0) s.strength = 6 s.standing = None s.type = 'brobo' return s
def init(g, r, n, *params): s = sprite.Sprite3(g, r, 'fireguy-right-0', (0, 0, 14, 23)) s.rect.bottom = r.bottom s.rect.centerx = r.centerx s.groups.add('solid') s.groups.add('enemy') s.hit_groups.add('player') s.hit = hit g.sprites.append(s) s.loop = loop s.moving = 0 s.idling = 240 s.frame = 0 s.facing = 'right' s.vx = 0 s.vy = 0 s._prev = pygame.Rect(s.rect) s.strength = 3 s.standing = None s.type = 'fireguy' return s
def init(g, r, p): s = sprite.Sprite3(g, r, 'shoots/tentactulshoot', (0, 0, 8, 4)) s.rect.centerx = r.centerx s.rect.centery = r.centery s.groups.add('solid') s.groups.add('tentactulshoot') #s.groups.add('enemy') s.hit_groups.add('player') s.hit = hit g.sprites.append(s) s.loop = loop s.life = 90 s.strength = 1 #if big: s.strength = 3 s.vx = 1 if p.facing == 'left': s.vx = -2 s.vy = 0 s.rect.centerx += s.vx * (1 + s.rect.width / 2) s.rect.centery -= -7 return s
def init(g, r, n, *params): s = sprite.Sprite3(g, r, 'zombie/zombie-right-0', (0, 0, 16, 32)) s.rect.bottom = r.bottom s.rect.centerx = r.centerx s.groups.add('solid') s.groups.add('enemy') s.hit_groups.add('player') s.hit = hit g.sprites.append(s) s.loop = loop s.moving = 0 #s.idling = 240 s.idling = random.randint(120, 240) s.frame = 0 s.facing = 'right' s.vx = 0 s.vy = 0 s._prev = pygame.Rect(s.rect) s.strength = 6 s.standing = None return s
def init(g, r, n, facing='left', *params): s = sprite.Sprite3(g, r, 'zombie/walk-%s-0' % facing, (0, 0, 16, 32)) s.rect.bottom = r.bottom s.rect.centerx = r.centerx s.groups.add('solid') s.groups.add('enemy') s.hit_groups.add('player') s.hit = hit g.sprites.append(s) s.loop = loop s.next_frame = 12 s.frame = 0 s.facing = facing s.frame_speed = 10 s.speed = 2 s.vx = 1.0 if s.facing == 'left': s.vx = -s.vx else: s.vx = s.vx s.vy = 0 s.jumping = False s.walking = True # make sure this is always different at startup s._prev = None s.strength = 7 s.damage = 2 s.vy_jump = -5 s.standing = None return s
def init(g, r, p, big=False): s = sprite.Sprite3(g, r, 'fireball', (0, 0, 16, 16)) s.big = big if p.facing == 'left': s.rect.centerx = r.x + 34 - 27 s.rect.centery = r.y + 83 - 62 else: s.rect.centerx = r.right - 34 + 27 s.rect.centery = r.y + 83 - 62 s.groups.add('solid') s.groups.add('enemy') s.hit_groups.add('player') s.hit = hit g.sprites.insert(0, s) s.loop = loop s.life = 600 s.strength = 1 s.standing = None s.bounces = 3 s.vx = 0.2 if p.facing == 'left': s.vx = -0.2 s.vx += p.vx s.vy = 0 # g.game.sfx['bubble'].play() return s
def init(g, r, n, facing='left', *params): s = sprite.Sprite3(g, r, 'draco/draco-%s' % (facing), (0, 0, 10, 16)) s.rect.bottom = r.bottom s.rect.centerx = r.centerx s.groups.add('solid') s.groups.add('enemy') s.hit_groups.add('player') s.hit = hit g.sprites.append(s) s.loop = loop s.facing = facing s.shoot = 250 s.shooting = 0 if s.facing == 'left': s.vx = 0 else: s.vx = 0 s.vy = 0 s._prev = pygame.Rect(-1, -1, 0, 0) s.strength = 6 s.damage = 1 s.standing = None return s
def init(g, r, n, facing='left', *params): s = sprite.Sprite3(g, r, 'bat/fly-%s-0' % facing, (0, 0, 16, 16)) s.rect.bottom = r.bottom s.rect.centerx = r.centerx s.groups.add('solid') s.groups.add('enemy') s.hit_groups.add('player') s.hit = hit g.sprites.append(s) s.loop = loop s.next_frame = 12 s.frame = 0 s.facing = facing s.vx = 1.8 if s.facing == 'left': s.vx = -s.vx else: s.vx = s.vx s.vy = 0 s.attacking = False s.flying = True # make sure this is always different at startup s._prev = None s.strength = 6 s.damage = 1 s.vy_attack = 0 s.standing = None return s
def init(g, r, p): s = sprite.Sprite3(g, r, 'shoots/%s-wibertshoot' % p.facing, (0, 0, 5, 5)) s.rect.centerx = r.centerx s.rect.centery = r.centery s.groups.add('solid') s.groups.add('enemyshoot') s.hit_groups.add('player') s.hit = hit g.sprites.append(s) s.loop = loop s.life = 90 s.strength = 1 s.damage = 1 s.vx = 1 if p.facing == 'left': s.vx = -1 s.vy = -1.6 s.rect.centerx += s.vx * (9 + s.rect.width / 2) s.rect.centery -= 11 return s
def init(g, r, n, *params): s = sprite.Sprite3(g, r, 'ship/ship-0', (0, 0, 48, 64)) s.rect.centerx = r.centerx s.rect.centery = r.centery - (32 - 16) / 2 s.loop = loop g.sprites.insert(0, s) return s
def bub_init(g, r): s = sprite.Sprite3(g, r, 'big-shoot', (0, 0, 16, 16)) s.rect.centerx = r.centerx s.rect.centery = r.centery g.sprites.append(s) s.loop = bub_loop v = random.randint(8, 32) a = random.randint(0, 360) * 6.28 / 360 s.vx = math.sin(a) * v s.vy = math.cos(a) * v s.frame = random.randint(0, FPS * 2) return s
def init(g, r, n, hidden=False, *params): s = sprite.Sprite3(g, r, 'door-1', (0, 0, 16, 24)) #3 s.rect.centerx = r.centerx s.rect.centery = r.centery - (24 - 16) / 2 s.loop = loop s.hit = sprite_hit s.frame = 0 s.open = None s.hit_groups.add('player') s.hidden = hidden if hidden: s.image = None #s.hit = hit g.sprites.insert(0, s) return s
def init(g,r,n,*params): s = sprite.Sprite3(g,r,3,(0,0,16,16)) s.rect.bottom = r.bottom s.rect.centerx = r.centerx s.groups.add('solid') s.hit_groups.add('player') s.hit = hit g.sprites.append(s) s.loop = loop s.vx = 1 s.vy = 1 s._prev = pygame.Rect(s.rect) s.strength = 3 s.standing = None return s
def init(g, r, n, facing, *params): s = sprite.Sprite3(g, r, 'panda-%s' % (facing), (0, 0, 16, 32)) s.rect.bottom = r.bottom s.rect.centerx = r.centerx s.groups.add('solid') s.groups.add('enemy') s.hit_groups.add('player') s.hit = hit g.sprites.append(s) s.loop = loop s.vx = 0 s.vy = 0 #s._prev = pygame.Rect(s.rect) s.strength = 30000 s.standing = None return s
def init(g, r, n, *params): s = sprite.Sprite3( g, r, 'player/right', (5, 10, 9, 20)) #(0,0,19,25))#(43-14,8,28,48))#left,top,width,height s.rect.bottom = r.bottom s.rect.centerx = r.centerx s.groups.add('player') s.groups.add('solid') g.sprites.append(s) s.loop = loop s.vx = 0 s.vy = 0 s.walk_frame = 1 s.jumping = 0 s.facing = 'right' s.flash_counter = 0 s.flash_timer = 0 s.shooting = 0 s.powered_up = False if hasattr(g.game, 'powerup'): s.powered_up = g.game.powerup s.powerup_transition = 0 s.door_timer = None s.current_door = None s.door_pos = None g.player = s s.event = event s.pan = pan_screen s.damage = damage s.kill = kill s.god_mode = False s.death_counter = -1 s._prev = pygame.Rect(s.rect) s._prev2 = pygame.Rect(s.rect) s.looking = False sprite.init_bounds(g, s) sprite.init_view(g, s) sprite.init_codes(g, s) s.no_explode = False return s
def init(g, r, n, hidden=False, *params): door_type = levels.LEVELS[g.game.lcur][2] s = sprite.Sprite3(g, r, 'doors/door-close-%d' % door_type, (0, 0, 16, 32)) # 3 s.rect.centerx = r.centerx s.rect.centery = r.centery - (32 - 16) / 2 s.loop = loop s.hit = sprite_hit s.open = None s.hit_groups.add('player') s.hidden = hidden if hidden: s.image = None # s.hit = hit g.sprites.insert(0, s) s.door_type = door_type return s
def init(g, r, n, vx, vy): platform_type = levels.LEVELS[g.game.lcur][2] x, y = r.centerx / TW, r.centery / TH code = g.data[2][y][x] min_x = x max_x = x for dx in xrange(1, 4): if g.data[2][y][x + dx] != code: break max_x = x + dx for dx in xrange(-1, -4, -1): if g.data[2][y][x + dx] != code: break min_x = x + dx iy = y for ix in xrange(min_x, max_x + 1): if (ix, iy) in g.codes: return w, h = (max_x - min_x + 1) * TW, TH r = pygame.Rect(min_x * TW, iy * TH, w, h) s = sprite.Sprite3(g, r, 'platform/%d-%d' % ((max_x - min_x + 1), platform_type), (0, 0, w, h)) # s.rect.bottom = r.bottom # s.rect.centerx = r.centerx s.groups.add('solid') # s.groups.add('platform') s.hit_groups.add('player') s.hit = hit g.sprites.append(s) s.loop = loop s.vx = vx s.vy = vy s._prev = None s.carrying = [] return s
def init(g, r, n, *params): s = sprite.Sprite3(g, r, 'blob', (0, 0, 13, 11)) s.rect.bottom = r.bottom s.rect.centerx = r.centerx s.groups.add('solid') s.groups.add('enemy') s.hit_groups.add('player') s.hit = hit g.sprites.append(s) s.loop = loop s.vx = 0 s.vy = 0 s.next_jump = 0 # next_jump = 0 s._prev = pygame.Rect(s.rect) s.strength = 3 s.standing = None return s
def init(g, r, n, *params): s = sprite.Sprite3(g, r, 'boss/left-0', (27, 62, 75, 39)) #3 #s.rect.bottom = r.bottom s.rect.centery = r.centery s.rect.centerx = r.centerx #s.groups.add('solid') s.groups.add('boss') #s.groups.add('enemy') s.hit_groups.add('capsule') s.hit = hit g.sprites.append(s) s.loop = loop g.boss = s s.vx = -0.7 s.vy = 0 s.auto_gc = False s.phase = 1 s.phase_frames = 0 s.taking_damage = 0 s.dying = None s.dead = False s.drop = 120 s.facing = 'right' if s.vx < 0: s.facing = 'left' s._prev = None # pygame.Rect(s.rect) s.strength = 6 s.type = 'boss' #s.standing = None return s