コード例 #1
0
ファイル: go_to_canteen.py プロジェクト: kodo-pp/underkate
async def main(*args, root, **kwargs):
    game = get_game()
    room = game.overworld.room
    game.overworld.freeze()
    room.named_objects['grumpylook'].kill()
    texture = AnimatedTexture(
        [load_texture(root / 'grumpylook' / 'overworld.png')], fps=1)

    grumpy = TexturedWalkingSprite(
        pos=Vector(840, 360),
        left=texture,
        right=texture,
        front=texture,
        back=texture,
        speed=200.0,
    )
    room.spawn(grumpy)

    await display_text(load_text('overworld/lyceum_hall/grumpylook/wait/1'))
    await grumpy.walk_x(-620)
    await display_text(load_text('overworld/lyceum_hall/grumpylook/wait/2'))
    await grumpy.walk_x(-240)
    grumpy.kill()
    get_state()['grumpylook_met'] = True
    game.overworld.unfreeze()
コード例 #2
0
async def main(*, root, script, **kwargs):
    global DEBUG_SKIP
    get_game().overworld.freeze()

    if not DEBUG_SKIP:
        await display_text(
            load_text('overworld/lyceum_entrance/flate-interact/1-crying'))
        await sleep(2)
    if not DEBUG_SKIP:
        await display_text(
            load_text(
                'overworld/lyceum_entrance/flate-interact/2-flate-speech'))

    animation = load_animated_once_texture(root / 'flate' / 'disappear',
                                           scale=2)
    flate = get_game().overworld.room.named_objects['flate']
    flate.texture = animation
    event_id, callback = make_callback()
    animation.on_finish = callback
    await wait_for_event(event_id)
    flate.kill()

    cariel_overworld = TexturedWalkingSprite(
        pos=Vector(400, -170),
        left=load_animated_texture(root / 'cariel' / 'left', scale=2),
        right=load_animated_texture(root / 'cariel' / 'right', scale=2),
        front=load_animated_texture(root / 'cariel' / 'front', scale=2),
        back=load_animated_texture(root / 'cariel' / 'back', scale=2),
        speed=120.0,
    )
    get_game().overworld.room.spawn(cariel_overworld)
    await cariel_overworld.walk_y(260)

    if not DEBUG_SKIP:
        await display_text(
            load_text(
                'overworld/lyceum_entrance/flate-interact/3-cariel-pre-fight'))
    await fight(load_enemy_battle_by_name('itt_test_cariel_tutorial'))

    if not DEBUG_SKIP:
        if get_state()['itt_test_tutorial'] == 'dead':
            await display_text(
                load_text(
                    'overworld/lyceum_entrance/flate-interact/4-cariel-post-fight-kill'
                ))
        else:
            await display_text(
                load_text(
                    'overworld/lyceum_entrance/flate-interact/4-cariel-post-fight-spare'
                ))

    await cariel_overworld.walk_y(-260)
    cariel_overworld.kill()

    get_game().overworld.unfreeze()
コード例 #3
0
ファイル: presentation.py プロジェクト: kodo-pp/underkate
async def main(*, root, **kwargs):
    get_game().overworld.freeze()
    await display_text(load_text('overworld/lyceum_5_assembly_hall/1'))
    await fight(load_enemy_battle_by_name('globby'))
    await display_text(load_text('overworld/lyceum_5_assembly_hall/2'))
    await fight(load_enemy_battle_by_name('algebroid'))
    await fight(load_enemy_battle_by_name('geoma'))
    await display_text(load_text('overworld/lyceum_5_assembly_hall/3'))
    await fight(load_enemy_battle_by_name('crier'), on_before_finish = lambda: spawn_water(root))
    await display_text(load_text('overworld/lyceum_5_assembly_hall/4'))
    get_state()['lyceum_presentation_watched'] = True
    get_game().overworld.unfreeze()
コード例 #4
0
async def buy_item(item_name: str, price: int):
    item = get_item_by_name(item_name)
    state = get_state()
    if state['player_money'] < price:
        await display_text(load_text('helper/not_enough_money'))
        return
    inventory = get_inventory()
    # TODO: handle the case of full inventory
    await display_text(
        load_text('helper/item_bought', fmt={'item': item.inline_name}))
    give(inventory, item_name)
    state['player_money'] -= price
