예제 #1
0
def gen_scavenge_captcha(n=0, user_data=None):
    captcha_length = math.ceil(n / 3)

    return ewutils.generate_captcha(length=captcha_length, user_data=user_data)
예제 #2
0
def create_mining_event(cmd):
    randomn = random.random()
    time_now = int(time.time())
    user_data = EwUser(member=cmd.message.author)
    mine_district_data = EwDistrict(district=user_data.poi,
                                    id_server=user_data.id_server)

    life_states = [ewcfg.life_state_enlisted, ewcfg.life_state_juvenile]
    num_miners = len(
        mine_district_data.get_players_in_district(life_states=life_states,
                                                   ignore_offline=True))

    common_event_chance = 0.7  # 7/10
    uncommon_event_chance = 0.3  # 3/10
    rare_event_chance = 0.1 / num_miners  # 1/10 for 1 miner, 1/20 for 2 miners, etc.

    common_event_triggered = False
    uncommon_event_triggered = False
    rare_event_triggered = False

    # This might seem a bit confusing, so let's run through an example.
    # The random number is 0.91, and the number of valid miners is 2.

    # 0.91 < (0.6 + 0.05), condition not met
    # 0.91 < (0.9 + 0.05), condition met, uncommon event used

    if randomn < common_event_chance:  # + (0.1 - rare_event_chance)):
        common_event_triggered = True
    else:  # randomn < (common_event_chance + uncommon_event_chance + (0.1 - rare_event_chance)):
        uncommon_event_triggered = True
    # else:
    #	rare_event_triggered = True

    # common event
    if common_event_triggered:
        randomn = random.random()

        # 4x glob of slime
        if randomn < 0.5:
            event_props = {}
            event_props['id_user'] = cmd.message.author.id
            event_props['poi'] = user_data.poi
            event_props['channel'] = cmd.message.channel.name
            return bknd_worldevent.create_world_event(
                id_server=cmd.guild.id,
                event_type=ewcfg.event_type_slimeglob,
                time_activate=time_now,
                event_props=event_props)
        # 30 seconds slimefrenzy
        else:
            event_props = {}
            event_props['id_user'] = cmd.message.author.id
            event_props['poi'] = user_data.poi
            event_props['channel'] = cmd.message.channel.name
            return bknd_worldevent.create_world_event(
                id_server=cmd.guild.id,
                event_type=ewcfg.event_type_slimefrenzy,
                time_activate=time_now,
                time_expir=time_now + 30,
                event_props=event_props)

    # uncommon event
    elif uncommon_event_triggered:
        randomn = random.random()

        # gap into the void
        if randomn < 0.05:
            event_props = {}
            event_props['id_user'] = cmd.message.author.id
            event_props['poi'] = user_data.poi
            event_props['channel'] = cmd.message.channel.name
            return bknd_worldevent.create_world_event(
                id_server=cmd.guild.id,
                event_type=ewcfg.event_type_voidhole,
                time_activate=time_now,
                time_expir=time_now + 10,
                event_props=event_props)
        # mine shaft collapse
        elif randomn < 0.5:
            event_props = {}
            event_props['id_user'] = cmd.message.author.id
            event_props['poi'] = user_data.poi
            event_props['captcha'] = ewutils.generate_captcha(
                length=8, user_data=user_data)
            event_props['channel'] = cmd.message.channel.name
            return bknd_worldevent.create_world_event(
                id_server=cmd.guild.id,
                event_type=ewcfg.event_type_minecollapse,
                time_activate=time_now,
                event_props=event_props)
        # 10 second poudrin frenzy
        else:
            if bknd_item.check_inv_capacity(user_data=user_data,
                                            item_type=ewcfg.it_item):
                event_props = {}
                event_props['id_user'] = cmd.message.author.id
                event_props['poi'] = user_data.poi
                event_props['channel'] = cmd.message.channel.name
                return bknd_worldevent.create_world_event(
                    id_server=cmd.guild.id,
                    event_type=ewcfg.event_type_poudrinfrenzy,
                    time_activate=time_now,
                    time_expir=time_now + 5,
                    event_props=event_props)
    """