Ñò
Ö³Pc        	   @   sÜ   d  d k  Z  d  d k Z d  d k Z d  d k Z d  d k l Z d  d k l Z d  d k	 Td d „ Z d d „ Z d d „ Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d S(   iÿÿÿÿN(   t   izip(   t   ARENA_BONUS_TYPE_CAPS(   t   *c         C   sR   t  | | ƒ } t |  | | ƒ \ } } } | p t | |  | ƒ n t |  i ƒ S(   N(   t   _resultOverridingt   _updateDossierCommonPartt   _updateVehicleDossierImplt   sett   popUps(   t   descrt   battleResultst	   dossierXPt   vehTypeCompDescrt   resultsOverridingt   resultst   stopt   _(    (    s"   scripts/common/dossiers/helpers.pyt   updateVehicleDossier   s
    c         C   sn   t  | | ƒ } t | | | ƒ \ } }	 }
 | p0 t | | | | |	 |
 ƒ t |  | | | ƒ n t | i ƒ S(   N(   R   R   t   _updateAccountDossierImplt"   _validateAccountAndVehicleDossiersR   R   (   t
   databaseIDR   R	   R
   R   t   vehDossierDescrR   R   R   t   isMaxFragsGainedt   isMaxXPGained(    (    s"   scripts/common/dossiers/helpers.pyt   updateAccountDossier$   s    c         C   s)   t  | | ƒ } t |  | ƒ t |  i ƒ S(   N(   R   t   _updateTankmanDossierImplR   R   (   R   R	   R   R   (    (    s"   scripts/common/dossiers/helpers.pyt   updateTankmanDossier6   s    c         C   s/   | d  j o |  St |  ƒ } | i | ƒ | S(   N(   t   Nonet   dictt   update(   R	   R   R   (    (    s"   scripts/common/dossiers/helpers.pyR   >   s
    c         C   sŸ  t  t i | d ƒ t i @ƒ p t t t f S|  i ƒ  |  d c | d 7<t t i ƒ  ƒ |  d <t	 |  d | | ƒ t  t i | d ƒ t i
 @ƒ o t	 |  d | | ƒ n t  t i | d ƒ t i @ƒ o t	 |  d | | ƒ n | d d	 j o) | d
 | d j o |  d c d 7<n | d } | o—t |  d ƒ } t i d } t i d } t i d } t i d } d	 }	 }
 } } x¬ | D]¤ \ } } } | i | d	 ƒ } t | d d ƒ | | <| | j o |	 d 7}	 n | | j o |
 d 7}
 n | | j o | d 7} n | | j o | d 7} qŽqŽW| |  d <|	 d	 j o |  d c |	 7<n |
 d	 j o |  d c |
 7<n | d	 j o |  d c | 7<n | d	 j o |  d c | 7<qÈn t  t i | d ƒ t i @ƒ p t t t f St } | d	 j o% | |  d j o t } | |  d <n x" | d D] } t i |  | ƒ q:Wt } | o1 t | ƒ |  d j o t | ƒ |  d <t } n t | | f S(   Nt	   bonusTypet   battleLifeTimet   lifeTimet   lastBattleTimet    s   company/s   clan/t   killerIDi    t
   winnerTeamt   teamt   winAndSurvivedi   t	   kill_listt   vehTypeFragss
   vehicles8+t   beastVehiclest   sinaiVehiclest   pattonVehiclesiaê  t   frags8pt
   fragsBeastt
   fragsSinait   fragsPattont   maxXPt   achievementst   maxFrags(   t   boolt
   BONUS_CAPSt   gett   DOSSIER_TOTAL_VALUESt   Truet   Falset   expandt   intt   timet(   _updateDossierRecordsWithBonusTypePrefixt   DOSSIER_COMPANY_VALUESt   DOSSIER_CLAN_VALUESR   t   dossierst   g_cachet   mint   DOSSIER_RND_VALUESt   arena_achievementst   updateDossierRecordt   len(   R   R   R
   R&   R'   t
   vehicles8pR(   R)   R*   R+   R,   R-   R.   R   t   vtcdt   fragsR   t
   achieveIdxR   (    (    s"   scripts/common/dossiers/helpers.pyR   N   sn    !
!!&
 
! 
c         C   s9  |  | d c d 7<| d j o |  | d c | 7<n | d | d j o |  | d c d 7<n2 | d d | d j o |  | d	 c d 7<n | d
 d j o |  | d c d 7<n | d } | d j o |  | d c | 7<n | d } | d j o |  | d c | 7<n | d } | o |  | d c | 7<n | d } | d j o |  | d c | 7<n | d } | d j o |  | d c | 7<n | d }	 |	 d j o |  | d c |	 7<n t  | d d ƒ }
 |
 d j o |  | d c |
 7<n | d } | o |  | d c | 7<n d  S(   Nt   battlesCounti   i    t   xpR#   R$   t   winsi   t   lossesR"   t   survivedBattlest   shotst   hitst   spottedt   damageDealtt   damageReceivedt   capturePointst   droppedCapturePointsid   t   killsRG   (   R@   (   R   t   prefixR   R
   RN   RO   RP   RQ   RR   RS   RT   RU   (    (    s"   scripts/common/dossiers/helpers.pyR;   ”   sB    






c         C   só   t  t i | d ƒ t i @ƒ p d  S| d | d j  o | d | d <n t i |  ƒ d } t | d | d d j o | d d j o
 d | j ƒ t | d	 | d d j o
 d | j ƒ t | d
 | ƒ t | d | ƒ t | d | ƒ d  S(   NR   t   markOfMasteryt   tagst   invincibleSeriesR"   i    RR   t   SPGt   diehardSeriest   snipert   killingt   piercing(   R2   R3   R4   RA   t   utilst   vehicleTypeByCompactDescrt   _updatePerBattleSeriest   _updateInBattleSeries(   R   R   R   RX   (    (    s"   scripts/common/dossiers/helpers.pyR   Ã   s    !	"	c         C   s>   |  i  | ƒ p d  S| o |  | c d 7<n d |  | <d  S(   Ni   i    (   t	   hasRecord(   R   t   achieveNamet   isNotInterrupted(    (    s"   scripts/common/dossiers/helpers.pyRa   Ü   s
    c         C   s†   t  i | } | d } |  i | ƒ p d  S| d i | g  ƒ } | o |  | | d |  | <n x | d D] } | |  | <qn Wd  S(   Nt   Seriest   seriesi    i   (   RB   t   INBATTLE_SERIES_INDICESRc   R4   (   R   Rd   R   RH   t
   recordNameRg   t	   runLength(    (    s"   scripts/common/dossiers/helpers.pyRb   é   s    
 c         C   s  | d  j	 p t ‚ t |  d ƒ } | i | d ƒ \ } } }	 | d | d j o | d 7} n | d | | d f | | <| |  d <t t i | d ƒ t i @ƒ p d  Sd }
 x5 |
 D]- } | | |  | j o | | |  | <qº qº W| o | |  d <n | o | |  d <n d  S(   Nt   vehDossiersCuti    R#   R$   i   RW   R   t   maxInvincibleSeriest   maxDiehardSeriest   maxSniperSeriest   maxKillingSeriest   maxPiercingSeriest   maxXPVehiclet   maxFragsVehicle(   i    i    i    (   Rl   Rm   Rn   Ro   Rp   (   R   t   AssertionErrorR   R4   R2   R3   RA   (   R   R   R   R   R   R   Rk   RI   RK   R   Rg   Ri   (    (    s"   scripts/common/dossiers/helpers.pyR   ø   s&    
!  c         C   s…   t  t i | d ƒ t i @ƒ p d  S|  d c d 7<t  t i | d ƒ t i @ƒ p d  Sx" | d D] } t i |  | ƒ qg Wd  S(   NR   RI   i   R0   (   R2   R3   R4   R5   RA   RB   RC   (   R   R   RH   (    (    s"   scripts/common/dossiers/helpers.pyR     s    !! c   
      C   sË  t  } y> | d | d j  o% t d |  | | d | d f ‚ n Wn  t j
 o t ƒ  t } n X| d i | d ƒ \ } } } y6 | | d j o! t d |  | | | d f ‚ n Wn[ t j
 oO t ƒ  t | d ƒ } | d | | f | | <| | d <| d } t } n Xy6 | | d j o! t d |  | | | d f ‚ n Wn[ t j
 oO t ƒ  t | d ƒ } | | d | f | | <| | d <| d } t } n Xy6 | | d j o! t d	 |  | | | d f ‚ n WnK t j
 o? t ƒ  t | d ƒ } | | | d f | | <| | d <n X| o t | ƒ n y> | d
 | d
 j  o% t d |  | | d
 | d
 f ‚ n Wn2 t j
 o& t ƒ  | d
 | d
 <| | d <n Xy> | d | d j  o% t d |  | | d | d f ‚ n Wn2 t j
 o& t ƒ  | d | d <| | d <n Xx— t i D]Œ }	 y[ |	 | j oJ |	 | j o= | |	 | |	 j  o( t d |	 |  | | |	 | |	 f ‚ n Wq7t j
 o t ƒ  | |	 | |	 <q7Xq7Wd  S(   NRI   s,   Sum 'battlesCount' mismatch (%s, %s, %s, %s)Rk   i    s(   'battlesCount' mismatch (%s, %s, %s, %s)RK   s    'wins' mismatch (%s, %s, %s, %s)RW   s)   'markOfMastery' mismatch (%s, %s, %s, %s)R/   s!   'maxXP' mismatch (%s, %s, %s, %s)Rq   R1   s$   'maxFrags' mismatch (%s, %s, %s, %s)Rr   s   '%s' mismatch (%s, %s, %s, %s)(   i    i    i    (	   R7   t	   Exceptiont   LOG_CURRENT_EXCEPTIONR6   R4   R   t   _recalculateBattlesCountAndWinsRB   t   ACHIEVEMENTS(
   R   t
   accDossiert
   vehDossierR   t"   needRecalculateBattlesCountAndWinsRI   RK   RW   Rk   t   record(    (    s"   scripts/common/dossiers/helpers.pyR   &  sŠ    	 	

	

		 	 
  c         C   sZ   d } } x5 |  d i  ƒ  D]# \ } } } | | 7} | | 7} q W| |  d <| |  d <d  S(   Ni    Rk   RI   RK   (   t
   itervalues(   Rx   t   battlesCountSumt   winsSumRI   RK   RW   (    (    s"   scripts/common/dossiers/helpers.pyRv   u  s    
 

(   R:   R>   R_   RB   t	   itertoolsR    t	   constantsR   R3   t   debug_utilsR   R   R   R   R   R   R;   R   Ra   Rb   R   R   R   Rv   (    (    (    s"   scripts/common/dossiers/helpers.pyt   <module>   s&   

		F	/						O