def _dragonseed_ticker(ticker): if ticker.ticks >= ticker.max_ticks: ticker.dead = True ui.message("The dragonweed sapling matures.", libtcod.dark_chartreuse) x = ticker.seed.x y = ticker.seed.y ticker.seed.destroy() for obj in main.get_objects(x, y, lambda o: o.blocks): t = main.find_closest_open_tile(x, y) obj.set_position(t[0], t[1]) common.summon_ally('monster_dragonweed', 10 + libtcod.random_get_int(0, 0, 20), x, y)
def shimmering_swords(actor, target, context): import pathfinding sp = actor.fighter.spell_power(context['element']) adjacent = [] for tile in main.adjacent_tiles_diagonal(actor.x, actor.y): if not main.is_blocked( tile[0], tile[1], movement_type=pathfinding.FLYING): adjacent.append(tile) for i in range(context['sword_count']): if len(adjacent) < 1: break summon_pos = adjacent[libtcod.random_get_int(0, 0, len(adjacent) - 1)] common.summon_ally( 'monster_shimmering_sword', context['duration_base'] + main.roll_dice('1d%d' % sp), summon_pos[0], summon_pos[1]) adjacent.remove(summon_pos)
def summon_arcane_construct(actor, target, context): common.summon_ally( 'monster_arcane_construct', duration=context['duration_base'] + main.roll_dice('1d%d' % actor.fighter.spell_power(context['element']), normalize_size=4))
def summon_lifeplant(actor, target, context): return common.summon_ally( 'monster_lifeplant', context['duration_base'] + main.roll_dice(context['duration_variance']))
def summon_elemental(actor, target, context): return common.summon_ally( context['summon'], context['duration_base'] + main.roll_dice(context['duration_variance']))
def summon_guardian_angel(actor, target, context): x,y = target common.summon_ally('monster_guardian_angel', 30 + libtcod.random_get_int(0, 0, 15), x, y) ui.message('Your prayers have been answered!',libtcod.light_blue)