³ò
Õ%Hc           @   s‚   d  d k  Z  d  d k Z d  d k Z d  d k l Z l Z l Z d e i f d „  ƒ  YZ d e i f d „  ƒ  YZ	 e
 d „ Z d S(   iÿÿÿÿN(   t   casht   cput   labort
   Base_Classc           B   s   e  Z d  „  Z RS(   c
   
      C   s‘   t  t |  ƒ i | | | | d d ƒ| |  _ | |  _ | |  _ |  i d g j o d d d d d d	 g |  _ n | |  _ |	 |  _ g  |  _ d  S(
   Nt   typet   baset   pops	   N AMERICAs	   S AMERICAt   EUROPEt   ASIAt   AFRICAt	   AUSTRALIA(	   t   superR   t   __init__t   sizet	   force_cput   regionst   detect_chancet   maintenancet   flavor(
   t   selft   namet   descriptionR   R   R   R   t   costt   prerequisitesR   (    (    s9   /home/phil/rcs/svn/endgame-singularity/trunk/code/base.pyR      s    					(   t   __name__t
   __module__R   (    (    (    s9   /home/phil/rcs/svn/endgame-singularity/trunk/code/base.pyR      s   t   Basec           B   s˜   e  Z e d  „ Z d „  Z e d „ Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z d	 „  Z d
 d „ Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   sY  t  t |  ƒ i | ƒ | |  _ t i i |  _ d |  _ |  |  _	 |  _
 d  |  _ h  |  _ d g |  i i |  _ |  i i oŠ |  i i d j o< t i d ƒ o, | o$ t i i t i d ƒ |  i d <n' t i i t i |  i i ƒ |  i d <|  i d i ƒ  n d g d |  _ | o |  i ƒ  n d |  _ t |  _ t i |  i i ƒ |  _ d  S(   Nt    i    s   Stolen Computer Timeid   s	   Gaming PCi   t   Active(   R   R   R   R   t   gt   plt   raw_mint
   started_att   studyingt   nextt   prevt   Nonet   locationt	   suspicionR   R   t   cpusR   t   idt   roll_percentt   itemt   Itemt   itemst   finisht   extra_itemst   power_statet   Falset
   grace_overt   buyablet   arrayR   (   R   R   R   t   built(    (    s9   /home/phil/rcs/svn/endgame-singularity/trunk/code/base.pyR   -   s(    				#$&		c         C   sM   t  t |  ƒ i | ƒ x0 |  i |  i D] } | o | i | ƒ q' q' Wd  S(   N(   R   R   t   convert_fromR'   R.   (   R   t   save_versionR*   (    (    s9   /home/phil/rcs/svn/endgame-singularity/trunk/code/base.pyR5   S   s
     c         C   s  t  |  i i ƒ } x$ t i i D] } | i | d ƒ q WxA |  i i ƒ  D]0 \ } } | | c d | 9<| | c d :<qI W|  i	 d oZ |  i	 d i
 oI |  i	 d i } x6 | D]* } | | c d | 9<| | c d :<q³ Wn |  i	 d oZ |  i	 d i
 oI |  i	 d i } x6 | D]* } | | c d | 9<| | c d :<qWn |  i oD |  i i ƒ  } x2 | D]& } | | c | 9<| | c d :<qmWn |  i
 o5 |  i d j o% x" | D] } | | c d :<q¼Wn | p, x) | D] } t i | | ƒ | | <qèWn | S(   Ni    i'  i   id   t   Sleep(   t   calc_base_discovery_chanceR   R(   R   R   t   groupst
   setdefaultR&   t	   iteritemsR.   t   donet	   item_qualR%   t   discovery_bonusR/   t   nearest_percent(   R   t   accurateR   t   groupR&   R=   t
   multiplier(    (    s9   /home/phil/rcs/svn/endgame-singularity/trunk/code/base.pyt   get_detect_chance\   sF        
   c         C   s=   d } x0 |  i  D]% } | o | i o | d 7} q q W| S(   Ni    i   (   R'   R<   (   R   t	   num_itemsR*   (    (    s9   /home/phil/rcs/svn/endgame-singularity/trunk/code/base.pyt   has_item‹   s    
 c         C   sä   d } d } x6 |  i  D]+ } | o | i o | | i i 7} q q W| d j o d Sn |  i d o, |  i d i o | |  i d i i 7} n |  i o1 d |  i i j o t | |  i i d ƒ } n t | | d d ƒ S(   Ni    i'  i   R   (	   R'   R<   R   R=   R.   R%   t	   modifierst   intt   max(   R   t
   comp_powert   compute_bonusR*   (    (    s9   /home/phil/rcs/svn/endgame-singularity/trunk/code/base.pyt   processor_time“   s    
 c         C   s9   x2 |  i  |  i D]  } | o | i o t Sq q Wt S(   N(   R'   R.   R<   t   TrueR0   (   R   R*   (    (    s9   /home/phil/rcs/svn/endgame-singularity/trunk/code/base.pyt   is_building§   s
     c         C   sÆ   |  i  p t Sn± t i i | ƒ p | d j o t Sn‰ | d j o |  i ƒ  Snm |  i o |  i i t i	 | i
 j Sn x= |  i i D]/ } t i | i t i	 | i
 j o t Sq‹ q‹ Wt Sd  S(   Ns   CPU PoolR   R7   (   s   CPU PoolR   (   R<   R0   R   t   jobst   has_keyRL   RM   R%   t   safetyt   techst   dangerR   R   t	   locations(   R   t	   tech_namet   region(    (    s9   /home/phil/rcs/svn/endgame-singularity/trunk/code/base.pyt   allow_study®   s    

 !c         C   sf   |  i  o t Sn t i i |  i } |  i t t i i d } | | j o t	 |  _  t Sn t	 Sd  S(   Nid   (
   R1   R0   R   R   R   R    t
   total_costR   t   grace_multiplierRL   (   R   t   aget
   grace_time(    (    s9   /home/phil/rcs/svn/endgame-singularity/trunk/code/base.pyt	   has_graceÀ   s    
	c         C   s#   |  i  i d j p |  i ƒ  d j S(   Ni   i   (   R   R   RK   (   R   (    (    s9   /home/phil/rcs/svn/endgame-singularity/trunk/code/base.pyt
   is_complexÌ   s    c         C   sÆ   t  t |  ƒ i ƒ  |  i oG t i |  i i |  ƒ } |  i i | =|  i |  i _ |  i |  i _ n x, |  i	 D]! } | d j o | i ƒ  qn qn Wx, |  i
 D]! } | d j o | i ƒ  q q Wd  S(   Ni    (   R   R   t   destroyR%   t   bisectt   bisect_leftt   basesR"   R#   R'   R.   (   R   t   posR   R*   (    (    s9   /home/phil/rcs/svn/endgame-singularity/trunk/code/base.pyR]   Ï   s    

 
 i   c         C   s]   | d j o( |  i  } x@ | i p | i  } q Wn% |  i } x | i p | i } qA W| S(   Ni    (   R"   R<   R#   (   R   t	   directionR   (    (    s9   /home/phil/rcs/svn/endgame-singularity/trunk/code/base.pyt	   next_baseâ   s    	 
	 
c         C   s   |  i  i |  i f S(   N(   R   R   R   (   R   (    (    s9   /home/phil/rcs/svn/endgame-singularity/trunk/code/base.pyt
   sort_tupleí   s    c         C   s   t  |  i ƒ  | i ƒ  ƒ S(   N(   t   cmpRd   (   R   t   other(    (    s9   /home/phil/rcs/svn/endgame-singularity/trunk/code/base.pyt   __cmp__ñ   s    c         C   s.   t  | ƒ t j o t Sn t |  | ƒ d j S(   Ni    (   R   R   R0   Re   (   R   Rf   (    (    s9   /home/phil/rcs/svn/endgame-singularity/trunk/code/base.pyt   __eq__ô   s    c         C   s   |  i  | ƒ S(   N(   Rh   (   R   Rf   (    (    s9   /home/phil/rcs/svn/endgame-singularity/trunk/code/base.pyt   __ne__ù   s    (   R   R   R0   R   R5   RL   RC   RE   RK   RM   RV   R[   R\   R]   Rc   Rd   Rg   Rh   Ri   (    (    (    s9   /home/phil/rcs/svn/endgame-singularity/trunk/code/base.pyR   ,   s   &		/										c         C   sÙ   t  i |  i i ƒ  } xE | D]= } t  i i | i } | | c d | 9<| | c d :<q WxA | D]9 } t  i i | i } | | c | 9<| | c d :<qe W| p, x) | D] } t  i | | ƒ | | <q° Wn | S(   Ni'  (	   R   t	   base_typeR   t   copyR   R9   R&   t   discover_bonusR?   (   t   base_type_nameR@   R   RA   R&   Rl   (    (    s9   /home/phil/rcs/svn/endgame-singularity/trunk/code/base.pyR8   ÿ   s        (   R^   R   R2   R    R   R   t   Buyable_ClassR   t   BuyableR   RL   R8   (    (    (    s9   /home/phil/rcs/svn/endgame-singularity/trunk/code/base.pys   <module>   s   Ó