Ñò
\cäOc        
   @   s;  d  d k  l Z d  d k Z d  d k Z d  d k l Z l Z d  d k Td  d k l Z l	 Z	 l
 Z
 l Z l Z e o d  d k l Z n e o d  d k Tn d e f d „  ƒ  YZ d	 e f d
 „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d  „  ƒ  YZ d! e f d" „  ƒ  YZ d# e f d$ „  ƒ  YZ d% „  Z  d& „  Z! h d' d' 6d( d) 6d* d+ 6d, d- 6d. d/ 6Z" d0 „  Z# e i$ Z$ d S(1   iÿÿÿÿ(   t   IntTypeN(   t   _xmlt   vehicles(   t   *(   t	   IS_CLIENTt
   IS_BASEAPPt
   IS_CELLAPPt   IS_WEBt   IS_DEVELOPMENT(   t   i18nt   OptionalDevicec           B   se   e  Z d
 d  „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d	 „  Z RS(   c         C   s   |  i  i | | ƒ S(   N(   t   __dict__t   get(   t   selft   keyt   defVal(    (    s!   scripts/common/items/artefacts.pyR   $   s    c         C   s   |  i  | S(   N(   R   (   R   R   (    (    s!   scripts/common/items/artefacts.pyt   __getitem__)   s    c         C   s^   |  i  | | ƒ | d f } | d } t | | ƒ \ |  _ |  _ d |  _ |  i | | ƒ d  S(   Nt   scriptg        (   t    _OptionalDevice__readBasicConfigt   _readWeightt   _vehWeightFractiont   _weightt   _maxWeightChanget   _readConfig(   R   t   xmlCtxt   section(    (    s!   scripts/common/items/artefacts.pyt   init.   s    
	c         C   s   |  i  |  i d f S(   Ng        (   R   R   (   R   t   vehicleDescr(    (    s!   scripts/common/items/artefacts.pyt   weightOnVehicleG   s    c         C   s+   |  i  d  j o t d  f S|  i  i | ƒ S(   N(   t   _OptionalDevice__filtert   Nonet   Truet   checkCompatibility(   R   R   (    (    s!   scripts/common/items/artefacts.pyt   checkCompatibilityWithVehicleS   s    c         C   s   d  S(   N(    (   R   R   (    (    s!   scripts/common/items/artefacts.pyt   updateVehicleDescrAttrs[   s    c         C   s   | |  _  | |  _ d  S(   N(   t   pricet
   showInShop(   R   t   newPriceR$   (    (    s!   scripts/common/items/artefacts.pyt   updatePrice`   s    	c         C   s   d  S(   N(   R   (   R   (    (    s!   scripts/common/items/artefacts.pyt	   extraNamef   s    c         C   s   d  S(   N(    (   R   R   t   scriptSection(    (    s!   scripts/common/items/artefacts.pyR   j   s    c         C   sT  d |  _  | i |  _ t i t i | | d d d ƒ f |  _ t i d |  i Œ |  _	 t
 p t oR t i | i d ƒ ƒ |  _ t i | i d ƒ ƒ |  _ t i | | d ƒ |  _ n t i | | d ƒ } t p t o# | |  _ | i d	 t ƒ |  _ n t p | i d
 ƒ o d  |  _ n t | d
 f | d
 ƒ |  _ | i d t ƒ |  _ d  S(   Nt   optionalDevicet   idi    iÿÿ  t
   userStringt   descriptiont   iconR#   t	   notInShopt   vehicleFiltert	   removable(   t   itemTypeNamet   namet   nationst
   NONE_INDEXR   t   readIntR*   R   t   makeIntCompactDescrByIDt   compactDescrR   R   R	   t
   makeStringt
   readStringR+   R,   t   readIconR-   t	   readPriceR   R#   t   readBoolt   FalseR$   R   t   has_keyR   R   t   _VehicleFilterR0   (   R   R   R   R#   (    (    s!   scripts/common/items/artefacts.pyt   __readBasicConfign   s     	'	N(   t   __name__t
   __module__R   R   R   R   R   R!   R"   R&   R'   R   R   (    (    (    s!   scripts/common/items/artefacts.pyR
       s   								t   StaticFactorDevicec           B   s   e  Z d  „  Z d „  Z RS(   c         C   s    t  |  i ƒ d j o | i } |  i d } n$ t | |  i d ƒ } |  i d } | | } t | ƒ t j o t | |  i ƒ | | <n | |  i | | <d  S(   Ni   i    (   t   lent   _StaticFactorDevice__attrR   t   getattrt   typeR    t   intt   _StaticFactorDevice__factor(   R   R   t   attrDictt   attrNamet   val(    (    s!   scripts/common/items/artefacts.pyR"   ‘   s    	
c         C   s@   t  i | | d ƒ |  _ t  i | | d ƒ i d d ƒ |  _ d  S(   Nt   factort	   attributet   /i   (   R   t   readPositiveFloatRI   t   readNonEmptyStringt   splitRE   (   R   R   R   (    (    s!   scripts/common/items/artefacts.pyR   ¢   s    (   RA   RB   R"   R   (    (    (    s!   scripts/common/items/artefacts.pyRC   Ž   s   	t   StaticAdditiveDevicec           B   s   e  Z d  „  Z d „  Z RS(   c         C   s    t  |  i ƒ d j o | i } |  i d } n$ t | |  i d ƒ } |  i d } | | } t | ƒ t j o t | |  i ƒ | | <n | |  i | | <d  S(   Ni   i    (   RD   t   _StaticAdditiveDevice__attrR   RF   RG   R    RH   t   _StaticAdditiveDevice__value(   R   R   RJ   RK   RL   (    (    s!   scripts/common/items/artefacts.pyR"   ²   s    	
c         C   s@   t  i | | d ƒ |  _ t  i | | d ƒ i d d ƒ |  _ d  S(   Nt   valueRN   RO   i   (   R   t	   readFloatRU   RQ   RR   RT   (   R   R   R   (    (    s!   scripts/common/items/artefacts.pyR   Ã   s    (   RA   RB   R"   R   (    (    (    s!   scripts/common/items/artefacts.pyRS   ¯   s   	t   StillVehicleFactorDevicec           B   s   e  Z d  „  Z d „  Z RS(   c         C   s   |  i  S(   N(   R2   (   R   (    (    s!   scripts/common/items/artefacts.pyR'   Ú   s    c         C   sL   t  i | | d ƒ |  _ t  i | | d ƒ |  _ t  i | | d ƒ |  _ d  S(   Nt   activateWhenStillSecRN   RM   (   R   t   readNonNegativeFloatRY   RQ   t   attributeNameRP   RM   (   R   R   R   (    (    s!   scripts/common/items/artefacts.pyR   Þ   s    (   RA   RB   R'   R   (    (    (    s!   scripts/common/items/artefacts.pyRX   Ò   s   	t   EnhancedSuspensionc           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   s+   | i  } |  i |  i | d |  i d f S(   Nt   maxLoadg      ð?(   t   chassisR   R   t)   _EnhancedSuspension__chassisMaxLoadFactor(   R   R   R^   (    (    s!   scripts/common/items/artefacts.pyR   ì   s    	c         C   s4   t  i | | d ƒ |  _ t  i | | d ƒ |  _ d  S(   Nt   chassisMaxLoadFactort   chassisHealthFactor(   R   RP   R_   t(   _EnhancedSuspension__chassisHealthFactor(   R   R   R   (    (    s!   scripts/common/items/artefacts.pyR   ô   s    c         C   s   | i  d c |  i 9<d  S(   NRa   (   t	   miscAttrsRb   (   R   R   (    (    s!   scripts/common/items/artefacts.pyR"   ù   s    (   RA   RB   R   R   R"   (    (    (    s!   scripts/common/items/artefacts.pyR\   é   s   		t   Grousersc           B   s6   e  Z e p e o d  „  Z n
 d „  Z d „  Z RS(   c         C   sA   | i  d } | d | d |  i | d |  i f | i  d <d  S(   Nt   terrainResistancei    i   i   (   t   physicst   _Grousers__factorMediumt   _Grousers__factorSoft(   R   R   t   r(    (    s!   scripts/common/items/artefacts.pyR"     s    c         C   s   d  S(   N(    (   R   R   (    (    s!   scripts/common/items/artefacts.pyR"     s    c         C   s4   t  i | | d ƒ |  _ t  i | | d ƒ |  _ d  S(   Nt   softGroundResistanceFactort   mediumGroundResistanceFactor(   R   RP   Rh   Rg   (   R   R   R   (    (    s!   scripts/common/items/artefacts.pyR     s    (   RA   RB   R   R   R"   R   (    (    (    s!   scripts/common/items/artefacts.pyRd     s   	t	   Equipmentc           B   se   e  Z d
 d  „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d	 „  Z RS(   c         C   s   |  i  i | | ƒ S(   N(   R   R   (   R   R   R   (    (    s!   scripts/common/items/artefacts.pyR   +  s    c         C   s   |  i  | S(   N(   R   (   R   R   (    (    s!   scripts/common/items/artefacts.pyR   0  s    c         C   s.   |  i  | | ƒ |  i | d f | d ƒ d  S(   NR   (   t   _Equipment__readBasicConfigR   (   R   R   R   (    (    s!   scripts/common/items/artefacts.pyR   5  s    c         C   s+   |  i  d  j o t d  f S|  i  i | ƒ S(   N(   t   _Equipment__vehicleFilterR   R   R    (   R   R   (    (    s!   scripts/common/items/artefacts.pyR!   B  s    c         C   s>   |  | j o t  S|  i } | d  j o t S| i | i ƒ S(   N(   R=   t   _Equipment__equipmentFilterR   R   t   inInstalledt   tags(   R   t   othert   filter(    (    s!   scripts/common/items/artefacts.pyt   checkCompatibilityWithEquipmentJ  s    	c         C   s>   |  | j o t  S|  i } | d  j o t S| i | i ƒ S(   N(   R=   Ro   R   R   t   inActiveRq   (   R   Rr   Rs   (    (    s!   scripts/common/items/artefacts.pyt%   checkCompatibilityWithActiveEquipmentW  s    	c         C   s   | |  _  | |  _ d  S(   N(   R#   R$   (   R   R%   R$   (    (    s!   scripts/common/items/artefacts.pyR&   c  s    	c         C   s   |  i  S(   N(   R2   (   R   (    (    s!   scripts/common/items/artefacts.pyR'   j  s    c         C   s   d  S(   N(    (   R   R   R(   (    (    s!   scripts/common/items/artefacts.pyR   n  s    c         C   s°  d |  _  | i |  _ t i t i | | d d d ƒ f |  _ t i d |  i Œ |  _	 | i
 d ƒ p t ƒ  |  _ n t | | d d ƒ |  _ t p t oR t i | i d ƒ ƒ |  _ t i | i d ƒ ƒ |  _ t i | | d ƒ |  _ n t i | | d	 ƒ } t p t o# | |  _ | i d
 t ƒ |  _ n t p | i
 d ƒ o d  |  _ n t  | d f | d ƒ |  _ | i
 d ƒ p d  |  _! n t" | d f | d ƒ |  _! d  S(   Nt	   equipmentR*   i    iÿÿ  Rq   R+   R,   R-   R#   R.   R/   t   incompatibleTags(#   R1   R2   R3   R4   R   R5   R*   R   R6   R7   R>   t	   frozensetRq   t	   _readTagsR   R   R	   R8   R9   R+   R,   R:   R-   R;   R   R#   R<   R=   R$   R   R   Rn   R?   Ro   t   _EquipmentFilter(   R   R   R   R#   (    (    s!   scripts/common/items/artefacts.pyR@   r  s.    	'	N(   RA   RB   R   R   R   R   R!   Rt   Rv   R&   R'   R   Rm   (    (    (    s!   scripts/common/items/artefacts.pyRl   '  s   								t   Extinguisherc           B   s   e  Z d  „  Z RS(   c         C   sN   | i  d ƒ p d |  _ n t i | | d ƒ |  _ | i d t ƒ |  _ d  S(   Nt   fireStartingChanceFactorg      ð?t   autoactivate(   R>   R}   R   RP   R<   R=   R~   (   R   R   R   (    (    s!   scripts/common/items/artefacts.pyR   ™  s
    (   RA   RB   R   (    (    (    s!   scripts/common/items/artefacts.pyR|   ˜  s   t   Fuelc           B   s   e  Z d  „  Z RS(   c         C   s4   t  i | | d ƒ |  _ t  i | | d ƒ |  _ d  S(   Nt   enginePowerFactort   turretRotationSpeedFactor(   R   RP   R€   R�   (   R   R   R   (    (    s!   scripts/common/items/artefacts.pyR   ¨  s    (   RA   RB   R   (    (    (    s!   scripts/common/items/artefacts.pyR   §  s   t
   Stimulatorc           B   s   e  Z d  „  Z RS(   c         C   s   t  i | | d d ƒ |  _ d  S(   Nt   crewLevelIncreasei   (   R   R5   Rƒ   (   R   R   R   (    (    s!   scripts/common/items/artefacts.pyR   ²  s    (   RA   RB   R   (    (    (    s!   scripts/common/items/artefacts.pyR‚   ±  s   t	   Repairkitc           B   s   e  Z d  „  Z RS(   c         C   s1   | i  d t ƒ |  _ t i | | d ƒ |  _ d  S(   Nt	   repairAllt
   bonusValue(   R<   R=   R…   R   t   readFractionR†   (   R   R   R   (    (    s!   scripts/common/items/artefacts.pyR   »  s    (   RA   RB   R   (    (    (    s!   scripts/common/items/artefacts.pyR„   º  s   t   RemovedRpmLimiterc           B   s   e  Z d  „  Z RS(   c         C   s4   t  i | | d ƒ |  _ t  i | | d ƒ |  _ d  S(   NR€   t   engineHpLossPerSecond(   R   RP   R€   R‰   (   R   R   R   (    (    s!   scripts/common/items/artefacts.pyR   Å  s    (   RA   RB   R   (    (    (    s!   scripts/common/items/artefacts.pyRˆ   Ä  s   t   Afterburningc           B   s   e  Z d  „  Z RS(   c         C   s7   t  i | | d ƒ |  _ t  i | | d d ƒ |  _ d  S(   NR€   t   durationSecondsi   (   R   RP   R€   R5   R‹   (   R   R   R   (    (    s!   scripts/common/items/artefacts.pyR   Ï  s    (   RA   RB   R   (    (    (    s!   scripts/common/items/artefacts.pyRŠ   Î  s   R?   c           B   s   e  Z d  „  Z d „  Z RS(   c         C   s©   g  |  _  g  |  _ x� | i ƒ  D]‚ } | i d j o# |  i  i t | d f | ƒ ƒ q | i d j o# |  i i t | d f | ƒ ƒ q t i | | i d ƒ q Wd  S(   Nt   includet   excludes    should be <include> or <exclude>(   t   _VehicleFilter__includet   _VehicleFilter__excludet   valuesR2   t   appendt   _readVehicleFilterPatternR   t   raiseWrongXml(   R   R   R   t
   subsection(    (    s!   scripts/common/items/artefacts.pyt   __init__ç  s    		 ##c         C   sž   |  i  o@ t | |  i  ƒ \ } } | o t d f S| o t d f Sn |  i o@ t | |  i ƒ \ } } | p | p t d f St d f Sn t d  f S(   Ns   not for current vehicles   not for this vehicle type(   R�   t   _matchSubfilterR=   RŽ   R   R   (   R   R   t   isVehicleTypeMatchedt   isVehicleMatched(    (    s!   scripts/common/items/artefacts.pyR    ú  s    

(   RA   RB   R•   R    (    (    (    s!   scripts/common/items/artefacts.pyR?   â  s   	R{   c           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   sÁ   t  ƒ  |  _ t  ƒ  |  _ x¢ | i ƒ  D]” } | i d j o, |  i i t | | i f | d d ƒ ƒ q% | i d j o, |  i i t | | i f | d d ƒ ƒ q% t i | | i d ƒ q% Wd  S(   Nt	   installedt    Rw   t   actives!   should be <installed> or <active>(	   t   sett   _EquipmentFilter__installedt   _EquipmentFilter__activeR�   R2   t   updateRz   R   R“   (   R   R   R   R”   (    (    s!   scripts/common/items/artefacts.pyR•     s     	#	#c         C   s   t  |  i i | ƒ ƒ S(   N(   RD   R�   t   intersection(   R   Rq   (    (    s!   scripts/common/items/artefacts.pyRp   )  s    c         C   s   t  |  i i | ƒ ƒ S(   N(   RD   Rž   R    (   R   Rq   (    (    s!   scripts/common/items/artefacts.pyRu   .  s    (   RA   RB   R•   Rp   Ru   (    (    (    s!   scripts/common/items/artefacts.pyR{     s   		c         C   sô  h  } xç| i  ƒ  D]Ù\ } } |  | f } | d j oy | i } g  | d <xž| i ƒ  D]Q } t i i | ƒ } | d  j o t i |  d d | ƒ n | d i	 | ƒ qX Wq | t
 j ot | ƒ } h  | | <| i d ƒ o+ t | | d t
 | ƒ } | | | d <n | i d d ƒ }	 d |	 j o
 d j n p t i | d ƒ n |	 d j o |	 | | d <n | i d d ƒ }
 d |
 j o
 d j n p t i | d ƒ n |
 d j o |
 | | d <qìq t i | d d	 ƒ q W| S(
   NR3   s   unknown nation '%s'Rq   t   minLeveli   i
   t   maxLevelRš   s   unknown section name(   t   itemst   asStringRR   R3   t   INDICESR   R   R   R“   R‘   t   _vehicleFilterItemTypest   internR>   Rz   R5   t   raiseWrongSection(   R   R   t   rest   snamet   ctxt   namesR2   R*   Rq   R¡   R¢   (    (    s!   scripts/common/items/artefacts.pyR’   :  s>     	
 
c         C   s4  |  i  } | i d } t } x| D]} | i d ƒ } | d  j	 o | | j o q# n | i d ƒ } | d  j o
 t } n¤ | i d ƒ } | d  j	 o | i i | ƒ o q# n | i d ƒ } | d  j	 o | |  i j o q# n | i d ƒ }	 |	 d  j	 o |	 |  i j  o q# n t } t }
 xé | i	 ƒ  D]Û \ } } | d j o q5n t
 |  | ƒ } | i d ƒ } | d  j	 o  | d i | ƒ o t }
 Pn | i d ƒ } | d  j	 o | | d j o t }
 Pn | i d ƒ }	 |	 d  j	 o |	 | d j  o t }
 Pq5q5W|
 o t t f Sq# W| t f S(	   Ni    R3   t   vehicleRq   R¡   R¢   t   level(   s   nationsR­   (   RG   R*   R=   R   R   R   Rq   R    R®   t	   iteritemsRF   (   R   t	   subfiltert   vehicleTypet   nationIDt   hasVehicleTypeOkt   entryt   itemRq   R¡   R¢   t   isVehicleOkR2   t   descr(    (    s!   scripts/common/items/artefacts.pyR–   e  sT    	 
! "	R­   t   vehicleChassisR^   t   vehicleEnginet   enginet   vehicleFuelTankt   fuelTankt   vehicleRadiot   radioc         C   sh   d } | i  d ƒ o t i |  | d ƒ } n d } | i  d ƒ o t i |  | d ƒ } n | | f S(   Ng        t   vehicleWeightFractiont   weight(   R>   R   RZ   (   R   R   t   fractionRÀ   (    (    s!   scripts/common/items/artefacts.pyR   ¬  s    (%   t   typesR    R£   R3   R   R   t   debug_utilst	   constantsR   R   R   R   R   t   helpersR	   t	   web_stubst   objectR
   RC   RS   RX   R\   Rd   Rl   R|   R   R‚   R„   Rˆ   RŠ   R?   R{   R’   R–   R¦   R   Rz   (    (    (    s!   scripts/common/items/artefacts.pyt   <module>   sB   
(n!#%q
	

1'	+	>
	