def create_flea(x=0, y=0, hazard=False): if hazard: _group = 'hazards' else: _group = 'enemies' _entity = create(sprite_name='diamond_body.png', group=_group, x=x, y=y, acceleration=.4, speed=30, max_velocity=30, turn_rate=0.8) _entity['current_target'] = None _entity['fire_rate'] = 0 _entity['fire_rate_max'] = 20 _entity['weapon_id'] = weapons.create(_entity['_id'], rounds=3, recoil_time=15, speed=30, tracking=False)['_id'] effects.create_image(_entity['position'][0], _entity['position'][1], 'diamond_turret.png', parent_entity=_entity) effects.create_image(_entity['position'][0], _entity['position'][1], 'diamond_drive.png', parent_entity=_entity, rotate_by=3) entities.register_event(_entity, 'moved', set_direction) entities.register_event(_entity, 'tick', tick_energy_ship) entities.register_event(_entity, 'tick', tick_flea) entities.register_event(_entity, 'tick', tick_turret) entities.register_event(_entity, 'shoot', lambda entity: entities.trigger_event(entities.get_entity(_entity['weapon_id']), 'shoot')) return _entity
def load_map(name): _map = {} with open('%s.dat' % name, 'r') as _file: _x = 0 _y = 0 for line in _file.readlines(): _x = 0 for tile in [int(c) for c in line if not c == '\n']: _map['%s,%s' % (_x*100, _y*100)] = {'solid': False} if tile == 1: _map['%s,%s' % (_x*100, _y*100)]['solid'] = True _tile = entities.create_entity('tiles_foreground') _map['%s,%s' % (_x*100, _y*100)]['tile'] = _tile['_id'] _sprite = effects.create_image(_x*100, _y*100, 'wall_full.png') _id = _sprite['_id'] entities.register_event(_tile, 'delete', lambda _entity: entities.delete_entity_via_id(_id)) _sprite['sprite'].image.anchor_x = 0 _sprite['sprite'].image.anchor_y = 0 _x += 1 _y += 1 return _map
def create_planet(): for entity_id in entities.get_sprite_groups(['items', 'planets']): entities.delete_entity(entities.ENTITIES[entity_id]) if LEVEL == 1: _planet = entities.create_entity(group='planets') sprites.register_entity(_planet, 'effects_foreground', 'planet.png', scale=1.0) movement.register_entity(_planet, x=worlds.get_size()[0]/2, y=worlds.get_size()[1]/2, speed=0) effects.create_image(_planet['position'][0], _planet['position'][1], 'ring.png', background=2, scale=2, parent_entity=_planet) items.create_gravity_well(x=worlds.get_size()[0]/2, y=worlds.get_size()[1]/2, strength=0.25) elif LEVEL == 2: ships.create_ivan_large(x=worlds.get_size()[0]/2, y=worlds.get_size()[1]/2) items.create_gravity_well(x=worlds.get_size()[0]/2, y=worlds.get_size()[1]/2, min_distance=1000, kill_engines=False, strength=0.75) return True
def create_eyemine(x=0, y=0, max_explode_velocity=40): _entity = create(x=x, y=y, group='hazards', sprite_name='eyemine_body.png', speed=35, acceleration=0.1, max_velocity=35) _entity['max_explode_velocity'] = max_explode_velocity effects.create_image(_entity['position'][0], _entity['position'][1], 'eyemine_subbody.png', parent_entity=_entity, rotate_by=3, background=True) effects.create_image(_entity['position'][0], _entity['position'][1], 'eyemine_eye1.png', parent_entity=_entity, background=False) effects.create_image(_entity['position'][0], _entity['position'][1], 'eyemine_eye2.png', parent_entity=_entity, rotate_with_parent=True, background=False) entities.register_event(_entity, 'tick', tick_eyemine) entities.register_event(_entity, 'hit', lambda _entity, target_id, **kwargs: target_id in entities.ENTITIES and entities.trigger_event(_entity, 'set_direction', direction=numbers.direction_to(_entity['position'], entities.get_entity(target_id)['position']))) entities.register_event(_entity, 'hit', lambda _entity, target_id, **kwargs: ai.track_target(_entity, target_id)) entities.register_event(_entity, 'hit_edge', lambda entity: entities.trigger_event(entity, 'kill')) ai.guard(_entity) return _entity
def create_ivan_large(x=0, y=0): _entity = create(sprite_name='boss3.png', group='hazards', scale=2.0, x=x, y=y, acceleration=.4, speed=0, max_velocity=0, turn_rate=0.8, death_time=40, hp=1000) _entity['current_target'] = None _entity['fire_rate'] = 0 _entity['fire_rate_max'] = 20 _entity['collision_radius'] = 1000 _entity['cycle'] = 'shoot' _entity['shoot_cycle_max'] = 3 _entity['shoot_cycle'] = 3 _entity['spawn_cycle_max'] = 5 _entity['spawn_cycle'] = 5 _entity['warmup_cycles'] = 1 _entity['weapon_id'] = weapons.create(_entity['_id'], rounds=25, recoil_time=1, reload_time=30, damage_radius=40, speed=140, missile=False, bullet=True)['_id'] timers.register_entity(_entity) effects.create_image(_entity['position'][0], _entity['position'][1], 'boss3_core.png', scale=2.0, parent_entity=_entity, background=False) effects.create_image(_entity['position'][0], _entity['position'][1], 'boss3_shield1.png', scale=2.0, rotate_by=-1, parent_entity=_entity, background=False) effects.create_image(_entity['position'][0], _entity['position'][1], 'boss3_shield2.png', scale=2.0, rotate_by=0.5, parent_entity=_entity, background=False) entities.trigger_event(_entity, 'create_timer', repeat=-1, time=100, repeat_callback=lambda entity: entities.trigger_event(_entity, 'shoot')) entities.register_event(_entity, 'moved', set_direction) entities.register_event(_entity, 'kill', boss_victory) entities.register_event(_entity, 'dying', boss_dying) entities.register_event(_entity, 'explode', boss_explode) entities.register_event(_entity, 'shoot', ivan_cycles) return _entity