コード例 #5
0
 async def interact_jump(self):
     if self._has_jumped:
         await display_text(
             DisplayedText([
                 TextPage("... but Sportick is afraid that you can get an injury"),
             ])
         )
     elif self._has_run:
         await display_text(
             DisplayedText([
                 TextPage("... and your attempt is sucessful"),
                 TextPage("You lift yourself up, into the air"),
                 TextPage("Wow, you can jump really high!"),
                 TextPage("You remain in the air for a moment..."),
                 TextPage("But then it's time to fall down"),
                 TextPage("Regretting about the height of your jump, you begin your descent"),
                 TextPage("..."),
                 TextPage("Ouch!"),
             ])
         )
         self._has_jumped = True
         await display_text(load_text('fight/lyceum/sportick/player_jumped'))
     else:
         await display_text(
             DisplayedText([
                 TextPage("... but you haven't warmed up enough"),
             ])
         )
コード例 #6
0
ファイル: grumpylook.py プロジェクト: kodo-pp/underkate
async def main(root, **kwargs):
    overworld = get_game().overworld
    overworld.freeze()

    await display_text(load_text('overworld/lyceum_2_left/grumpylook'))

    room = overworld.room

    grumpylook_object = room.named_objects['grumpylook']
    pos = grumpylook_object.pos
    grumpylook_object.kill()
    del grumpylook_object

    player = room.player
    texture = AnimatedTexture(
        [load_texture(root / 'grumpylook' / 'overworld.png')], fps=1)
    grumpylook = TexturedWalkingSprite(
        pos=pos,
        left=texture,
        right=texture,
        front=texture,
        back=texture,
        speed=player.speed,
    )
    room.spawn(grumpylook)

    await gather(grumpylook.walk_x(-240), player.walk_x(-240))
    get_state()['grumpylook_met_at_floor2'] = True
    overworld.load_room('lyceum_5_left')
    overworld.unfreeze()
コード例 #7
0
async def branch_genocide():
    await display_text(load_text('overworld/lyceum_3_cariel/genocide'))
    await fight(
        load_enemy_battle_by_name('cariel_genocide'),
        on_before_finish=remove_cariel,
        warning_pos=get_game().overworld.room.state['cariel_sprite'].pos,
    )
コード例 #8
0
ファイル: grumpylook.py プロジェクト: kodo-pp/underkate
async def main(root, **kwargs):
    overworld = get_game().overworld
    overworld.freeze()

    await display_text(load_text('overworld/lyceum_5_left/grumpylook'))

    room = overworld.room

    grumpylook_object = room.named_objects['grumpylook']
    pos = grumpylook_object.pos
    grumpylook_object.kill()
    del grumpylook_object

    texture = AnimatedTexture(
        [load_texture(root / 'grumpylook' / 'overworld.png')], fps=1)
    grumpylook = TexturedWalkingSprite(
        pos=pos,
        left=texture,
        right=texture,
        front=texture,
        back=texture,
        speed=280,
    )
    room.spawn(grumpylook)

    await grumpylook.walk_x(700)
    grumpylook.kill()
    get_state()['grumpylook_gone'] = True
    overworld.unfreeze()
コード例 #9
0
ファイル: flate.py プロジェクト: kodo-pp/underkate
async def main(*, root, **kwargs):
    overworld = get_game().overworld
    room = overworld.room
    overworld.freeze()

    await sleep(0.8)
    old_flate = room.named_objects['flate']
    old_flate.texture = load_texture(root / 'flate' / 'overworld_neutral.png',
                                     scale=2)
    await sleep(0.8)

    route = determine_route()
    if route not in ['cheater', 'pacifist', 'neutral', 'genocide']:
        raise NotImplementedError(f'Unknown route: {repr(route)}')
    text_name = f'overworld/lyceum_3_mid/flate/{route}'
    await display_text(load_text(text_name))

    flate_texture = AnimatedTexture([old_flate.texture], fps=1)

    flate = TexturedWalkingSprite(
        pos=old_flate.pos,
        left=flate_texture,
        right=flate_texture,
        front=flate_texture,
        back=flate_texture,
        speed=240,
    )
    room.spawn(flate)
    old_flate.kill()
    await flate.walk_x(-500)
    get_state()['lyceum_3_flate_met'] = True
    overworld.unfreeze()
コード例 #10
0
ファイル: take_ruler.py プロジェクト: kodo-pp/underkate
async def main(*a, **k):
    await display_text(load_text('overworld/lyceum_2_geoma/ruler'))
    give(get_inventory(), 'ruler')
    named_objects = get_game().overworld.room.named_objects
    named_objects['ruler'].kill()
    del named_objects['ruler']
    get_state()['took_ruler'] = True
