³ò
Õ%Hc           @   sb  d  d k  Z  d  d k Z d  d k Z d  d k l Z l Z l Z e d d d d d d d d ƒ Z e d „  e i ƒ  Dƒ ƒ Z	 e
 e Z Z e d e d e ƒ e d e d e ƒ e d e d e ƒ e d e d e ƒ e d e d e ƒ e ƒ  g Z xR e D]J Z xA e i ƒ  D]3 \ Z Z e o e e e e <q
e	 e e e <q
Wq÷ Wd	 e i f d
 „  ƒ  YZ d S(   iÿÿÿÿN(   t   casht   cput   laborR   g333333ó?t   stealtht   thriftt   speedc         c   s)   x" |  ] \ } } | d  | f Vq Wd S(   i   N(    (   t   .0t   kt   v(    (    s=   /home/phil/rcs/svn/endgame-singularity/trunk/code/location.pys	   <genexpr>   s   	 t   Locationc           B   sq   e  Z g  Z d  Z e ƒ  Z d „  Z e d „  ƒ Z e d „  ƒ Z	 d „  Z
 d „  Z d „  Z d „  Z d „  Z RS(	   t    c         C   sG   t  t |  ƒ i | d d | ƒ | \ |  _ |  _ | |  _ g  |  _ d  S(   NR
   i    (   i    i    i    (   t   superR	   t   __init__t   yt   xt   safetyt   bases(   t   selft   idt   positionR   t   prerequisites(    (    s=   /home/phil/rcs/svn/endgame-singularity/trunk/code/location.pyR   ;   s    	c         C   s   t  i i |  j S(    (   t   gt   plt   last_discovery(   R   (    (    s=   /home/phil/rcs/svn/endgame-singularity/trunk/code/location.pyt   <lambda>E   s    c         C   s   t  i i |  j S(    (   R   R   t   prev_discovery(   R   (    (    s=   /home/phil/rcs/svn/endgame-singularity/trunk/code/location.pyR   F   s    c         C   si   d } |  i  o | d 9} n |  i o | d 9} n d |  i j o | |  i d :} n t | d ƒ S(   Ni   g333333ó?gš™™™™™ñ?R   id   (   t   had_last_discoveryt   had_prev_discoveryt	   modifierst   int(   R   t   discovery_bonus(    (    s=   /home/phil/rcs/svn/endgame-singularity/trunk/code/location.pyR   H   s    

c         C   sŽ   d |  i  j oA |  i  d } t | t | ƒ | t <t | t | ƒ | t <n d |  i  j o) |  i  d } t | t | ƒ | t <n d  S(   NR   R   (   R   R   R    R   R   (   R   t   costt   mod(    (    s=   /home/phil/rcs/svn/endgame-singularity/trunk/code/location.pyt   modify_costR   s    c         C   s#  t  i  |  i | ƒ } |  i i | | ƒ |  | _ |  i | i ƒ |  i | i ƒ d |  i j o/ |  i d } t | i	 t
 | ƒ | i	 t
 <n t |  i ƒ d j o d  Sn |  i | d } | | _ | | _ | t |  i ƒ d j  o |  i | d } n |  i d } | | _ | | _ d  S(   NR   i   i    (   t   bisectR   t   insertt   locationR!   t
   total_costt	   cost_leftR   R   t   maintenanceR    t   lent   nextt   prev(   R   t   baset   whereR    R*   R)   (    (    s=   /home/phil/rcs/svn/endgame-singularity/trunk/code/location.pyt   add_base`   s$    	"			c         C   s   t  |  i ƒ S(   N(   t   hashR   (   R   (    (    s=   /home/phil/rcs/svn/endgame-singularity/trunk/code/location.pyt   __hash__‚   s    c         C   sD   t  | ƒ t t f j o t |  i | ƒ Sn t |  i | i ƒ Sd  S(   N(   t   typet   strt   unicodet   cmpR   (   R   t   other(    (    s=   /home/phil/rcs/svn/endgame-singularity/trunk/code/location.pyt   __cmp__…   s    (   t   __name__t
   __module__t   citiest   hotkeyt   dictR   R   t   propertyR   R   R   R!   R-   R/   R5   (    (    (    s=   /home/phil/rcs/svn/endgame-singularity/trunk/code/location.pyR	   1   s   		
	
		"	(   R"   R   t   buyableR    R   R   R:   t   bonus_levelst	   iteritemst   penalty_levelst   Truet   Falset   bonust   penaltyt   modifier_setst   sett	   attributet   is_bonust   Buyable_ClassR	   (    (    (    s=   /home/phil/rcs/svn/endgame-singularity/trunk/code/location.pys   <module>   s(   !  