예제 #1
0
def used(bot, trigger):
    """Fetches a used trigger from the Weaver Dice trigger spreadsheet."""
    
    #Use the provided trigger if there is one
    if trigger.group(2):
        #Make sure the trigger number a valid integer
        if not is_integer(trigger.group(2)):
            return say(bot,"Please provide a valid trigger number.")        
        
        #Make sure the trigger number is in range
        trigger_index = int(trigger.group(2))
        if trigger_index>len(shared_var['used_list'])+1 or trigger_index < 2:
            return say(bot,"Used trigger '"+str(trigger_index)+"' is out of range.")

        t = shared_var['used_list'][trigger_index-2]
        return mute_say(bot, trigger, trigger.nick + ' ' + t['prefix'] + t['text'], 6)
    else:
        if trigger.is_privmsg is False:
            delay=get_delay_timer('trigger')
            if delay>0:
                return say(bot,"ZzZz...["+str(delay)+"s]")
            set_delay_timer('trigger',30)
    
        t = random.choice([x for x in shared_var['used_list'] if x['blank'] == False])
        return mute_say(bot, trigger, trigger.nick + ' ' + t['prefix'] + t['text'], 6)
예제 #2
0
def luck_specific(bot, trigger):
    """Returns a power/life perk or flaw."""
    options = [
        'life perk', 'life flaw', 'life advantage', 'life disadvantage',
        'power perk', 'power flaw', 'power advantage', 'power disadvantage',
        'perk life', 'perk power', 'advantage life', 'advantage power',
        'flaw life', 'flaw power', 'disadvantage life', 'disadvantage power',
        'life', 'power', 'perk', 'flaw', 'advantage', 'disadvantage'
    ]
    string = trigger.group(1).lower()

    if trigger.group(2):
        string = string + ' ' + trigger.group(2).lower()

    for i in range(0, len(options)):
        if string.startswith(options[i]):
            option = options[i]
            break

    string = string[len(option):].strip()

    option = option.replace('disadvantage', 'flaw')
    option = option.replace('advantage', 'perk')
    option = option.title()

    if option.startswith("Perk") or option.startswith("Flaw"):
        option = ' '.join(reversed(option.split()))

    if string:
        if is_integer(string):
            if option in [
                    'Life Perk', 'Life Flaw', 'Power Perk', 'Power Flaw'
            ]:
                data = int(string)
                if data > 1 and data < 80:
                    return say(
                        bot, trigger.nick + ' ' +
                        shared_var['luck_list'][option][data - 2]['text'], 8)
                else:
                    return say(bot, 'Please provide a number 2 - 79.', 3)
            else:
                return say(bot, 'Please be more specific.', 3)
        else:
            return luck_keyword(bot, trigger, string, option)
    else:
        if option == 'Perk':
            option = random.choice(['Life Perk', 'Power Perk'])
        elif option == 'Flaw':
            option = random.choice(['Life Flaw', 'Power Flaw'])
        elif option == 'Life':
            option = random.choice(['Life Perk', 'Life Flaw'])
        elif option == 'Power':
            option = random.choice(['Power Perk', 'Power Flaw'])
        selection = random.choice([
            x for x in shared_var['luck_list'][option] if x['blank'] == False
        ])['text']
        return mute_say(bot, trigger, trigger.nick + ' ' + selection, 8)
예제 #3
0
def luck(bot, trigger):
    """Rolls 2dx (default 1d4, 1d4) and fetches the relevant perks and/or flaws from the detail sheet."""

    die = [4, 4]
    if trigger.group(2):
        if is_integer(trigger.group(2)):
            sides = int(trigger.group(2))
            die = [4, sides]
        else:
            return luck_keyword(bot, trigger)
        if (sides < 4):
            return say(bot, "The dice must have at least 4 sides.")

    delay = get_delay_timer('luck')
    if delay > 0:
        return say(bot, "ZzZz...[" + str(delay) + "s]")
    set_delay_timer('luck', 15)

    result = []
    roll = []
    for x in range(0, 2):
        selection = ['None'] * die[x]
        selection[0] = 'Life Flaw'
        selection[1] = 'Power Flaw'
        selection[die[x] - 2] = 'Life Perk'
        selection[die[x] - 1] = 'Power Perk'
        r = random.randint(1, die[x])
        roll.append(str(r) + "/" + str(die[x]))
        if selection[r - 1] is not 'None':
            selection = random.choice([
                x for x in shared_var['luck_list'][selection[r - 1]]
                if x['blank'] == False
            ])['text']
            result.append(selection)

    roll_string = '[' + ', '.join(roll) + ']'
    if result:
        result[0] = trigger.nick + ' ' + roll_string + ' ' + result[0]
        mute_say(bot, trigger, result, 20)
    else:
        return say(bot, trigger.nick + ' ' + roll_string + ' [None]')
예제 #4
0
def luck_keyword(bot, trigger, keyword=None, filter=None):
    if not keyword:
        keyword = trigger.group(2).lower()
    keys = shared_var['re_delimiters'].split(keyword)

    #Search For Exact Keyword
    response = None
    if not response and filter in [None, 'Life', 'Perk', 'Life Perk']:
        response = next((x for x in shared_var['luck_list']['Life Perk']
                         if x['keyword'] == keyword), None)
    if not response and filter in [None, 'Power', 'Perk', 'Power Perk']:
        response = next((x for x in shared_var['luck_list']['Power Perk']
                         if x['keyword'] == keyword), None)
    if not response and filter in [None, 'Life', 'Flaw', 'Life Flaw']:
        response = next((x for x in shared_var['luck_list']['Life Flaw']
                         if x['keyword'] == keyword), None)
    if not response and filter in [None, 'Power', 'Flaw', 'Power Flaw']:
        response = next((x for x in shared_var['luck_list']['Power Flaw']
                         if x['keyword'] == keyword), None)

    #Search For Partial Keyword
    if not response and filter in [None, 'Life', 'Perk', 'Life Perk']:
        response = next((x for x in shared_var['luck_list']['Life Perk']
                         if any(key in x['keyword'] for key in keys)), None)
    if not response and filter in [None, 'Power', 'Perk', 'Power Perk']:
        response = next((x for x in shared_var['luck_list']['Power Perk']
                         if any(key in x['keyword'] for key in keys)), None)
    if not response and filter in [None, 'Life', 'Flaw', 'Life Flaw']:
        response = next((x for x in shared_var['luck_list']['Life Flaw']
                         if any(key in x['keyword'] for key in keys)), None)
    if not response and filter in [None, 'Power', 'Flaw', 'Power Flaw']:
        response = next((x for x in shared_var['luck_list']['Power Flaw']
                         if any(key in x['keyword'] for key in keys)), None)

    if not response:
        if not filter:
            return say(bot, "Invalid luck keyword.")
        else:
            return say(bot, "Invalid " + filter + " keyword.")
    else:
        return mute_say(bot, trigger, trigger.nick + ' ' + response['text'], 8)