コード例 #11
0
ファイル: run.py プロジェクト: kodo-pp/underkate
 async def process_enemy_attack(self):
     await super().process_enemy_attack()
     self._num_attacks += 1
     if self._num_attacks == 3:
         flate_texture = AnimatedTexture(
             [
                 load_texture(Path('.') / 'assets' / 'textures' / 'flate' /
                              'fight.png',
                              scale=4),
             ],
             fps=1,
         )
         flate = TexturedWalkingSprite(
             pos=Vector(-100, 100),
             left=flate_texture,
             right=flate_texture,
             front=flate_texture,
             back=flate_texture,
             speed=200.0,
         )
         self.spawn(flate)
         await flate.walk_x(300.0)
         await display_text(
             load_text('fight/lyceum/literallia/flate_intervention'))
         await flate.walk_x(-300.0)
         flate.kill()
         give(get_inventory(), 'nonsense')
コード例 #12
0
ファイル: sportick.py プロジェクト: kodo-pp/underkate
async def main(**kwargs):
    get_game().overworld.freeze()
    await display_text(load_text('overworld/lyceum_1_sportick/sportick'))
    await fight(load_enemy_battle_by_name('sportick'),
                on_before_finish=remove_sportick)
    get_state()['sportick_fought'] = True
    get_state()['lyceum_staircase_unlocked'] = True
    get_game().overworld.unfreeze()
コード例 #13
0
ファイル: candies.py プロジェクト: kodo-pp/underkate
async def main(*args, **kwargs):
    get_game().overworld.freeze()
    await display_text(load_text('overworld/lyceum_1_canteen/vendors/1'))
    menu = ShopMenu()
    choice = await menu.choose()
    if choice == 'Yes':
        await buy_item('candy', price=3)
    get_game().overworld.unfreeze()
コード例 #14
0
async def main(*, root, **kwargs):
    overworld = get_game().overworld
    if get_state()['lyceum_elevator_used']:
        overworld.freeze()
        await display_text(load_text('overworld/lyceum_5_right/elevator_1'))
        overworld.unfreeze()
        return

    overworld.freeze()
    elevator_open_texture = load_texture(root / 'elevator_open.png')
    elevator_open_sprite = TexturedSprite(pos=Vector(619, 126),
                                          texture=elevator_open_texture)
    overworld.room.spawn(elevator_open_sprite)
    await sleep(1)
    await display_text(load_text('overworld/lyceum_5_right/elevator_enter'))
    get_state()['lyceum_elevator_used'] = True
    overworld.load_room('lyceum_1_right')
    overworld.unfreeze()
コード例 #15
0
ファイル: run.py プロジェクト: kodo-pp/underkate
 async def run(self):
     if not DEBUG_SKIP:
         await display_text(
             load_text('fight/pre-lyceum/itt_test_cariel_tutorial'))
     menu = self.get_main_menu()
     while True:
         choice = await menu.choose()
         action = await self.get_action_for_choice(choice)
         if action is not None:
             await action()
             break
     get_event_manager().raise_event('fight_finished')
コード例 #16
0
ファイル: money.py プロジェクト: kodo-pp/underkate
async def pay(coins: int):
    get_state()['player_money'] += coins
    await display_text(load_text('helper/got_money', fmt={'coins':
                                                          str(coins)}))
コード例 #17
0
 async def on_spare(self):
     await display_text(load_text('fight/lyceum/sportick/after_spare/1'))
     await self._become_grumpylook()
     await display_text(load_text('fight/lyceum/sportick/after_spare/2'))
     await self._move_grumpylook_away()
     await super().on_spare()
コード例 #18
0
ファイル: run.py プロジェクト: kodo-pp/underkate
 async def use_weapon(self, weapon):
     await super().use_weapon(weapon)
     if weapon.name == 'nonsense' and not self._can_spare:
         await display_text(load_text('fight/lyceum/literallia/phd'))
         self._can_spare = True
コード例 #19
0
 async def on_hit(self, killed):
     await super().on_hit(killed)
     if not killed:
         return
     self.enemy.name = 'Grumpylook'
     await display_text(load_text('fight/lyceum/sportick/after_fight'))
コード例 #20
0
async def branch_neutral():
    await display_text(load_text('overworld/lyceum_3_cariel/neutral'))
    await fight(load_enemy_battle_by_name('cariel'),
                on_before_finish=remove_cariel)