Ñò
 8‰Pc        I   @   sÑ  d  d k  l Z d  d k Z d  d k Z d  d k Z d  d k Z d  d k Z d  d k Z d  d k l Z d  d k	 Td  d k
 l Z l Z d  d k l Z e o d  d k l Z n d d	 d
 d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d  d d d d d! d" d# d d d d d$ d% d& d' d d d d f= Z e d( „  e e ƒ Dƒ ƒ Z e d	 d
 d d d f ƒ Z e d d d d f ƒ Z e e BZ h e i d d d d d f ƒ d	 6e i d d d d d f ƒ d 6e i d d d d f ƒ d 6e i d! d" d# f ƒ d 6e i d% d$ d' d& f ƒ d
 6Z e d	 e d
 Be d Be d Be d BZ e d d d d d d  d d! d" d# d' f ƒ Z d) Z d* Z d* Z d+ Z  d, Z! d- Z" d. Z# d/ „  Z$ d0 „  Z% d1 „  Z& e' d2 „ Z( d3 „  Z) g  e d4 d5 „ Z* d6 „  Z+ d7 „  Z, d8 „  Z- d9 „  Z. d: „  Z/ d; e0 f d< „  ƒ  YZ1 d= „  Z2 d> „  Z3 d? „  Z4 d@ „  Z5 dA „  Z6 e o dB „  Z7 e7 Z8 n dC „  Z7 dD „  Z8 dE „  Z9 dF „  Z: dG „  Z; dH „  Z< dI „  Z= dJ „  Z> dK „  Z? dL „  Z@ dM „  ZA dN „  ZB dO „  ZC h e; d 6e; d 6e; d 6e e< dP dQ ƒ d 6e e= dR ƒ d 6e e> dS ƒ d 6e e= dT ƒ d 6e e= dT ƒ d 6eA d 6e e= dU ƒ d 6e e= dV ƒ d 6e e= dW ƒ d 6eC d 6e e= dX ƒ d 6e e= dV ƒ d 6e e> dY ƒ d 6e? d 6e e= dZ ƒ d  6e@ d 6e e= d[ ƒ d! 6eB d" 6e e> d\ ƒ d# 6e e= d] ƒ d% 6e e= d^ ƒ d$ 6e e< d_ d` ƒ d' 6e e= da ƒ d& 6ZD eE aF g  ZG eH eI e iJ ƒ ƒ D] ZK eG eE q¥[G aL db „  ZM eM ƒ  ZN d S(c   iÿÿÿÿ(   t   partialN(   t   _xml(   t   *(   t	   IS_CLIENTt   ITEM_DEFS_PATH(   t   VEHICLE_CLASS_TAGS(   t   i18nt   reservedt	   commandert   radiomant   drivert   gunnert   loadert   repairt   fireFightingt
   camouflaget   brotherhoodt   commander_tutort   commander_eagleEyet   commander_sixthSenset   commander_expertt   commander_universalistt   driver_virtuosot   driver_smoothDrivingt   driver_badRoadsKingt   driver_rammingMastert   driver_tidyPersont   gunner_gunsmitht   gunner_snipert   gunner_smoothTurrett   gunner_rancoroust   gunner_woodHuntert   loader_pedantt   loader_desperadot   loader_intuitiont   radioman_inventort   radioman_findert   radioman_retransmittert   radioman_lastEffortc         c   s?   x8 |  ]1 } | d  i  d ƒ p | d  | d f Vq q Wd S(   i   R   i    N(   t
   startswith(   t   .0t   x(    (    s   scripts/common/items/tankmen.pys	   <genexpr>b   s   	 id   i2   i
   i ”5wg      I@g      Y@c         C   s@   |  o5 t  ƒ  x+ t t t i ƒ ƒ D] } t | ƒ q$ Wn d  S(   N(   t   getSkillsConfigt   xranget   lent   nationst   NAMESt   getNationConfig(   t   preloadEverythingt   nationID(    (    s   scripts/common/items/tankmen.pyt   init¢   s
     c           C   s%   t  d  j o t t d ƒ a  n t  S(   Ns   tankmen/tankmen.xml(   t   _g_skillsConfigt   Nonet   _readSkillsConfigR   (    (    (    s   scripts/common/items/tankmen.pyR*   ³   s    c         C   sd   t  |  d  j oK t i |  } | t i j o h  t  |  <q\ t t d | d ƒ t  |  <n t  |  S(   Ns   tankmen/s   .xml(   t   _g_nationsConfigR4   R-   R.   t   AVAILABLE_NAMESt   _readNationConfigR   (   R1   t
   nationName(    (    s   scripts/common/items/tankmen.pyR/   ×   s    c      
   C   sÃ   t  } t |  ƒ | p d n d } t i ƒ  } d } xI | D]A } | d } | | j o | | j  n o Pn | | 7} q= W|  | | d t i | d ƒ t i | d ƒ t i | d ƒ f S(	   Nt   normalGroupst   premiumGroupsg        t   weightt	   isFemalest   firstNamesListt   lastNamesListt	   iconsList(   t   FalseR/   t   randomt   choice(   R1   t	   isPremiumt   groupst   wt
   summWeightt   groupR<   (    (    s   scripts/common/items/tankmen.pyt   generatePassportç   s     
"
c         C   s8  g  } g  } x%t  t | ƒ ƒ D]} | | }	 xo t  d ƒ D]a }
 t |  | ƒ } xI | D]@ } | d | d j o Pn | d d !| d d !j o PqX qX WPq< W| i | ƒ g  } | oL t ƒ  } x/ t  t |	 ƒ ƒ D] } | i t |	 | ƒ q× W| i | ƒ n t | | |	 d | | ƒ } | i | ƒ q W| S(   Ni
   i   i   i    (	   R+   R,   RI   t   appendt   sett   updatet   SKILLS_BY_ROLESt   extendt   generateCompactDescr(   R1   t   vehicleTypeIDt   rolesRD   t	   roleLevelt   addTankmanSkillst   tankmenListt   prevPassportst   it   rolet   jt   passportt   prevPassportt   skillst   tankmanSkillst   tmanCompDescr(    (    s   scripts/common/items/tankmen.pyt   generateTankmen	  s4     
  		 t    c         C   s{  t  i } t | j o
 t j n p t ‚ |  \ } }	 }
 } } } t i d | d >} | d | | t | | ƒ } t | ƒ } g  } | D] } | t | qŽ ~ } | | t	 d | ƒ d | | Œ 7} | t
 | o | n d ƒ 7} t | t t ƒ \ } } t | } |
 o d n d }
 |	 o d n d }	 |
 |	 d >B} | | d | | | | | | d >Bd ƒ 7} | | 7} | S(	   Nt   tankmani   t   4Bi   t   Bi    s   <B4Hii   (   t   structt   packt   MIN_ROLE_LEVELt   MAX_SKILL_LEVELt   AssertionErrort   itemst   ITEM_TYPE_INDICESt   SKILL_INDICESR,   t   strt   chrt   divmodt   SKILL_LEVELS_PER_RANK(   RY   RP   RW   RR   R[   t   lastSkillLevelt   dossierCompactDescrRd   R1   RD   t   isFemalet   firstNameIDt
   lastNameIDt   iconIDt   headert   cdt	   numSkillst   _[1]t   st   rankt   levelsToNextRankt   flags(    (    s   scripts/common/items/tankmen.pyRO   4  s"    		%%$
*
c         C   s   |  d t  |  d ƒ  S(   Ni   i   (   t   ord(   t   compactDescr(    (    s   scripts/common/items/tankmen.pyt   stripNonBattleZ  s    c         C   s3   t  |  d ƒ d ?d @t  |  d ƒ t  |  d ƒ f S(   Ni    i   i   i   i   (   R}   (   R~   (    (    s   scripts/common/items/tankmen.pyt   parseNationSpecAndRoleb  s    c         C   s   t  |  i ƒ  | i ƒ  ƒ S(   N(   t   cmpt   totalXP(   t   tankmanDescr1t   tankmanDescr2(    (    s   scripts/common/items/tankmen.pyt   compareMasterym  s    c         C   s¢   d } t  } x] |  D]U } | i d j o | i d ƒ } | p d Sn | i d ƒ t j o
 t } q q Wt ƒ  } | o | | d d 7} n | | d d S(   Ni    R   R   g        R   t   crewLevelIncreaset   xpBonusFactorPerLevel(   t   TrueRW   t
   skillLevelRf   RA   R*   (   t   crewt
   tutorLevelt   haveBrotherhoodt   tt   skillsConfig(    (    s   scripts/common/items/tankmen.pyt"   commanderTutorXpBonusFactorForCrewu  s     		c   	      C   s  |  } t  | d ƒ } | d @t i d j p t ‚ | d ?d @} t | ƒ } t  | d ƒ d } t i d | | | d !ƒ \ } } t } | | d j o t } t	 | ƒ d } n | | d	 j o t } t	 | ƒ d } n | p | S| |  t i
 d | | ƒ | | d S(
   Ni    i   R`   i   i   s   <2Ht
   firstNamesi   t	   lastNames(   R}   Rh   Ri   Rg   R/   Rc   t   unpackRA   Rˆ   RI   Rd   (	   R~   Rv   Ru   R1   t   conft   namesOffsetRr   Rs   t
   hasChanges(    (    s   scripts/common/items/tankmen.pyt   fixObsoleteNamesŽ  s"    #t   TankmanDescrc           B   s¿   e  Z e d  „ Z d „  Z d „  Z e d „  ƒ Z d „  Z d „  Z	 d „  Z
 d „  Z d d	 „ Z d d
 „ Z d „  Z d d d d d „ Z d „  Z d „  Z d „  Z d d „ Z d „  Z RS(   c         C   s   |  i  | | ƒ d  S(   N(   t#   _TankmanDescr__initFromCompactDescr(   t   selfR~   t
   battleOnly(    (    s   scripts/common/items/tankmen.pyt   __init__Ó  s    c         C   s¥   | i  i \ } } | |  i j p t ‚ d } | |  i j oO |  i | i  ƒ \ } } | o | o d n d } qŽ | o d n d } n | i d } | | f S(   Ng      ð?g      è?g      à?R†   (   t   typet   idR1   Rg   RP   t   _TankmanDescr__paramsOnVehiclet	   miscAttrs(   R™   t   vehicleDescrR1   RP   t   factorRD   t   isSameClasst   addition(    (    s   scripts/common/items/tankmen.pyt   efficiencyOnVehicleÞ  s    c   	      C   sØ   | i  \ } } | |  i j p t ‚ | |  i j oT |  i | ƒ \ } } | o | | o d n d 9} qŠ | | o d n d 9} n | | i 9} | p | d 9} n |  i d j o | d | 9} n t | ƒ S(   Ng      ð?g      à?g      Ð?gÍÌÌÌÌÌì?R   (   R�   R1   Rg   RP   Rž   t   crewXpFactorRW   t   int(	   R™   t   xpt   vehicleTypet   tankmanHasSurvivedt   commanderTutorXpBonusFactorR1   RP   RD   R¢   (    (    s   scripts/common/items/tankmen.pyt   battleXpGainõ  s    c         C   s"   t  } d | | |  d | |  S(   Ni   i   (   t   _g_levelXpCosts(   t   fromSkillLevelt   skillSeqNumt   costs(    (    s   scripts/common/items/tankmen.pyt   levelUpXpCost  s    c         C   s5   | |  i  j o d  S| |  i  d j o t S|  i S(   Niÿÿÿÿ(   R[   R4   Rf   Ro   (   R™   t	   skillName(    (    s   scripts/common/items/tankmen.pyR‰     s    c         C   s�   t  } |  i | |  i } t |  i ƒ } | oM | | |  i d | 7} x1 t d | ƒ D] } | | t d | 7} qY Wn | S(   Ni   i   (   R¬   t   freeXPRR   R,   R[   Ro   R+   Rf   (   R™   t
   levelCostsR§   Rw   t   idx(    (    s   scripts/common/items/tankmen.pyR‚      s     c         C   s¯   t  t |  i | ƒ |  _ xg |  i t j  oV |  i |  i d ƒ } | |  i j o Pn |  i | 8_ |  i d 7_ |  i ƒ  q W|  i t j o |  i o |  i ƒ  n d  S(   Ni    i   (	   t   mint   _MAX_FREE_XPR²   RR   Rf   R°   t'   _TankmanDescr__updateRankAtSkillLevelUpR[   t   _TankmanDescr__levelUpLastSkill(   R™   R§   t   xpCost(    (    s   scripts/common/items/tankmen.pyt   addXP7  s     c         C   s¨   | |  i  j o t | ‚ n | t j o t | ‚ n |  i t j o t |  i ‚ n |  i  o  |  i t j o t |  i ‚ n |  i  i | ƒ d |  _ |  i ƒ  d  S(   Ni    (   R[   t
   ValueErrort   ACTIVE_SKILLSRR   Rf   Ro   RJ   R¸   (   R™   R±   (    (    s   scripts/common/items/tankmen.pyt   addSkillR  s    	g        c         C   sÔ   d | j o
 d j n p t  ‚ |  i ƒ  } |  i d j oM |  i |  i 7_ t |  i ƒ } | d j o |  i t | d 7_ qŽ n |  i 2d |  _ | d j o% |  i t | | |  i ƒ  ƒ ƒ n d  S(   Ng        g      ð?i    i   (	   Rg   R‚   t   numLevelsToNextRankRo   R,   R[   Rf   Rº   R¦   (   R™   t   xpReuseFractiont   prevTotalXPRw   (    (    s   scripts/common/items/tankmen.pyt
   dropSkillsh  s    %	c         C   s  d | j o
 d j n p t  ‚ |  i i | ƒ } |  i ƒ  } t |  i ƒ } t } | d j o |  i } d |  _ n( | d | j o |  i } t |  _ n |  i | =|  i d j o |  i | 7_ n | d j o% |  i t	 | | |  i ƒ  ƒ ƒ n d  S(   Ng        g      ð?i   i    (
   Rg   R[   t   indexR‚   R,   Rf   Ro   R¾   Rº   R¦   (   R™   R±   R¿   R´   RÀ   Rw   t   levelsDropped(    (    s   scripts/common/items/tankmen.pyt	   dropSkill€  s     %		
c         C   s¸  d | j o
 t  j n p t ‚ d | j o
 d j n p t ‚ d | j o
 d j n p t ‚ d d k l } | i i |  i ƒ | d } | |  i j o d n | } t |  i	 | @| i
 @ƒ }	 |	 p | | 7} n t t |  i d | ƒ ƒ }
 t | |
 ƒ }
 | |  _ | |  _	 |
 |  i j o* |  i |
 |  i ƒ |
 |  _ d |  _ nU |
 |  i j  oD |  i d j o |  i |  i |
 7_ n |
 |  _ |  i d ƒ n d  S(   Ni    g        g      ð?iÿÿÿÿ(   t   vehiclest   tags(   Rf   Rg   Rh   RÅ   t   g_listt   getListR1   RP   R,   t   _TankmanDescr__vehicleTagsR   R¦   t   roundRR   t   maxR·   t   freeXpR¾   Rº   (   R™   t   newVehicleTypeIDt   minNewRoleLevelt   vehicleChangeRoleLevelLosst   classChangeRoleLevelLosst   becomesPremiumRÅ   t
   newVehTagst   roleLevelLossR¢   t   newRoleLevel(    (    s   scripts/common/items/tankmen.pyt   respecialize   s,    %%%				c         C   s6  | d  j o |  i } n | d  j o |  i } n | d  j o |  i } n | d  j o |  i } n t } t |  i ƒ } xƒ | d | d D]o } t | d ƒ t | ƒ j o q� n | | d j o q� n | | d j o | | d j o
 t	 } n Pq� W| o( | |  _ | |  _ | |  _ | |  _ n | S(   NR:   R;   R=   R�   R‘   t   icons(
   R4   Rq   Rr   Rs   Rt   RA   R/   R1   t   boolRˆ   (   R™   Rq   Rr   Rs   Rt   t   isOkt   configRH   (    (    s   scripts/common/items/tankmen.pyt   replacePassportÉ  s2     "
			c         C   sS  t  i } t i d |  i d >} | d | |  i t |  i |  i ƒ } t	 |  i
 ƒ } g  } |  i
 D] } | t | qc ~ } | | t d | ƒ d | | Œ 7} | t | o
 |  i n d ƒ 7} |  i o d n d } |  i o d n d }	 | |	 d >B}
 | | d |
 |  i |  i |  i |  i d @|  i d	 @d
 >B|  i ƒ 7} | |  i 7} | S(   NR`   i   Ra   i   Rb   i    s   <B4Hii   iÿ  i   (   Rc   Rd   Rh   Ri   R1   RP   Rj   RW   RR   R,   R[   Rk   Rl   Ro   Rq   RD   Rr   Rs   Rt   t   _TankmanDescr__rankIdxR¾   R²   Rp   (   R™   Rd   Ru   Rv   Rw   Rx   Ry   R[   Rq   RD   R|   (    (    s   scripts/common/items/tankmen.pyt   makeCompactDescró  s     	%($!	c         C   s  | } t  i } yà| d | d  ƒ \ } |  _ } |  _ } | d } | d @t i d j p t ‚ | d ?d @} t i | | |  _	 d d k l
 }	 |	 i i | ƒ |  i d |  _ t | |  _ |  i t j o t |  i ‚ n |  i t j o t |  i ‚ n g  |  _ | d	 j o d	 |  _ n™ xb | t | ƒ d
 | |  ƒ D]C }
 t |
 } | t j o t | |  i f ‚ n |  i i | ƒ qCWt | | ƒ |  _ |  i t j o t |  i ‚ n | | d } | o d  St | ƒ } | d | d  ƒ \ } |  _ |  _ |  _ } |  _ | d } | |  _ t  | d @ƒ |  _! t  | d @ƒ |  _" | d @|  _# | d ?|  _$ | d |  i |  i# |  _% |  i | d j o t |  i ‚ n |  i | d j o t |  i ‚ n |  i | d j o t |  i ‚ n Wn# t& j
 o t' d | ƒ ‚  n Xd  S(   Nt   5Bi   i   R`   i   iÿÿÿÿ(   RÅ   RÆ   i    Rb   i   s   <B4Hii   i   i   t	   roleRanksR�   R‘   RÖ   s&   (compact description to XML mismatch?)((   Rc   R’   RP   RR   Rh   Ri   Rg   R-   R.   R1   RÅ   RÇ   RÈ   RÉ   t   SKILL_NAMESRW   t   ROLESt   KeyErrorRf   R»   R[   Ro   Rk   R¼   RJ   R}   R/   Rr   Rs   Rt   R²   Rp   R×   Rq   RD   RÛ   R¾   t   rankIDt	   Exceptiont	   LOG_ERROR(   R™   R~   Rš   Rv   R’   Ru   t   roleIDRw   R1   RÅ   t   skillIDR±   t   nationConfigR|   Rz   (    (    s   scripts/common/items/tankmen.pyt   __initFromCompactDescr&  sb    	(
	 	 
1
	c         C   s3   d | i  j } t t | i  @|  i @ƒ } | | f S(   Nt   premium(   RÆ   R,   R   RÉ   (   R™   R¨   RD   R¢   (    (    s   scripts/common/items/tankmen.pyt   __paramsOnVehiclet  s    i   c         C   sÑ   | |  i  j  o |  i  | 8_  d  St |  i ƒ d |  i } t | ƒ d } x| | |  i  j o
 d j n oZ | |  i  8} t |  i d | ƒ |  _ | |  i |  _ |  i | j  o t n d |  _  qQ Wd  S(   NRÞ   i   i    (	   R¾   R/   R1   RW   R,   Rµ   RÛ   Râ   Rn   (   R™   t	   numLevelst   rankIDst
   maxRankIdx(    (    s   scripts/common/items/tankmen.pyt   __updateRankAtSkillLevelUp{  s     !c         C   s}   t  |  i ƒ } xg |  i t j  oV |  i |  i | ƒ } | |  i j o Pn |  i | 8_ |  i d 7_ |  i ƒ  q Wd  S(   Ni   (   R,   R[   Ro   Rf   R°   R²   R·   (   R™   Rw   R¹   (    (    s   scripts/common/items/tankmen.pyt   __levelUpLastSkillŒ  s     N(   t   __name__t
   __module__RA   R›   R¤   R«   t   staticmethodR°   R‰   R‚   Rº   R½   RÁ   RÄ   RÕ   R4   RÚ   RÜ   R˜   Rž   R·   R¸   (    (    (    s   scripts/common/items/tankmen.pyR—   Ì  s"   							 	+(	3	N	c         C   sb   t  i |  ƒ } | d  j o t i d  |  d ƒ n t d  |  f | ƒ } d  } t  i |  t ƒ | S(   Ns   can not open or read(   t   ResMgrt   openSectionR4   R   t   raiseWrongXmlt   _readNationConfigSectiont   purgeRˆ   (   t   xmlPatht   sectiont   res(    (    s   scripts/common/items/tankmen.pyR8   š  s    c      	   C   sz  h  } h  } h  } h  } x£d D]›} g  } | | | <d } xLt  i |  | | ƒ D]5\ }	 }
 |  | d |	 f } h d t  i | |
 d ƒ j d 6t | d f t  i | |
 d ƒ | t ƒ d 6t | d	 f t  i | |
 d	 ƒ | t ƒ d	 6t | d
 f t  i | |
 d
 ƒ | t ƒ d
 6} t | d ƒ | d <t | d	 ƒ | d <t | d
 ƒ | d <t  i | |
 d ƒ } | | 7} | | d <| i | ƒ qQ Wt	 d | ƒ } x | D] } | d c | :<q Wq Wt
 |  d f t  i |  | d ƒ ƒ \ } } t |  d f t  i |  | d ƒ | ƒ | d <t o, | | d <| | d	 <| | d
 <| | d <n1 t | ƒ | d <t | ƒ | d	 <t | ƒ | d
 <| S(   NR:   R;   g        t   /t   femalet   sexR=   R�   R‘   RÖ   R>   R?   R@   R<   gü©ñÒMbP?t   ranksRÞ   (   s   normalGroupss   premiumGroups(   R   t   getChildrent   readNonEmptyStringt   _readIDst
   _parseNamet
   _parseIcont   listt   readNonNegativeFloatRJ   RË   t
   _readRankst   _readRoleRankst   getSubsectionR   t	   frozenset(   t   xmlCtxRù   Rú   R�   R‘   RÖ   t   kindNameRE   t   totalWeightt   snamet
   subsectiont   ctxRH   R<   Rþ   t   rankIDsByNames(    (    s   scripts/common/items/tankmen.pyRö   ¨  s^     
 

 *


c      	   C   sÙ   g  } h  } xÀ | D]¸ \ } } | i  | ƒ o t i |  | d ƒ n |  | f } t | ƒ | | <t p | i d  ƒ q | i h t i t i	 | | d ƒ ƒ d 6t
 | d f t i | | d ƒ ƒ d 6ƒ q W| | f S(   Ns   is not uniquet
   userStringt   icon(   t   has_keyR   t
   raiseWrongR,   R   RJ   R4   R   t
   makeStringR   R  R  (   R
  t   subsectionsRþ   R  R  R  R  (    (    s   scripts/common/items/tankmen.pyR  ë  s     	-c         C   sb   h  } xU t  D]M } g  } | | | <x4 t i |  | | ƒ i ƒ  D] } | i | | ƒ q? Wq W| S(   N(   Rà   R   R   t   splitRJ   (   R
  Rù   R  Rú   t   roleNameRì   t   rankName(    (    s   scripts/common/items/tankmen.pyR    s     
 c      	   C   s   t  ƒ  } xÒ | D]Ê \ } } y t | d ƒ } Wn t j
 o d } n X| d d j p d | j o
 d j n o t i |  | ƒ n | | j o t i |  | d ƒ n | |  | f | ƒ | | <| i | ƒ q W| p t i |  d d ƒ n | S(	   Ni   iÿÿÿÿi    t   _iÿÿ  s   ID is not uniqueR_   s   is empty(   RK   R¦   Rã   R   t   raiseWrongSectionRõ   t   add(   R
  R  t   accumulatort   parserRú   R  R  R�   (    (    s   scripts/common/items/tankmen.pyR    s     	   0c         C   s   d  S(   N(   R4   (   R
  Rù   (    (    s   scripts/common/items/tankmen.pyR  )  s    c         C   s   t  i t i |  | d ƒ ƒ S(   NR_   (   R   R  R   R   (   R
  Rù   (    (    s   scripts/common/items/tankmen.pyR  ,  s    c         C   s   t  i |  | d ƒ S(   NR_   (   R   R   (   R
  Rù   (    (    s   scripts/common/items/tankmen.pyR  /  s    c         C   sÖ   d  |  f } t i |  ƒ } | d  j o t i d  |  d ƒ n h  } x( t D]  } t | | d | ƒ | | <qL Wt i | | d ƒ } | d f } x( t D]  } t	 | | | | ƒ | | <q˜ Wd  } t i
 |  t ƒ | S(   Ns   can not open or reads   roles/R[   (   R4   Ró   Rô   R   Rõ   Rà   t	   _readRoleR  R¼   t   _g_skillConfigReadersR÷   Rˆ   (   Rø   R
  Rù   Rú   R±   (    (    s   scripts/common/items/tankmen.pyR5   4  s       c         C   s�   t  i |  | | ƒ } |  | f }  h  } t oU t i | i d ƒ ƒ | d <t i | i d ƒ ƒ | d <t  i |  | d ƒ | d <n | |  | f S(   NR  t   descriptionR  (   R   R  R   R   R  t
   readStringR   (   R
  Rù   t   subsectionNameRú   (    (    s   scripts/common/items/tankmen.pyt   _readSkillBasicsM  s    c         C   s   t  |  | | ƒ \ } }  } | S(   N(   R$  (   R
  Rù   R#  Rú   (    (    s   scripts/common/items/tankmen.pyR  Z  s    c         C   s;   t  | | | ƒ \ } } } t i | | |  | ƒ | |  <| S(   N(   R$  R   t   readInt(   t	   paramNamet   minValR
  Rù   R#  Rú   (    (    s   scripts/common/items/tankmen.pyt   _readSkillInt_  s    c         C   s8   t  | | | ƒ \ } } } t i | | |  ƒ | |  <| S(   N(   R$  R   R  (   R&  R
  Rù   R#  Rú   (    (    s   scripts/common/items/tankmen.pyt   _readSkillNonNegFloate  s    c         C   s8   t  | | | ƒ \ } } } t i | | |  ƒ | |  <| S(   N(   R$  R   t   readFraction(   R&  R
  Rù   R#  Rú   (    (    s   scripts/common/items/tankmen.pyt   _readSkillFractionk  s    c         C   sZ   t  |  | | ƒ \ } }  } t i |  | d ƒ | d <t i t i |  | d ƒ ƒ | d <| S(   Nt   durationt   sectorHalfAngle(   R$  R   t   readPositiveFloatt   matht   radians(   R
  Rù   R#  Rú   (    (    s   scripts/common/items/tankmen.pyt   _readGunnerRancorouss  s    "c         C   s8   t  |  | | ƒ \ } }  } t i |  | d ƒ | d <| S(   Nt   shotDispersionFactorPerLevel(   R$  R   R.  (   R
  Rù   R#  Rú   (    (    s   scripts/common/items/tankmen.pyt   _readGunnerGunsmith{  s    c         C   sQ   t  |  | | ƒ \ } }  } t i |  | d ƒ | d <t i |  | d ƒ | d <| S(   Nt'   distanceFactorPerLevelWhenDeviceWorkingt)   distanceFactorPerLevelWhenDeviceDestroyed(   R$  R   R.  (   R
  Rù   R#  Rú   (    (    s   scripts/common/items/tankmen.pyt   _readCommanderEagleEye„  s    c         C   sQ   t  |  | | ƒ \ } }  } t i |  | d ƒ | d <t i |  | d ƒ | d <| S(   Nt   vehicleHealthFractiont   gunReloadTimeFactor(   R$  R   R*  R.  (   R
  Rù   R#  Rú   (    (    s   scripts/common/items/tankmen.pyt   _readLoaderDesperado�  s    c         C   sQ   t  |  | | ƒ \ } }  } t i |  | d ƒ | d <t i |  | d ƒ | d <| S(   Nt"   softGroundResistanceFactorPerLevelt$   mediumGroundResistanceFactorPerLevel(   R$  R   R.  (   R
  Rù   R#  Rú   (    (    s   scripts/common/items/tankmen.pyt   _readBadRoadsKing˜  s    R†   i    R‡   t
   efficiencyt   delayt   fireStartingChanceFactorR2  t   rotationSpeedFactorPerLevelt   rammingBonusFactorPerLevelt   deviceChanceToHitBoostt   curtainEffectDistanceBonust   ammoBayHealthFactort   chancet   visionRadiusFactorPerLevelt   radioDistanceFactorPerLevelR,  i   t   distanceFactorPerLevelc       
   C   sv   d g t  d }  d } xX t d t |  ƒ ƒ D]A } | t t t t t t | d ƒ t  ƒ ƒ ƒ 7} | |  | <q- W|  S(   Ni    i   (	   Rf   R+   R,   R¦   RÊ   t   _LEVELUP_K1t   powt   _LEVELUP_K2t   float(   R¯   t   prevCostt   level(    (    s   scripts/common/items/tankmen.pyt   _makeLevelXpCostsÎ  s     1(O   t	   functoolsR    R/  Ró   RB   Rc   R-   Rh   R   t   debug_utilst	   constantsR   R   RÅ   R   t   helpersR   Rß   t   dictt	   enumerateRj   R	  Rà   t   COMMON_SKILLSt   ROLES_AND_COMMON_SKILLSt   unionRM   R¼   t   PERKSRf   Re   Rn   t   COMMANDER_ADDITION_RATIOR¶   RI  RK  R2   R*   R/   RA   RI   R^   RO   R   R€   R…   R�   R–   t   objectR—   R8   Rö   R  R  R  R  R  R5   R$  R  R(  R)  R+  R1  R3  R6  R9  R<  R   R4   R3   Rx   R+   R,   R.   R)   R6   RO  R¬   (    (    (    s   scripts/common/items/tankmen.pyt   <module>   sR  
	
*				$	"	/!					>ÿ Ï		C				
															0		