Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # uncompyle6 version 3.9.0
- # Python bytecode version base 2.7 (62211)
- # Decompiled from: Python 3.8.10 (default, Mar 13 2023, 10:26:41)
- # [GCC 9.4.0]
- # Embedded file name: mods/mod_wb_pm_autoreset.py
- # Compiled at: 2021-06-01 21:49:39
- import BigWorld
- from PlayerEvents import g_playerEvents
- from helpers import dependency
- from skeletons.gui.shared import IItemsCache
- import Account
- from personal_missions import g_cache
- class WBPMAutoReset:
- itemsCache = dependency.descriptor(IItemsCache)
- player = None
- canReset = True
- needTimer = True
- def __init__(self):
- self._initListeners()
- self._patchQuestResetter()
- def _patchQuestResetter(self):
- old_selectPersonalMissions = Account.PlayerAccount.selectPersonalMissions
- def new_selectPersonalMissions(self, personalMissionsIDs, questType, callback):
- old_selectPersonalMissions(self, personalMissionsIDs, questType, callback)
- Account.PlayerAccount.selectPersonalMissions = new_selectPersonalMissions
- def _initListeners(self):
- self.itemsCache.onSyncCompleted += self._onSyncCompleted
- g_playerEvents.onBattleResultsReceived += self._onBattleResultsReceived
- def onEvent1(self, *args):
- self._checkQuestState()
- def onEvent2(self, *args):
- self._checkQuestState()
- def _onSyncCompleted(self, *args):
- self._checkQuestState()
- def _onBattleResultsReceived(self, isPlayerVehicle, results):
- self.canReset = True
- def _checkQuestState(self):
- questProgress = Account.g_accountRepository.questProgress
- if questProgress is None:
- return
- else:
- self.needTimer = True
- pmProgress = questProgress._QuestProgress__cache['pm2_progress']
- questsToReset = {}
- for q in pmProgress:
- quest = pmProgress[q]
- print '--\t', q, quest
- questId = g_cache._PQCache__questUniqueIDToPotapovQuestID['%s_main' % q]
- if 'battlesSeries' in quest.keys():
- questKeys = quest['battlesSeries'].keys()
- mainConditionFailed = True
- advConditionFailed = True
- if 'battles' in questKeys:
- if len(quest['battlesSeries']['battles']) == 0 and len(quest['battlesSeriesAdv']['battles']) > 0:
- mainConditionFailed = False
- print q, 'main condition done'
- else:
- for battle in quest['battlesSeries']['battles']:
- if battle:
- mainConditionFailed = False
- break
- if mainConditionFailed:
- questsToReset[questId] = True
- if 'state' in questKeys and quest['battlesSeries']['state'] >= 5:
- if len(quest['battlesSeries']['battles']) == 0 and len(quest['battlesSeriesAdv']['battles']) > 0:
- for battle in quest['battlesSeriesAdv']['battles']:
- if battle:
- advConditionFailed = False
- break
- if advConditionFailed and not mainConditionFailed:
- questsToReset[questId] = True
- print '>>', questId, 'main cond:', mainConditionFailed, 'adv cond:', advConditionFailed,
- needReset = False
- for r in questsToReset:
- needReset = needReset or questsToReset[r]
- if needReset:
- self._resetQuest(questsToReset)
- else:
- print 'no need to reset quests:', questsToReset
- return
- def _voidCallback(self, *args):
- pass
- def _resetQuest(self, questIds):
- if self.canReset:
- self.canReset = False
- print ('>> trying to reset quest:', questIds, questIds.keys())
- BigWorld.player().resetPersonalMissions(list(questIds.keys()), 2, self._voidCallback)
- print ('>> reset seems successful', list(questIds.keys()))
- else:
- print '>> reset quest blocked till next battle'
- wbPMAutoReset = WBPMAutoReset()
- # okay decompiling mod_wb_pm_autoreset.pyc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement