Beispiel #1
0
 def start(action, element):
     channels_up = [char.status(e + '_channel') for e in char.available_elements()].count(True)
     if (channels_up < 3 and char.skill_available('simultaneity')
             and actions.simultaneity.possible()):
         p.act(actions.simultaneity)
     else:
         p.act(actions.open_channel, element)
     p.finish_action(action)
Beispiel #2
0
 def on_defence_list_captured(action, defences):
     if char.skill_available("channel", "elementalism"):
         action.state = "capturing_channel_list"
         if actions.channel_list.possible():
             p.act(actions.channel_list)
         else:
             p.echo("System initialization failed because channel list couldn't be received.")
             p.finish_action(action)
     else:
         action.finish()
         p.finish_action(action)
Beispiel #3
0
def choose_offensive_action(target):
    if char.race == 'Dragon':
        return (actions.gut, target)
    elif char.class_ == 'Sylvan':
        return (actions.thornrend if char.status('viridian')
                else actions.firelash, target)
    elif char.class_ == 'Serpent':
        if char.skill_available('garrote'):
            return (actions.garrote, target)
        else:
            assert char.skill_available('bite')
            venom = 'sumac' if not char.skill_available('camus', 'venom') else 'camus'
            return (actions.venom_bite, venom, target)
    elif char.class_ == 'Shaman':
        return (actions.curse, 'bleed', target)
    elif char.class_ == 'Blademaster':
        return (actions.drawslash, target)
    elif char.class_ == 'Alchemist':
        return (actions.educe_iron, target)
    return None
Beispiel #4
0
def choose_defensive_action():
    if char.skill_available('reflection'):
        return (actions.reflection, 'me')
    return None