示例#1
0
def cast_heal(player, amount=config.HEALING_POTION_AMOUNT):
    if player.fighter.hp == player.fighter.max_hp:
        log.add_message('Already at full health')
        return 'cancelled'

    log.add_message('You feel much better!')
    actions.heal(player.fighter, amount)
示例#2
0
def pick_up_item(player, item):
    if len(player.inventory) >= player.inventory_size:
        log.add_message("Inventory is full!", libtcodpy.light_red)
    else:
        player.inventory.append(item)
        player.current_map.map_entities.remove(item)
        log.add_message("Picked up " + item.name, libtcodpy.light_green)
示例#3
0
def use(player, entity):
    if entity.item.use_function is None:
        log.add_message(entity.name + ' cannot be used.')
    elif entity.item.use_function(player) != 'cancelled':
        if entity.item.count > 1:
            entity.item.count -= 1
        else:
            player.inventory.remove(entity)
示例#4
0
    def attack(self, target):
        damage = self.power - target.fighter.defence

        if damage > 0:
            target.fighter.take_damage(damage)
        else:
            log.add_message(self.owner.name.capitalize() + ' attacks ' +
                            target.name + ' but it has no effect!')
示例#5
0
def cast_lightning(player):
    monster = _closest_monster(player, config.LIGHTNING_RANGE)
    if monster is None:
        log.add_message('No enemy in range', config.COLOR_ERROR_MESSAGE)
        return 'cancelled'

    log.add_message('Lightning strikes ' + monster.name + ' for ' + str(config.LIGHTNING_DAMAGE) + ' damage',
                    config.COLOR_MAGIC_MESSAGE)
    actions.inflict_damage(player, monster.fighter, config.LIGHTNING_DAMAGE)
示例#6
0
def attack(fighter, target):
    damage = fighter.power - target.fighter.defence

    if damage >= 0:
        log.add_message(fighter.owner.name.capitalize() + ' attacks ' +
                        target.name + ' for ' + str(damage) + ' hit points.')
        inflict_damage(fighter.owner, target.fighter, damage)
    else:
        log.add_message(fighter.owner.name.capitalize() + ' attacks ' +
                        target.name + ' but it has no effect!')
示例#7
0
def inflict_damage(actor, fighter, damage):
    if damage > 0:
        fighter.hp -= damage

        if fighter.hp <= 0:
            log.add_message(actor.name.capitalize() + ' kills ' +
                            fighter.owner.name.capitalize() + '!')
            dfunction = fighter.death_function
            if dfunction is not None:
                dfunction(fighter.owner)
示例#8
0
def cast_fireball(player):
    log.add_message('Left-click to target or right-click to cancel', config.COLOR_INFO_MESSAGE)
    (x, y) = _target_tile(player)
    if x is None:
        log.add_message('Spell cancelled', config.COLOR_ERROR_MESSAGE)
        return 'cancelled'
    log.add_message('Your fireball explodes')

    for entity in player.current_map.map_entities:
        if entity.distance(x, y) <= config.FIREBALL_RADIUS and entity.fighter:
            log.add_message(entity.name + ' takes ' + str(config.FIREBALL_DAMAGE) + ' damage',
                            config.COLOR_DAMAGE_MESSAGE)
            entity.fighter.take_damage(config.FIREBALL_DAMAGE)
示例#9
0
文件: vault.py 项目: brewerdave/vault
def new_game():
    fighter_component = components.Fighter(hp=30,
                                           defence=2,
                                           power=5,
                                           death_function=player_death)
    player = components.Entity(0,
                               0,
                               'player',
                               config.TILE_PLAYER,
                               libtcodpy.white,
                               is_walkable=False,
                               fighter=fighter_component)
    player.inventory = []
    player.inventory_size = 26
    player.game_state = 'playing'
    log.init()
    log.add_message("You awaken in a vault.")
    player.current_map = mapmaker.make_map(player)
    renderer.clear_console()

    return player
示例#10
0
文件: vault.py 项目: brewerdave/vault
def player_death(player):
    log.add_message('You died!')
    player.game_state = 'dead'

    player.symbol = '%'
    player.symbol_color = libtcodpy.dark_red