def emailOpen(self, id): """ 打开邮件 """ if not self.email.has_key(id): return {'msg':'email_not_exist'} if self.email[id]['open']: return {'msg':'email_already_open'} usr = self.user emailConf = config.getConfig('email') emailInfo = emailConf[self.email[id]['emailid']] if emailInfo: awd = {} awd = drop.open(usr, emailInfo['dropid'], awd) awd = drop.makeData(awd, {}) self.email[id]['open'] = True self.save() data = awd data['email_update'] = self.email[id] return data
def garcha_skill10(usr): """ 求技能10次 """ gameConf = config.getConfig('game') goldCost = gameConf['garcha_skill_10_price']['gold'] gemCost = gameConf['garcha_skill_10_price']['gem'] if usr.gold < goldCost: return {'msg': 'gold_not_enough'} if usr.gem < gemCost: return {'msg': 'gem_not_enough'} awd = {} awd = drop.open(usr, gameConf['garcha_skill_10_dropid1'], awd) for i in range(9): awd = drop.open(usr, gameConf['garcha_skill_10_dropid2'], awd) data = drop.makeData(awd, {}) usr.gold = usr.gold - goldCost usr.gem = usr.gem - gemCost usr.save() data['gold'] = usr.gold data['gem'] = usr.gem return data
def inviteAward(usr, inviteCount): """ 邀请领奖 """ if inviteCount > len(usr.invite['invite']): return {'msg': 'invite_count_not_enough'} while len(usr.invite['invite_award']) < (inviteCount + 1): usr.invite['invite_award'].append('') if usr.invite['invite_award'][inviteCount]: return {'msg': 'invite_award_already_have'} inviteConf = config.getConfig('invite') dropid = inviteConf['invite_award'][inviteCount - 1] if not dropid: return {'msg': 'invite_not_have_award'} usr.invite['invite_award'][inviteCount] = dropid awd = {} awd = drop.open(usr, dropid, awd) data = drop.makeData(awd, {}) #data.update(invite.getClientData(usr)) usr.save() data['invite_award'] = [] for (i, di) in enumerate(usr.invite['invite_award']): if di: data['invite_award'].append(i + 1) return data
def garcha_skill(usr, nature): """ 求技能 """ gameConf = config.getConfig('game') if (nature > len(gameConf['garcha_skill_dropid'])) or (nature < 0): return {'msg':'parameter_bad'} goldCost = gameConf['garcha_skill_price'][nature - 1]['gold'] gemCost = gameConf['garcha_skill_price'][nature - 1]['gem'] if int(goldCost) == 0 and int(gemCost) == 0: return {'msg':'parameter_bad'} if usr.gold < goldCost: return {'msg':'gold_not_enough'} if usr.gem < gemCost: return {'msg':'gem_not_enough'} awd = {} awd = drop.open(usr, gameConf['garcha_skill_dropid'][nature - 1], awd) data = drop.makeData(awd, {}) usr.gold = usr.gold - goldCost usr.gem = usr.gem - gemCost data['gold'] = usr.gold data['gem'] = usr.gem return data
def emailOpen(self, id): """ 打开邮件 """ if not self.email.has_key(id): return {'msg': 'email_not_exist'} if self.email[id]['open']: return {'msg': 'email_already_open'} usr = self.user emailConf = config.getConfig('email') emailInfo = emailConf[self.email[id]['emailid']] if emailInfo: awd = {} awd = drop.open(usr, emailInfo['dropid'], awd) awd = drop.makeData(awd, {}) self.email[id]['open'] = True self.save() data = awd data['email_update'] = self.email[id] return data
def inviteAward(usr, inviteCount): """ 邀请领奖 """ if inviteCount > len(usr.invite['invite']): return {'msg':'invite_count_not_enough'} while len(usr.invite['invite_award']) < (inviteCount + 1): usr.invite['invite_award'].append('') if usr.invite['invite_award'][inviteCount]: return {'msg':'invite_award_already_have'} inviteConf = config.getConfig('invite') dropid = inviteConf['invite_award'][inviteCount - 1] if not dropid: return {'msg': 'invite_not_have_award'} usr.invite['invite_award'][inviteCount] = dropid awd = {} awd = drop.open(usr, dropid, awd) data = drop.makeData(awd, {}) #data.update(invite.getClientData(usr)) usr.save() data['invite_award'] = [] for (i, di) in enumerate(usr.invite['invite_award']): if di: data['invite_award'].append(i + 1) return data
def garcha_skill10(usr): """ 求技能10次 """ gameConf = config.getConfig('game') goldCost = gameConf['garcha_skill_10_price']['gold'] gemCost = gameConf['garcha_skill_10_price']['gem'] if usr.gold < goldCost: return {'msg':'gold_not_enough'} if usr.gem < gemCost: return {'msg':'gem_not_enough'} awd = {} awd = drop.open(usr, gameConf['garcha_skill_10_dropid1'], awd) for i in range(9): awd = drop.open(usr, gameConf['garcha_skill_10_dropid2'], awd) data = drop.makeData(awd, {}) usr.gold = usr.gold - goldCost usr.gem = usr.gem - gemCost usr.save() data['gold'] = usr.gold data['gem'] = usr.gem return data
def draw_award(usr, position): """ 开服奖励 """ openAwardConf = config.getConfig('open_award') drawidx = [] for t in usr.signin['draw_award_time']: if is_same_day(t, currentTime()): return {'msg':'open_award_already_get'} for idx, ad in enumerate(openAwardConf['draw_award']): if len(usr.signin['draw_award_time']) > idx and not usr.signin['draw_award_time'][idx]: continue if ad['day'] > len(usr.signin['draw_award_time']): continue drawidx.append(idx) if not drawidx: return {'msg':'open_award_already_get'} adidx = random.sample(drawidx, 1)[0] ad = openAwardConf['draw_award'][adidx] awd = {} awd = drop.open(usr, ad['dropid'], awd) while len(usr.signin['draw_award_time']) <= adidx: usr.signin['draw_award_time'].append({}) usr.signin['draw_award_time'][adidx] = {'time':currentTime(), 'position': position} usr.save() data = drop.makeData(awd, {}) return data
def garcha_skill(usr, nature): """ 求技能 """ gameConf = config.getConfig('game') if (nature > len(gameConf['garcha_skill_dropid'])) or (nature < 0): return {'msg': 'parameter_bad'} goldCost = gameConf['garcha_skill_price'][nature - 1]['gold'] gemCost = gameConf['garcha_skill_price'][nature - 1]['gem'] if int(goldCost) == 0 and int(gemCost) == 0: return {'msg': 'parameter_bad'} if usr.gold < goldCost: return {'msg': 'gold_not_enough'} if usr.gem < gemCost: return {'msg': 'gem_not_enough'} awd = {} awd = drop.open(usr, gameConf['garcha_skill_dropid'][nature - 1], awd) data = drop.makeData(awd, {}) usr.gold = usr.gold - goldCost usr.gem = usr.gem - gemCost data['gold'] = usr.gold data['gem'] = usr.gem return data
def defeate(usr): """ 击败 """ res = None if usr.arena.has_key('challenge_roleid'): if SIGLE_SERVER: from arenarank.routine.arena import arena as arenaR return arenaR.defeat(str(usr.roleid), str(usr.arena['challenge_roleid'])) else: res = json.loads( curl.url( ARENE_SERVER + '/arena/defeat/', None, { 'offence_roleid': usr.roleid, 'defence_roleid': usr.arena['challenge_roleid'] })) arenaLootConf = config.getConfig('arena_loot') gameConf = config.getConfig('game') if res.has_key('msg'): return res alreadyReach = False for item in gameConf['arena_rank_award']: if item['rank'] >= res['position'] and ( not usr.arena['rank_award'].has_key(item['rank'])): usr.arena['rank_award'][item['rank']] = True arenaLootInfo = arenaLootConf[usr.level - 1] challengeRole = usr.__class__.get(usr.arena['challenge_roleid']) challengeRole.gold = challengeRole.gold - arenaLootInfo['gold'] if challengeRole.gold < 0: challengeRole.gold = 0 challengeRole.notify_gold() challengeRole.save() del usr.arena['challenge_roleid'] card = None gold = 0 skl = None data = {} if usr.arena.has_key('loot'): data = drop.do_award(usr, usr.arena['loot'], data) data = drop.makeData(data, res, 'award') usr.gainExp(arenaLootInfo['exp']) usr.gold = usr.gold + arenaLootInfo['gold'] data['exp'] = usr.exp data['level'] = usr.level data['gold'] = usr.gold usr.save() return data return {'msg': 'arena_ladder_have_not_chellenge'}
def explore(usr): """ 探险 """ explore.update_explore(usr) exploreConf = config.getConfig('explore_award') exploreInfo = exploreConf[str(usr.level)] gameConf = config.getConfig('game') usr.explore['times'] = usr.explore['times'] + 1 if usr.explore['times'] >= gameConf['explore_max_times']: return {'msg': 'explore_max_times'} usr.explore['last_update_times_time'] = currentTime() awd = {} awd = drop.roll(exploreInfo[0], awd) rv = random.uniform(gameConf['explore_gold_and_exp_revision'][0], gameConf['explore_gold_and_exp_revision'][1]) if awd.has_key('gold'): awd['gold'] = awd['gold'] * rv if awd.has_key('exp'): awd['exp'] = awd['exp'] * rv rd = randint() if rd < gameConf['explore_critical_probability'] + usr.explore[ 'critical_count'] * gameConf[ 'explore_critical_probability_growth']: for key in awd: awd[key] = awd[key] * gameConf['explore_critical_income_rate'] awd = drop.roll(exploreInfo[1], awd) awd = drop.do_award(usr, awd, {}) data = drop.makeData(awd, {}) rd = randint() if rd < gameConf['explore_extra_times_probability']: usr.explore['times'] = usr.explore['times'] - 1 if usr.explore['times'] < 0: usr.explore['times'] = 0 data['explore_times'] = usr.explore['times'] rd = randint() if rd < gameConf['explore_friend_probability']: friendData = explore.recommend_friend(usr) if friendData: data['friend_data'] = friendData rd = randint() if rd < gameConf['infection_explore_probability']: infaction_battle = infection.explore_encounter(usr, gameConf) if infaction_battle: data['infaction_battle'] = infaction_battle usr.save() return data
def end(request): """ 结束地下城 """ battleId = request.GET['battle_id'] fieldId = request.GET['field_id'] star = request.GET['star'] star = int(star) usr = request.user dun = usr.getDungeon() dunConf = config.getConfig('dungeon') if dun.curren_field['battleid'] != battleId or fieldId != dun.curren_field[ 'fieldid']: return {'msg': 'dungeon_finished'} for battleConf in dunConf: if battleConf['battleId'] == battleId: for fieldConf in battleConf['field']: if fieldConf['fieldId'] == fieldId: gameConf = config.getConfig('game') exp = fieldConf['exp'] if dun.daily_recored[battleId][fieldId]['vip_reset']: exp = int(exp * gameConf['dungeon_reset_benefit']) usr.gainExp(exp) data = {} if fieldConf['dropid']: awd = {} awd = drop.open(usr, fieldConf['dropid'], awd) data = dun.award() data = drop.makeData(awd, data) data['exp'] = usr.exp data['level'] = usr.level data['gold'] = usr.gold infectionBattle = infection.dungeon_encounter(usr) if infectionBattle: if not infectionBattle.has_key('msg'): data['infection_battle'] = infectionBattle #if dun.curren_field['battleid'] == dun.last_dungeon['battleid'] and dun.curren_field['fieldid'] == dun.last_dungeon['fieldid']: # dun.nextField() dun.curren_field = {'battleid': '', 'fieldid': ''} dun.normalRecordEnd(battleId, fieldId, star) #data['last_dungeon'] = dun.last_dungeon qt = usr.getQuest() qt.updateDungeonCountQuest() qt.updateFinishDungeonQuest(battleId, fieldId) dun.save() return data return {'msg': 'field_not_exist'}
def prestige_award(usr): """ 声望奖励 """ res = infection.PrestigeAward(usr) if res.has_key('msg'): return res awd = {} for dropid in res['award']: awd = drop.open(usr, dropid, awd) data = drop.makeData(awd, {}) return data
def end(request): """ 结束地下城 """ battleId = request.GET['battle_id'] fieldId = request.GET['field_id'] star = request.GET['star'] star = int(star) usr = request.user dun = usr.getDungeon() dunConf = config.getConfig('dungeon') if dun.curren_field['battleid'] != battleId or fieldId != dun.curren_field['fieldid']: return {'msg':'dungeon_finished'} for battleConf in dunConf: if battleConf['battleId'] == battleId: for fieldConf in battleConf['field']: if fieldConf['fieldId'] == fieldId: gameConf = config.getConfig('game') exp = fieldConf['exp'] if dun.daily_recored[battleId][fieldId]['vip_reset']: exp = int(exp * gameConf['dungeon_reset_benefit']) usr.gainExp(exp) data = {} if fieldConf['dropid']: awd = {} awd = drop.open(usr, fieldConf['dropid'], awd) data = dun.award() data = drop.makeData(awd, data) data['exp'] = usr.exp data['level'] = usr.level data['gold'] = usr.gold infectionBattle = infection.dungeon_encounter(usr) if infectionBattle: if not infectionBattle.has_key('msg'): data['infection_battle'] = infectionBattle #if dun.curren_field['battleid'] == dun.last_dungeon['battleid'] and dun.curren_field['fieldid'] == dun.last_dungeon['fieldid']: # dun.nextField() dun.curren_field = {'battleid':'', 'fieldid':''} dun.normalRecordEnd(battleId, fieldId, star) #data['last_dungeon'] = dun.last_dungeon qt = usr.getQuest() qt.updateDungeonCountQuest() qt.updateFinishDungeonQuest(battleId, fieldId) dun.save() return data return {'msg':'field_not_exist'}
def defeate(usr): """ 击败 """ res = None if usr.arena.has_key('challenge_roleid'): if SIGLE_SERVER: from arenarank.routine.arena import arena as arenaR return arenaR.defeat(str(usr.roleid), str(usr.arena['challenge_roleid'])) else: res = json.loads(curl.url(ARENE_SERVER + '/arena/defeat/', None, {'offence_roleid':usr.roleid, 'defence_roleid':usr.arena['challenge_roleid']})) arenaLootConf = config.getConfig('arena_loot') gameConf = config.getConfig('game') if res.has_key('msg'): return res alreadyReach = False for item in gameConf['arena_rank_award']: if item['rank'] >= res['position'] and (not usr.arena['rank_award'].has_key(item['rank'])): usr.arena['rank_award'][item['rank']] = True arenaLootInfo = arenaLootConf[usr.level - 1] challengeRole = usr.__class__.get(usr.arena['challenge_roleid']) challengeRole.gold = challengeRole.gold - arenaLootInfo['gold'] if challengeRole.gold < 0: challengeRole.gold = 0 challengeRole.notify_gold() challengeRole.save() del usr.arena['challenge_roleid'] card = None gold = 0 skl = None data = {} if usr.arena.has_key('loot'): data = drop.do_award(usr, usr.arena['loot'], data) data = drop.makeData(data, res, 'award') usr.gainExp(arenaLootInfo['exp']) usr.gold = usr.gold + arenaLootInfo['gold'] data['exp'] = usr.exp data['level'] = usr.level data['gold'] = usr.gold usr.save() return data return {'msg':'arena_ladder_have_not_chellenge'}
def award(self): """ 领奖 """ usr = self.user inv = usr.getInventory() waves = self.curren_field_waves awd = {} for wave in waves: for monsterDrop in waves[wave]: dropData = monsterDrop['drop'] awd = drop.do_award(usr, dropData, awd) self.curren_field_waves = [] awd = drop.makeData(awd, {}) return awd
def battle_award(usr, battleRoleid, create_time): """ 战斗奖励 """ res = infection.BattleAward(usr, battleRoleid, create_time) if res.has_key('msg'): return res awd = {} if res.has_key('call_dropid'): awd = drop.open(usr, res['call_dropid'], awd) if res.has_key('last_hit_dropid'): awd = drop.open(usr, res['last_hit_dropid'], awd) if res.has_key('hit_dropid'): awd = drop.open(usr, res['hit_dropid'], awd) data = drop.makeData(awd, {}) return data
def do_signin(usr): """ 是否签名 """ now = currentTime() if signin.have_signin(usr, now): return {'msg':'signin_already_have'} signinConf = config.getConfig('signin') signin_index = (usr.signin['login_count'] - 1) % len(signinConf) signinAward = signinConf[signin_index] awd = {} awd = drop.open(usr, signinAward['dropid'], awd) awd = drop.makeData(awd, {}) usr.signin['last_signin_time'] = now usr.save() return awd
def do_signin(usr): """ 是否签名 """ now = currentTime() if signin.have_signin(usr, now): return {'msg': 'signin_already_have'} signinConf = config.getConfig('signin') signin_index = (usr.signin['login_count'] - 1) % len(signinConf) signinAward = signinConf[signin_index] awd = {} awd = drop.open(usr, signinAward['dropid'], awd) awd = drop.makeData(awd, {}) usr.signin['last_signin_time'] = now usr.save() return awd
def enterInviteCode(usr, invite_code): """ 输入邀请码 """ gameConf = config.getConfig('game') accountid = inviteU.reverseCode(invite_code) now = currentTime() if now - usr.invite['open_time'] > gameConf['invite_open_duration']: return {'msg':'invite_not_available'} invAccount = usr.getAccountCls().get(accountid) if not invAccount: return {'msg':'invite_code_bad'} if usr.accountid == accountid: return {'msg': 'invite_can_not_self'} invUsr = invAccount.getUser() if len(invUsr.invite['invite']) >= gameConf['invite_max_count']: return {'msg': 'invitee_max_count'} if str(usr.roleid) in invUsr.invite['invite']: return {'msg':'invite_code_already_use'} invUsr.invite['invite'].append(str(usr.roleid)) if str(invUsr.roleid) in usr.invite['invitee']: return {'msg':'invite_code_already_use'} usr.invite['invitee'].append(str(invUsr.roleid)) inviteConf = config.getConfig('invite') dropid = inviteConf['invitee_award'] awd = {} data = {} if dropid: awd = drop.open(usr, dropid, awd) data = drop.makeData(awd, {}) invUsr.save() usr.save() return data
def enterInviteCode(usr, invite_code): """ 输入邀请码 """ gameConf = config.getConfig('game') accountid = inviteU.reverseCode(invite_code) now = currentTime() if now - usr.invite['open_time'] > gameConf['invite_open_duration']: return {'msg': 'invite_not_available'} invAccount = usr.getAccountCls().get(accountid) if not invAccount: return {'msg': 'invite_code_bad'} if usr.accountid == accountid: return {'msg': 'invite_can_not_self'} invUsr = invAccount.getUser() if len(invUsr.invite['invite']) >= gameConf['invite_max_count']: return {'msg': 'invitee_max_count'} if str(usr.roleid) in invUsr.invite['invite']: return {'msg': 'invite_code_already_use'} invUsr.invite['invite'].append(str(usr.roleid)) if str(invUsr.roleid) in usr.invite['invitee']: return {'msg': 'invite_code_already_use'} usr.invite['invitee'].append(str(invUsr.roleid)) inviteConf = config.getConfig('invite') dropid = inviteConf['invitee_award'] awd = {} data = {} if dropid: awd = drop.open(usr, dropid, awd) data = drop.makeData(awd, {}) invUsr.save() usr.save() return data
def rank_award(usr, rk): """ 排名奖励 """ if not usr.arena['rank_award'].has_key(rk): return {'msg': 'arena_rank_award_not_exist'} if not usr.arena['rank_award'][rk]: return {'msg': 'arena_rank_award_already_have'} gameConf = config.getConfig('game') for item in gameConf['arena_rank_award']: if item['rank'] == int(rk): #res = arena.award_score(usr.roleid, item['point']) data = {} awd = drop.open(usr, item['drop'], {}) data = drop.makeData(awd, {}) usr.arena['rank_award'][rk] = False usr.save() return data return {'msg': 'arena_rank_award_not_exist'}
def rank_award(usr, rk): """ 排名奖励 """ if not usr.arena['rank_award'].has_key(rk): return {'msg':'arena_rank_award_not_exist'} if not usr.arena['rank_award'][rk]: return {'msg':'arena_rank_award_already_have'} gameConf = config.getConfig('game') for item in gameConf['arena_rank_award']: if item['rank'] == int(rk): #res = arena.award_score(usr.roleid, item['point']) data = {} awd = drop.open(usr, item['drop'], {}) data = drop.makeData(awd, {}) usr.arena['rank_award'][rk] = False usr.save() return data return {'msg':'arena_rank_award_not_exist'}
def award(usr, level): """ 升级奖励 """ if usr.level < level: return {'msg':'level_required'} if level in usr.levelup['record']: return {'msg':'levelup_award_already_have'} levelupConf = config.getConfig('levelup') levelKey = str(level) if not levelupConf.has_key(levelKey): return {'msg':'levelup_award_not_exist'} dropid = levelupConf[levelKey] awd = {} awd = drop.open(usr, dropid, awd) usr.levelup['record'].append(level) data = drop.makeData(awd, {}) usr.save() return data
def award(usr, level): """ 升级奖励 """ if usr.level < level: return {'msg': 'level_required'} if level in usr.levelup['record']: return {'msg': 'levelup_award_already_have'} levelupConf = config.getConfig('levelup') levelKey = str(level) if not levelupConf.has_key(levelKey): return {'msg': 'levelup_award_not_exist'} dropid = levelupConf[levelKey] awd = {} awd = drop.open(usr, dropid, awd) usr.levelup['record'].append(level) data = drop.makeData(awd, {}) usr.save() return data
def draw_award(usr, position): """ 开服奖励 """ openAwardConf = config.getConfig('open_award') drawidx = [] for t in usr.signin['draw_award_time']: if is_same_day(t, currentTime()): return {'msg': 'open_award_already_get'} for idx, ad in enumerate(openAwardConf['draw_award']): if len(usr.signin['draw_award_time'] ) > idx and not usr.signin['draw_award_time'][idx]: continue if ad['day'] > len(usr.signin['draw_award_time']): continue drawidx.append(idx) if not drawidx: return {'msg': 'open_award_already_get'} adidx = random.sample(drawidx, 1)[0] ad = openAwardConf['draw_award'][adidx] awd = {} awd = drop.open(usr, ad['dropid'], awd) while len(usr.signin['draw_award_time']) <= adidx: usr.signin['draw_award_time'].append({}) usr.signin['draw_award_time'][adidx] = { 'time': currentTime(), 'position': position } usr.save() data = drop.makeData(awd, {}) return data
def sweep(self, battleid, fieldid, cnt): """ 扫荡 """ if not self.normal_recored.has_key(battleid): return {'msg': 'dungeon_not_finished'} if not self.normal_recored[battleid].has_key(fieldid): return {'msg': 'dungeon_not_finished'} usr = self.user gameConf = config.getConfig('game') if (not vip.canDungeonSweep(usr)) and ( gameConf['dungeon_vip0_sweep_star'] > self.normal_recored[battleid][fieldid]): return {'msg': 'dungeon_sweep_not_allowed'} self.curren_field = {'battleid': '', 'fieldid': ''} dunConf = config.getConfig('dungeon') resultData = {} resultData['sweep'] = [] for battleConf in dunConf: if battleConf['battleId'] == battleid: for fieldConf in battleConf['field']: if fieldConf['fieldId'] == fieldid: staminaCost = fieldConf['stamina'] if usr.stamina < staminaCost: return {'msg': 'stamina_not_enough'} if fieldConf['dayCount'] == self.daily_recored[ battleid][fieldid]['count']: return {'msg': 'dungeon_max_count'} if fieldConf['dayCount'] < ( self.daily_recored[battleid][fieldid]['count'] + cnt): cnt = fieldConf['dayCount'] - self.daily_recored[ battleid][fieldid]['count'] qt = usr.getQuest() for i in range(cnt): waves = self.arrangeWaves(fieldConf) staminaCost = fieldConf['stamina'] if usr.stamina < staminaCost: break usr.stamina = usr.stamina - staminaCost self.daily_recored[battleid][fieldid][ 'count'] = self.daily_recored[battleid][ fieldid]['count'] + 1 waves = self.arrangeWaves(fieldConf) exp = fieldConf['exp'] if self.daily_recored[battleid][fieldid][ 'vip_reset']: exp = int(exp * gameConf['dungeon_reset_benefit']) usr.gainExp(exp) data = {} if fieldConf['dropid']: awd = {} awd = drop.open(usr, fieldConf['dropid'], awd) data = self.award() data = drop.makeData(awd, data) data['add_exp'] = exp resultData['sweep'].append(data) #if dun.curren_field['battleid'] == dun.last_dungeon['battleid'] and dun.curren_field['fieldid'] == dun.last_dungeon['fieldid']: # dun.nextField() #data['last_dungeon'] = dun.last_dungeon qt.updateDungeonCountQuest() qt.updateFinishDungeonQuest(battleid, fieldid) self.save() usr.save() resultData['stamina'] = usr.stamina resultData['exp'] = usr.exp resultData['level'] = usr.level resultData['gold'] = usr.gold return resultData
def sweep(self, battleid, fieldid, cnt): """ 扫荡 """ if not self.normal_recored.has_key(battleid): return {'msg' : 'dungeon_not_finished'} if not self.normal_recored[battleid].has_key(fieldid): return {'msg' : 'dungeon_not_finished'} usr = self.user gameConf = config.getConfig('game') if (not vip.canDungeonSweep(usr)) and (gameConf['dungeon_vip0_sweep_star'] > self.normal_recored[battleid][fieldid]): return {'msg':'dungeon_sweep_not_allowed'} self.curren_field = {'battleid':'', 'fieldid':''} dunConf = config.getConfig('dungeon') resultData = {} resultData['sweep'] = [] for battleConf in dunConf: if battleConf['battleId'] == battleid: for fieldConf in battleConf['field']: if fieldConf['fieldId'] == fieldid: staminaCost = fieldConf['stamina'] if usr.stamina < staminaCost: return {'msg':'stamina_not_enough'} if fieldConf['dayCount'] == self.daily_recored[battleid][fieldid]['count']: return {'msg':'dungeon_max_count'} if fieldConf['dayCount'] < (self.daily_recored[battleid][fieldid]['count'] + cnt): cnt = fieldConf['dayCount'] - self.daily_recored[battleid][fieldid]['count'] qt = usr.getQuest() for i in range(cnt): waves = self.arrangeWaves(fieldConf) staminaCost = fieldConf['stamina'] if usr.stamina < staminaCost: break usr.stamina = usr.stamina - staminaCost self.daily_recored[battleid][fieldid]['count'] = self.daily_recored[battleid][fieldid]['count'] + 1 waves = self.arrangeWaves(fieldConf) exp = fieldConf['exp'] if self.daily_recored[battleid][fieldid]['vip_reset']: exp = int(exp * gameConf['dungeon_reset_benefit']) usr.gainExp(exp) data = {} if fieldConf['dropid']: awd = {} awd = drop.open(usr, fieldConf['dropid'], awd) data = self.award() data = drop.makeData(awd, data) data['add_exp'] = exp resultData['sweep'].append(data) #if dun.curren_field['battleid'] == dun.last_dungeon['battleid'] and dun.curren_field['fieldid'] == dun.last_dungeon['fieldid']: # dun.nextField() #data['last_dungeon'] = dun.last_dungeon qt.updateDungeonCountQuest() qt.updateFinishDungeonQuest(battleid, fieldid) self.save() usr.save() resultData['stamina'] = usr.stamina resultData['exp'] = usr.exp resultData['level'] = usr.level resultData['gold'] = usr.gold return resultData
def garcha_once(usr, garchaAmount): """ 一次求将 """ inv = usr.getInventory() garchaConf = config.getConfig('garcha') gameConf = config.getConfig('game') now = currentTime() garcha.update_garcha(usr, now) garchaInfo = None if garchaAmount == 10: garchaInfo = usr.garcha['garcha10'] elif garchaAmount == 100: garchaInfo = usr.garcha['garcha100'] elif garchaAmount == 10000: garchaInfo = usr.garcha['garcha10000'] isFirstTime = (garchaInfo['last_time'] == 0) isFree = False duration = now - garchaInfo['last_time'] cooldownConf = 0 cooldown = 0 isCooldown = False if garchaAmount == 10: cooldownConf = gameConf['garcha_10_cooldown'] if garchaAmount == 100: cooldownConf = gameConf['garcha_100_cooldown'] if garchaAmount == 10000: cooldownConf = gameConf['garcha_10000_cooldown'] cooldown = cooldownConf - duration if cooldown > 0: isCooldown = True else: isCooldown = False cooldown = 0 if garchaAmount == 10: isFree = ((gameConf['garcha_10_times'] - garchaInfo['count']) > 0) and not isCooldown elif garchaAmount == 100: isFree = ((gameConf['garcha_100_times'] - garchaInfo['count']) > 0) and not isCooldown elif garchaAmount == 10000: isFree = ((gameConf['garcha_10000_times'] - garchaInfo['count']) > 0) and not isCooldown garchaCostGold = 0 garchaCostGem = 0 garchaType = '' garchaDropid1 = '' garchaDropid2 = '' garchaDropid3 = '' time_score = 0 luck_score = 0 petConf = config.getConfig('pet') if not isFree: if garchaAmount == 10: garchaCostGold = gameConf['garcha_10_price']['gold'] garchaCostGem = gameConf['garcha_10_price']['gem'] garchaType = 'garcha_10' garchaDropid1 = gameConf['garcha_10_dropid1'] elif garchaAmount == 100: garchaCostGold = gameConf['garcha_100_price']['gold'] garchaCostGem = gameConf['garcha_100_price']['gem'] garchaType = 'garcha_100' garchaDropid2 = gameConf['garcha_100_dropid2'] garchaDropid1 = gameConf['garcha_100_dropid1'] garchaDropid3 = gameConf['garcha_100_dropid3'] time_score = garchaConf[vip.level(usr)]['garcha_100_free_time_score'] luck_score = garchaConf[vip.level(usr)]['garcha_100_free_luck_score'] if not garchaInfo.has_key('time_score'): garchaInfo['time_score'] = 0 if not garchaInfo.has_key('luck_score'): garchaInfo['luck_score'] = 0 elif garchaAmount == 10000: garchaCostGold = gameConf['garcha_10000_price']['gold'] garchaCostGem = gameConf['garcha_10000_price']['gem'] garchaDropid1 = gameConf['garcha_10000_dropid1'] garchaDropid2 = gameConf['garcha_10000_dropid2'] garchaDropid3 = gameConf['garcha_10000_dropid3'] time_score = garchaConf[vip.level(usr)]['garcha_10000_free_time_score'] luck_score = garchaConf[vip.level(usr)]['garcha_10000_free_luck_score'] if not garchaInfo.has_key('time_score'): garchaInfo['time_score'] = 0 if not garchaInfo.has_key('luck_score'): garchaInfo['luck_score'] = 0 garchaType = 'garcha_10000' if inv.CountCardByQuality(5, petConf) > 0: time_score = int(time_score / 2) else: if garchaAmount == 10: garchaType = 'garcha_10_free' garchaDropid1 = gameConf['garcha_10_dropid1'] elif garchaAmount == 100: garchaType = 'garcha_100_free' garchaDropid2 = gameConf['garcha_100_dropid2'] garchaDropid1 = gameConf['garcha_100_dropid1'] garchaDropid3 = gameConf['garcha_100_dropid3'] time_score = garchaConf[vip.level(usr)]['garcha_100_time_score'] luck_score = garchaConf[vip.level(usr)]['garcha_100_luck_score'] if not garchaInfo.has_key('time_score'): garchaInfo['time_score'] = 0 if not garchaInfo.has_key('luck_score'): garchaInfo['luck_score'] = 0 elif garchaAmount == 10000: garchaType = 'garcha_10000_free' garchaDropid1 = gameConf['garcha_10000_dropid1'] garchaDropid2 = gameConf['garcha_10000_dropid2'] garchaDropid3 = gameConf['garcha_10000_dropid3'] time_score = garchaConf[vip.level(usr)]['garcha_10000_time_score'] luck_score = garchaConf[vip.level(usr)]['garcha_10000_luck_score'] if not garchaInfo.has_key('time_score'): garchaInfo['time_score'] = 0 if not garchaInfo.has_key('luck_score'): garchaInfo['luck_score'] = 0 fatigue = inv.CountCardByQuality(5, petConf) if fatigue > 5: fatigue = 5 time_score = int(time_score / (1 + fatigue)) if usr.gold < garchaCostGold: return {'msg':'gold_not_enough'} if usr.gem < garchaCostGem: return {'msg':'gem_not_enough'} awd = {} if garchaAmount == 10: awd = drop.open(usr, garchaDropid1, awd) else: awd = {} if garchaInfo['time_score'] >= 800: rd = randint() if (rd <= 300) or (garchaInfo['time_score'] >= 1200): if garchaInfo['luck_score'] < 96: awd = drop.open(usr, garchaDropid2, awd) else: rd = randint() if rd < 5000: awd = drop.open(usr, garchaDropid3, awd) else: awd = drop.open(usr, garchaDropid2, awd) garchaInfo['time_score'] = 0 garchaInfo['luck_score'] = 0 time_score = 0 luck_score = 0 else: awd = drop.open(usr, garchaDropid1, awd) else: awd = drop.open(usr, garchaDropid1, awd) data = drop.makeData(awd, {}) usr.gold = usr.gold - garchaCostGold usr.gem = usr.gem - garchaCostGem if isFree: garchaInfo['last_time'] = now garchaInfo['count'] = garchaInfo['count'] + 1 if time_score or luck_score: garchaInfo['time_score'] = garchaInfo['time_score'] + time_score garchaInfo['luck_score'] = garchaInfo['luck_score'] + luck_score duration = now - garchaInfo['last_time'] cooldown = cooldownConf - duration data['gold'] = usr.gold data['gem'] = usr.gem data['garcha'] = {} data['garcha']['count'] = garchaInfo['count'] data['garcha']['cooldown'] = cooldown usr.save() inv.save() return data
def use(usr, id, cnt): inv = usr.getInventory() it = inv.getItem(id) if not it: return {'msg' : 'item_not_exist'} if it['count'] < cnt: return {'msg': 'time_not_enough'} itemid = it['itemid'] itemConfig = config.getConfig('item') itemInfo = itemConfig[itemid] data = {} data['delete_item_array'] = [] data['update_item_array'] = [] itemCount = cnt save_usr = False save_inv = False for (funkey, v) in itemInfo['fun'].items(): if funkey == 'treasure': key = None while itemCount > 0: keyitemid = v[1] dropid = v[0] if keyitemid != '': key = item.get_by_itemid(inv, keyitemid) if not key: if itemCount == cnt: return {'msg':'key_not_exist'} else: break updateIt = inv.delItem(key['id']) if updateIt == None: data['delete_item_array'].append(key['id']) else: data['update_item_array'].append(updateIt) key = None inv.save() awd = {} awd = drop.open(usr, dropid, awd) data = drop.makeData(awd, data) itemCount = itemCount - 1 if key: data['update_item_array'].append(key) elif funkey == 'protect': if not vip.canBuyArenaProtectTimes(usr): return {'msg':'vip_required'} addProtectTime = v[0] newProtectTime = medal.add_protect_time(usr, addProtectTime) data['protect_time'] = newProtectTime usr.vip['buy_arena_protect_times'] = usr.vip['buy_arena_protect_times'] + 1 save_usr = True elif funkey == 'stamina': if not vip.canBuyStamina(usr): return {'msg':'vip_required'} stamina = int(v[0]) usr.chargeStamina(stamina * itemCount) itemCount = 0 data['st'] = usr.stamina usr.vip['buy_stamina_count'] = usr.vip['buy_stamina_count'] + 1 save_usr = True elif funkey == 'sp': if not vip.canBuyStamina(usr): return {'msg':'vip_required'} sp = int(v[0]) usr.sp = usr.sp + sp * itemCount itemCount = 0 data['sp'] = usr.sp usr.vip['buy_sp_count'] = usr.vip['buy_sp_count'] + 1 save_usr = True elif funkey == 'arena_count': if not vip.canBuyArenaTimes(usr): return {'msg' : 'vip_required'} times = int(v[0]) usr.arena['times'] = usr.arena['times'] - times * itemCount itemCount = 0 data['arena_times'] = usr.arena['times'] usr.vip['buy_arena_times'] = usr.vip['buy_arena_times'] + 1 save_usr = True elif funkey == 'protect': pass elif funkey == 'key': treasure = None while itemCount > 0: treasureid = v[0] treasure = item.get_by_itemid(treasureid) if not treasure: if itemCount == cnt: return {'msg':'treasure_not_exist'} else: break treasureInfo = itemConfig[treasure['itemid']] if not treasureInfo['fun'].has_key('treasure'): if itemCount == cnt: return {'msg':'treasure_is_not'} else: break dropid = treasureInfo['fun']['treasure'][0] awd = {} awd = drop.open(usr, dropid, awd).s() data = drop.makeData(awd, data) if inv.delItem(treasure['id']) == None: data['delete_item_array'].append(treasure['id']) treasure = None inv.save() if treasure: data['update_item_array'].append(treasure) elif funkey == 'medium': pass if inv.delItem(it['id'], cnt - itemCount) == None: data['delete_item_array'].append(it['id']) else: data['update_item_array'].append(it) save_inv = True if not data['delete_item_array']: del data['delete_item_array'] if not data['update_item_array']: del data['update_item_array'] if save_inv: inv.save() if save_usr: usr.save() return data
def garcha_once(usr, garchaAmount): """ 一次求将 """ inv = usr.getInventory() garchaConf = config.getConfig('garcha') gameConf = config.getConfig('game') now = currentTime() garcha.update_garcha(usr, now) garchaInfo = None if garchaAmount == 10: garchaInfo = usr.garcha['garcha10'] elif garchaAmount == 100: garchaInfo = usr.garcha['garcha100'] elif garchaAmount == 10000: garchaInfo = usr.garcha['garcha10000'] isFirstTime = (garchaInfo['last_time'] == 0) isFree = False duration = now - garchaInfo['last_time'] cooldownConf = 0 cooldown = 0 isCooldown = False if garchaAmount == 10: cooldownConf = gameConf['garcha_10_cooldown'] if garchaAmount == 100: cooldownConf = gameConf['garcha_100_cooldown'] if garchaAmount == 10000: cooldownConf = gameConf['garcha_10000_cooldown'] cooldown = cooldownConf - duration if cooldown > 0: isCooldown = True else: isCooldown = False cooldown = 0 if garchaAmount == 10: isFree = ((gameConf['garcha_10_times'] - garchaInfo['count']) > 0) and not isCooldown elif garchaAmount == 100: isFree = ((gameConf['garcha_100_times'] - garchaInfo['count']) > 0) and not isCooldown elif garchaAmount == 10000: isFree = ((gameConf['garcha_10000_times'] - garchaInfo['count']) > 0) and not isCooldown garchaCostGold = 0 garchaCostGem = 0 garchaType = '' garchaDropid1 = '' garchaDropid2 = '' garchaDropid3 = '' time_score = 0 luck_score = 0 petConf = config.getConfig('pet') if not isFree: if garchaAmount == 10: garchaCostGold = gameConf['garcha_10_price']['gold'] garchaCostGem = gameConf['garcha_10_price']['gem'] garchaType = 'garcha_10' garchaDropid1 = gameConf['garcha_10_dropid1'] elif garchaAmount == 100: garchaCostGold = gameConf['garcha_100_price']['gold'] garchaCostGem = gameConf['garcha_100_price']['gem'] garchaType = 'garcha_100' garchaDropid2 = gameConf['garcha_100_dropid2'] garchaDropid1 = gameConf['garcha_100_dropid1'] garchaDropid3 = gameConf['garcha_100_dropid3'] time_score = garchaConf[vip.level( usr)]['garcha_100_free_time_score'] luck_score = garchaConf[vip.level( usr)]['garcha_100_free_luck_score'] if not garchaInfo.has_key('time_score'): garchaInfo['time_score'] = 0 if not garchaInfo.has_key('luck_score'): garchaInfo['luck_score'] = 0 elif garchaAmount == 10000: garchaCostGold = gameConf['garcha_10000_price']['gold'] garchaCostGem = gameConf['garcha_10000_price']['gem'] garchaDropid1 = gameConf['garcha_10000_dropid1'] garchaDropid2 = gameConf['garcha_10000_dropid2'] garchaDropid3 = gameConf['garcha_10000_dropid3'] time_score = garchaConf[vip.level( usr)]['garcha_10000_free_time_score'] luck_score = garchaConf[vip.level( usr)]['garcha_10000_free_luck_score'] if not garchaInfo.has_key('time_score'): garchaInfo['time_score'] = 0 if not garchaInfo.has_key('luck_score'): garchaInfo['luck_score'] = 0 garchaType = 'garcha_10000' if inv.CountCardByQuality(5, petConf) > 0: time_score = int(time_score / 2) else: if garchaAmount == 10: garchaType = 'garcha_10_free' garchaDropid1 = gameConf['garcha_10_dropid1'] elif garchaAmount == 100: garchaType = 'garcha_100_free' garchaDropid2 = gameConf['garcha_100_dropid2'] garchaDropid1 = gameConf['garcha_100_dropid1'] garchaDropid3 = gameConf['garcha_100_dropid3'] time_score = garchaConf[vip.level( usr)]['garcha_100_time_score'] luck_score = garchaConf[vip.level( usr)]['garcha_100_luck_score'] if not garchaInfo.has_key('time_score'): garchaInfo['time_score'] = 0 if not garchaInfo.has_key('luck_score'): garchaInfo['luck_score'] = 0 elif garchaAmount == 10000: garchaType = 'garcha_10000_free' garchaDropid1 = gameConf['garcha_10000_dropid1'] garchaDropid2 = gameConf['garcha_10000_dropid2'] garchaDropid3 = gameConf['garcha_10000_dropid3'] time_score = garchaConf[vip.level( usr)]['garcha_10000_time_score'] luck_score = garchaConf[vip.level( usr)]['garcha_10000_luck_score'] if not garchaInfo.has_key('time_score'): garchaInfo['time_score'] = 0 if not garchaInfo.has_key('luck_score'): garchaInfo['luck_score'] = 0 fatigue = inv.CountCardByQuality(5, petConf) if fatigue > 5: fatigue = 5 time_score = int(time_score / (1 + fatigue)) if usr.gold < garchaCostGold: return {'msg': 'gold_not_enough'} if usr.gem < garchaCostGem: return {'msg': 'gem_not_enough'} awd = {} if garchaAmount == 10: awd = drop.open(usr, garchaDropid1, awd) else: awd = {} if garchaInfo['time_score'] >= 800: rd = randint() if (rd <= 300) or (garchaInfo['time_score'] >= 1200): if garchaInfo['luck_score'] < 96: awd = drop.open(usr, garchaDropid2, awd) else: rd = randint() if rd < 5000: awd = drop.open(usr, garchaDropid3, awd) else: awd = drop.open(usr, garchaDropid2, awd) garchaInfo['time_score'] = 0 garchaInfo['luck_score'] = 0 time_score = 0 luck_score = 0 else: awd = drop.open(usr, garchaDropid1, awd) else: awd = drop.open(usr, garchaDropid1, awd) data = drop.makeData(awd, {}) usr.gold = usr.gold - garchaCostGold usr.gem = usr.gem - garchaCostGem if isFree: garchaInfo['last_time'] = now garchaInfo['count'] = garchaInfo['count'] + 1 if time_score or luck_score: garchaInfo['time_score'] = garchaInfo['time_score'] + time_score garchaInfo['luck_score'] = garchaInfo['luck_score'] + luck_score duration = now - garchaInfo['last_time'] cooldown = cooldownConf - duration data['gold'] = usr.gold data['gem'] = usr.gem data['garcha'] = {} data['garcha']['count'] = garchaInfo['count'] data['garcha']['cooldown'] = cooldown usr.save() inv.save() return data
def use(usr, id, cnt): inv = usr.getInventory() it = inv.getItem(id) if not it: return {'msg': 'item_not_exist'} if it['count'] < cnt: return {'msg': 'time_not_enough'} itemid = it['itemid'] itemConfig = config.getConfig('item') itemInfo = itemConfig[itemid] data = {} data['delete_item_array'] = [] data['update_item_array'] = [] itemCount = cnt save_usr = False save_inv = False for (funkey, v) in itemInfo['fun'].items(): if funkey == 'treasure': key = None while itemCount > 0: keyitemid = v[1] dropid = v[0] if keyitemid != '': key = item.get_by_itemid(inv, keyitemid) if not key: if itemCount == cnt: return {'msg': 'key_not_exist'} else: break updateIt = inv.delItem(key['id']) if updateIt == None: data['delete_item_array'].append(key['id']) else: data['update_item_array'].append(updateIt) key = None inv.save() awd = {} awd = drop.open(usr, dropid, awd) data = drop.makeData(awd, data) itemCount = itemCount - 1 if key: data['update_item_array'].append(key) elif funkey == 'protect': if not vip.canBuyArenaProtectTimes(usr): return {'msg': 'vip_required'} addProtectTime = v[0] newProtectTime = medal.add_protect_time(usr, addProtectTime) data['protect_time'] = newProtectTime usr.vip['buy_arena_protect_times'] = usr.vip[ 'buy_arena_protect_times'] + 1 save_usr = True elif funkey == 'stamina': if not vip.canBuyStamina(usr): return {'msg': 'vip_required'} stamina = int(v[0]) usr.chargeStamina(stamina * itemCount) itemCount = 0 data['st'] = usr.stamina usr.vip['buy_stamina_count'] = usr.vip['buy_stamina_count'] + 1 save_usr = True elif funkey == 'sp': if not vip.canBuyStamina(usr): return {'msg': 'vip_required'} sp = int(v[0]) usr.sp = usr.sp + sp * itemCount itemCount = 0 data['sp'] = usr.sp usr.vip['buy_sp_count'] = usr.vip['buy_sp_count'] + 1 save_usr = True elif funkey == 'arena_count': if not vip.canBuyArenaTimes(usr): return {'msg': 'vip_required'} times = int(v[0]) usr.arena['times'] = usr.arena['times'] - times * itemCount itemCount = 0 data['arena_times'] = usr.arena['times'] usr.vip['buy_arena_times'] = usr.vip['buy_arena_times'] + 1 save_usr = True elif funkey == 'protect': pass elif funkey == 'key': treasure = None while itemCount > 0: treasureid = v[0] treasure = item.get_by_itemid(treasureid) if not treasure: if itemCount == cnt: return {'msg': 'treasure_not_exist'} else: break treasureInfo = itemConfig[treasure['itemid']] if not treasureInfo['fun'].has_key('treasure'): if itemCount == cnt: return {'msg': 'treasure_is_not'} else: break dropid = treasureInfo['fun']['treasure'][0] awd = {} awd = drop.open(usr, dropid, awd).s() data = drop.makeData(awd, data) if inv.delItem(treasure['id']) == None: data['delete_item_array'].append(treasure['id']) treasure = None inv.save() if treasure: data['update_item_array'].append(treasure) elif funkey == 'medium': pass if inv.delItem(it['id'], cnt - itemCount) == None: data['delete_item_array'].append(it['id']) else: data['update_item_array'].append(it) save_inv = True if not data['delete_item_array']: del data['delete_item_array'] if not data['update_item_array']: del data['update_item_array'] if save_inv: inv.save() if save_usr: usr.save() return data
def beat(usr, difficulty, star, dp, ehc): """ 战胜 """ if not usr.tower['current']: return {'msg':'tower_not_start'} if usr.tower['current'].has_key('enhance') and (ehc == -1): return {'msg':'tower_enhance_required'} gameConf = config.getConfig('game') towerAwardConf = config.getConfig('tower_award') towerMonster = config.getConfig('tower_monster') usr.tower['current']['point'] = usr.tower['current']['point'] + star * difficulty usr.tower['current']['energy'] = usr.tower['current']['energy'] + star * difficulty usr.tower['current']['score'] = usr.tower['current']['score'] + star * difficulty usr.tower['current']['floor'] = usr.tower['current']['floor'] + 1 if usr.tower['max_point'] < usr.tower['current']['point']: usr.tower['max_point'] = usr.tower['current']['point'] while len(usr.tower['floor_score']) < usr.tower['current']['floor']: usr.tower['floor_score'].append(0) while len(usr.tower['floor_point']) < usr.tower['current']['floor']: usr.tower['floor_point'].append(0) newPoint = False if usr.tower['floor_point'][usr.tower['current']['floor'] - 1] < usr.tower['current']['point']: newPoint = True newScore = False if usr.tower['floor_score'][usr.tower['current']['floor'] - 1] < usr.tower['current']['score']: newScore = True print usr.tower['floor_score'][usr.tower['current']['floor'] - 1], usr.tower['current']['score'] data = {} if ehc != -1: if not usr.tower['current'].has_key('enhance'): return {'msg':'tower_enhance_not_exsit'} tower.do_enhance(usr, ehc, gameConf) enhance = [] if usr.tower['current']['floor'] % gameConf['tower_enhance_interval_floor'] == 0: enhance = tower.make_enhance_list() usr.tower['current']['enhance'] = enhance if usr.tower['current']['floor'] % gameConf['tower_award_interval_floor'] == 0: towerAwardInfo = towerAwardConf[str(usr.tower['current']['floor'])] if newPoint: awd = {} awd = drop.open(usr, towerAwardInfo[1], awd) data = drop.makeData(awd, data,'top_drop') usr.tower['floor_point'][usr.tower['current']['floor'] - 1] = usr.tower['current']['point'] if newScore: if usr.tower['current']['score'] > 45: awd = {} awd = drop.open(usr, towerAwardInfo[3], awd) data = drop.makeData(awd, data, 'record_drop') if usr.tower['current']['score'] > 30: awd = {} awd = drop.open(usr, towerAwardInfo[2], awd) data = drop.makeData(awd, data, 'record_drop') usr.tower['floor_score'][usr.tower['current']['floor'] - 1] = usr.tower['current']['score'] usr.tower['current']['score'] = 0 if usr.tower['max_floor'] < usr.tower['current']['floor']: usr.tower['max_floor'] = usr.tower['current']['floor'] if dp: awd = {} awd = drop.open(usr, towerMonster[usr.tower['current']['floor']]['dropid'], awd) data = drop.makeData(awd, data, 'random_drop') usr.save() if enhance: data['tower_enhance'] = enhance data['tower_point'] = usr.tower['current']['point'] data['tower_energy'] = usr.tower['current']['energy'] data['tower_strength'] = usr.tower['current']['strength'] data['tower_intelligence'] = usr.tower['current']['intelligence'] data['tower_artifice'] = usr.tower['current']['artifice'] data['tower_floor'] = usr.tower['current']['floor'] data['tower_max_floor'] = usr.tower['max_floor'] data['tower_max_point'] = usr.tower['max_point'] return data