Ñò
¹)~Ic           @   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 d „ Z d S(	   iÿÿÿÿN(   t   casht   cput   labort	   BaseClassc           B   s2   e  Z d  „  Z e d d „ Z d „  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   (    (    sB   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/base.pyR      s    					i   c      
   C   sû   |  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 :<q^ Wx& | D] } t | | | ƒ | | <q¢ W| p, x) | D] } t i | | ƒ | | <qÒ Wn | S(   Ni'  (	   R   t   copyt   gt   plt   groupst	   suspiciont   discover_bonust   intt   nearest_percent(   R   t   accuratet   extra_factorR   t   groupR   R   (    (    sB   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/base.pyt   calc_discovery_chance,   s&        c         C   sÒ   t  i d i p t  i d i d d ƒ St  i d i } d | i i d d ƒ } |  i | | ƒ } d } | t  i | i d	 d
 ƒ ƒ t  i | i d d
 ƒ ƒ t  i | i d d
 ƒ ƒ t  i | i d d
 ƒ ƒ f S(   Nt   Socioanalyticst   detect_chance_unknown_baset    u   Â s   Advanced Socioanalyticsi   t   stealthuC   Detection chance: NEWS:Â %s  SCIENCE:Â %s  COVERT:Â %s  PUBLIC:Â %st   newsi    t   sciencet   covertt   public(	   R   t   techst   donet   stringst   replacet	   modifierst   getR#   t
   to_percent(   R   t   locationR    t   detect_modifiert   chancet   detect_template(    (    sB   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/base.pyt   get_detect_infoH   s    c      
   C   s  |  i  } | i | ƒ |  i | ƒ } |  i } | i | ƒ |  i | t ƒ } |  i | ƒ } d } |  i d j o d |  i } n d } d | i j oT | i d d j o t	 i
 d }	 n t	 i
 d }	 d t	 i
 d t d	 |	 ƒ } n d
 }
 |
 |  i | | | | |  i | f S(   Nt    i   s   
Has space for %d computers.R   t	   cpu_bonust   cpu_penaltys   

t   location_modifiersR0   u2   %s
BuildÂ cost:Â %s
Maintenance:Â %s
%s%s
---
%s%s(   R   t   modify_costt   describe_costR   t   modify_maintenancet   TrueR7   R   R0   R   R.   t   dictR   R   (   R   R3   t   raw_costR   t   raw_maintenancet   maintt   detectR   t   location_messaget   modifiert   template(    (    sB   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/base.pyt   get_infoU   s&    

(   t   __name__t
   __module__R   R?   R#   R7   RH   (    (    (    sB   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/base.pyR      s   		t   Basec           B   sƒ   e  Z e d  „ Z d „  Z d „  Z d „  Z e d „ Z d „  Z	 d „  Z
 d „  Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z RS(   c         C   s`  t  t |  ƒ i | ƒ | |  _ t i i |  _ d  |  _	 h  |  _
 d |  _ d |  _ d  g d |  _ d  |  _ |  i i o¢ |  i i d j oJ t i d ƒ o: | o2 t i i t i d d |  d |  i i ƒ|  _ n5 t i i t i |  i i d |  d |  i i ƒ|  _ |  i i ƒ  n | o |  i ƒ  n d |  _ t |  _ t i |  i i t ƒ |  _ d  S(	   Ni    i   s   Stolen Computer Timeid   s	   Gaming PCR   t   countt   active(   R   RK   R   R   R   R   t   raw_mint
   started_att   NoneR3   R   t   raw_cpuR   t   extra_itemst   cpusR   R   t   idt   roll_percentt   itemt   Itemt   itemsR   t   finisht   power_statet   Falset
   grace_overt   buyablet   arrayR   t   long(   R   R   R   t   built(    (    sB   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/base.pyR   q   s,    						#		c         C   sr   |  i  d j o^ |  i oG xM |  i g |  i D]+ } | d  j	 o | i o d |  _  q. q. Wqn d |  _  n d  S(   Nt   sleepRM   (   RZ   R-   RS   RR   RP   (   R   RV   (    (    sB   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/base.pyt   check_power—   s    
 c         C   sº   |  i  d j o d |  _ d  Sd } |  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 |  i  | d ƒ |  _ d  S(   Ni    i'  i   R   (
   RQ   R   RR   R-   R   t	   item_qualR3   R0   R   t   max(   R   t   compute_bonus(    (    sB   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/base.pyt
   recalc_cpu    s    	c      
   C   s*  t  t |  ƒ i | ƒ | d j  ox2 |  i D]' } | o | i | ƒ |  | _ q- q- WxP t t |  i ƒ ƒ D]9 } |  i | o |  i | i | ƒ qn d  |  i | <qn Wd |  _	 |  i d o{ x( |  i d D] } |  i d c | 7<qÐ Wt |  i ƒ d j o& |  i d i
 o |  i d i ƒ  n |  i d |  _ n
 d  |  _ |  i ƒ  |  i i ƒ  |  _ |  i t i j o3 t i i i |  i d ƒ |  i t i i |  i <q&d |  i j o- t i i i d d ƒ |  i t i i d <q&|  i d j o- t i i i d d ƒ |  i t i i d <q&n d  S(   Ng¤p=
×£@i    i   t   Jobst   jobss   CPU Poolt   cpu_pool(   R   RK   t   convert_fromRS   R   t   ranget   lenRR   RP   RQ   R-   RY   Rf   RZ   t   lowert   studyingR   R,   R   t	   cpu_usageR1   R   (   R   t   save_versionR   t   index(    (    sB   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/base.pyRj   °   s:    
  	 '	
3-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   Ra   (   t   calc_base_discovery_chanceR   RT   R   R   R   t
   setdefaultR   t	   iteritemsRR   R-   Rc   R3   t   discovery_bonusRZ   R   (   R   R    R   R"   R   Rc   t
   multiplier(    (    sB   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/base.pyt   get_detect_chanceÜ   sF        
   c         C   s9   x2 |  i  g |  i D] } | o | i o t Sq Wt S(   N(   RS   RR   R-   R?   R[   (   R   RV   (    (    sB   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/base.pyt   is_building
  s
     	c         C   s·   |  i  p t St i i | ƒ p | d j o t S| d j o |  i ƒ  S|  i o |  i i t i	 | i
 j Sx: |  i i D], } t i | i t i	 | i
 j o t Sq Wt Sd  S(   Ns   CPU PoolR8   t   Sleep(   s   CPU PoolR8   (   R-   R[   R   Rh   t   has_keyR?   Rx   R3   t   safetyR,   t   dangerR   R   t	   locations(   R   t	   tech_namet   region(    (    sB   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/base.pyt   allow_study  s    

 !	c         C   s`   |  i  o t St i i |  i } |  i t t i i d } | | j o t	 |  _  t St	 Sd  S(   Nid   (
   R\   R[   R   R   RN   RO   t
   total_costR   t   grace_multiplierR?   (   R   t   aget
   grace_time(    (    sB   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/base.pyt	   has_grace#  s    
	c         C   s    |  i  i d j p |  i d j S(   Ni   i   (   R   R   RQ   (   R   (    (    sB   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/base.pyt
   is_complex/  s    c         C   sˆ   t  t |  ƒ i ƒ  |  i o |  i i i |  ƒ n |  i d  j	 o |  i i ƒ  n x, |  i D]! } | d  j	 o | i ƒ  q_ q_ Wd  S(   N(	   R   RK   t   destroyR3   t   basest   removeRS   RP   RR   (   R   RV   (    (    sB   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/base.pyR‡   2  s    

 c         C   s„   |  i  i i |  ƒ } | d j o
 d } n d } xK t oC | | 7} | t |  i  i ƒ ;} |  i  i | } | i o | Sq5 Wd  S(   Ni    i   iÿÿÿÿ(   R3   Rˆ   Rq   R?   Rl   R-   (   R   t   forwardsRq   t	   incrementR   (    (    sB   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/base.pyt	   next_base?  s    
 

c         C   s$   |  i  i |  i |  i t |  ƒ f S(   N(   R   R   R   R   RT   (   R   (    (    sB   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/base.pyt
   sort_tupleM  s    c         C   s2   t  | t ƒ o t |  i ƒ  | i ƒ  ƒ Sd Sd  S(   Niÿÿÿÿ(   t
   isinstanceRK   t   cmpR   (   R   t   other(    (    sB   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/base.pyt   __cmp__T  s    (   RI   RJ   R[   R   Rb   Rf   Rj   R?   Rw   Rx   R€   R…   R†   R‡   RŒ   R   R‘   (    (    (    sB   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/base.pyRK   p   s   &				,.							i   c         C   s   t  i |  i | | ƒ S(   N(   R   t	   base_typeR#   (   t   base_type_nameR    R!   (    (    sB   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/base.pyRr   ]  s    (   t   bisectR   R]   R    R   R   t   BuyableClassR   t   BuyableRK   R?   Rr   (    (    (    sB   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/base.pyt   <module>   s   Tí