コード例 #1
0
def guild_attack(uid):
    res = dict()
    r_action = RecordAction(uid)
    r_data = r_action.get_model_info()
    fight_data = r_data.get(r_action.fight_group_str, [])
    if fight_data is None:
        fight_data = []
    if 'VIP' in fight_data:
        res['isCD'] = True
        return res
    user_action = UserAction(uid)
    # 体力的扣除
    cur_vit = user_action.get_vit()
    cost_vit = 1
    if cur_vit < cost_vit:
        return False
    if user_action.reduce_vit(cost_vit) is False:
        return False
    award = dict()
    item_action = ItemAction(uid)
    result = True
    award_item = 20010
    award_item_ct = 1
    if item_action.add_model(award_item, award_item_ct):
        award[award_item] = award_item_ct
    res['award'] = award
    res['result'] = result
    fight_data.append('VIP')
    update_data = {
        r_action.fight_group_str: fight_data,
        r_action.fight_str: r_data.get(r_action.fight_str, 0) + 1
    }
    record_logic.add_fight_record(uid, update_data)
    return res
コード例 #2
0
ファイル: machine_logic.py プロジェクト: sorryone/GrabDoll
def start_grab(uid, key_id):
    mach_action = MachineAction(uid)
    egg = mach_action.get_egg_info(key_id)
    if egg is False:
        print("egg  is not exits")
        return False
    item_id = egg.get('id', False)
    if item_id is False:
        return False
    user_action = UserAction(uid)
    vit = user_action.get_vit()
    vit_cost = 1
    if vit < vit_cost or user_action.reduce_vit(vit_cost) is False:
        return False
    config = ConfigModel('egg').get_config_by_id(item_id)
    probability = int(config['lv']) / 100
    rand = random.random()
    res = dict()
    res['res'] = True if rand <= probability else False
    note_model = NoteModel(uid)
    note_model.set_value(key_id, res['res'])
    return res
コード例 #3
0
ファイル: user.py プロジェクト: sorryone/GrabDoll
def refresh_vit(uid):
    u = UserAction(uid)
    if u.get_vit() < u.max_vit_value:
        u.reset_vit()
コード例 #4
0
def fight_against(uid, opponent):
    if opponent == 'VIP':
        return guild_attack(uid)
    res = dict()
    r_action = RecordAction(uid)
    r_data = r_action.get_model_info()
    fight_data = r_data.get(r_action.fight_group_str, [])
    if fight_data is None:
        fight_data = []
    if opponent in fight_data:
        res['isCD'] = True
        return res
    my_formation = FormationAction(uid)
    my_formation_info = my_formation.get_model_info()
    opponent_formation = FormationAction(opponent)
    opponent_info = opponent_formation.get_model_info()
    my_atk = my_formation_info.get(opponent_formation.fight_atk_str, 0)
    opponent_atk = opponent_info.get(opponent_formation.fight_atk_str, 10000)
    my_art_info = artifact_logic.get_artifact_akt(uid)
    opponent_art_info = artifact_logic.get_artifact_akt(opponent)
    res['my_atk'] = my_atk + my_art_info.get('atk', 0)
    res['opponent_atk'] = opponent_atk + opponent_art_info.get('atk', 0)
    my_fight_heroes = my_formation_info.get(my_formation.fight_formation_str)
    my_fight_heroes_group = [i for i in my_fight_heroes if i != '']

    eat_hero_update = eat_atk(uid, my_fight_heroes_group, res['opponent_atk'])
    if eat_hero_update is False:
        # 我受伤了已经
        res['error'] = True
        res['update'] = my_formation_info
    else:
        user_action = UserAction(uid)
        # 体力的扣除
        cur_vit = user_action.get_vit()
        cost_vit = 1
        if cur_vit < cost_vit:
            return False
        if user_action.reduce_vit(cost_vit) is False:
            return False
        award_success_gold = 10
        award_fail_gold = 2
        award = dict()
        award_success_items = [
            20010, 20011, 20012, 20013, 20014, 20015, 20016, 20017, 20018,
            20019
        ]
        item_action = ItemAction(uid)
        if my_atk > opponent_atk:
            result = True
            opponent_formation.set_injured()
            award_item = random.choice(award_success_items)
            award_item_ct = 1
            if item_action.add_model(award_item, award_item_ct):
                award[award_item] = award_item_ct
            if user_action.add_gold(award_success_gold):
                award['gold'] = award_success_gold
        else:
            result = False
            my_formation.set_injured()
            if user_action.add_gold(award_fail_gold):
                award['gold'] = award_fail_gold
        res['award'] = award
        res['result'] = result
        res['update'] = eat_hero_update
        update_data = {
            r_action.fight_group_str: fight_data,
            r_action.fight_str: r_data.get(r_action.fight_str, 0) + 1
        }
        record_logic.add_fight_record(uid, update_data)
    return res