
    8-j                        S SK Jr  S SKJr  S SKJr  S SKrS SK7  S SK7  \ " S S5      5       r	\ " S S	5      5       r
\ " S
 S5      5       rS\\   S\4S jrS\\   S\4S jrS\\   S\4S jrS\S\4S jrS\S\4S jrS\S\S\\   S\\   S\	S\4S jrS\
4S jrSr\" S5        \" S\-  5        S r\" 5         g)    )	dataclass)Enum)ABCN)*c                       \ rS rSr% \\S'   \\S'   \\   \S'   \\   \S'   \\   \S'   S\\   S\\   4S	 jrS\	4S
 jr
Srg)Player	   nameparty_leaderpartyhandmonsterscardsreturnc                    UR                  5       nU H  n[        U5      (       a.  U R                  R                  U5        UR	                  U5        MA  UR
                  (       a,  U R                  (       d  X0l        UR	                  U5        M|  M~  U R                  R                  U5        UR	                  U5        M     U$ N)copycard_is_monsterr   appendremove	is_leaderr   r   )selfr   remaining_cardscards       8/mnt/mint/home/seanl/public/Repos/heretoslay/__main__.py
take_cardsPlayer.take_cards   s    **,Dt$$$$T*&&t,(((,%#**40 ) 		  &&&t,      c                    [        U R                  5      S:  a  g[        U R                  R                  [
        5      (       d   e[        U R                  R                  /5      nU R                   H?  n[        UR                  [
        5      (       d  M$  UR                  UR                  5        MA     [        U5      S:  $ )N   T   )	lenr   
isinstancer   
class_type	HeroClasssetr   add)r   classesheros      r   declares_victoryPlayer.declares_victory"   s    t}}"$++66	BBCB"%t'8'8'C'C&D"EJJD$//955DOO,  7|q  r   )r   N)__name__
__module____qualname____firstlineno__str__annotations__Cardlistr   boolr*   __static_attributes__ r   r   r   r   	   sR    
I:
t*4jT
 tDz "
!$ 
!r   r   c                       \ rS rSr% \\   \S'   \\   \S'   \\   \S'   \\   \S'   \\   \S'   \\   \S'   Sr\	\S	'   S
r
\S
-  \S'   Srg
)Game/   playersdiscard_pile	draw_pilemonster_pileactive_monsters	hero_piler   turn_numberNwinnerr6   )r,   r-   r.   r/   r3   r   r1   r2   r@   intrA   r5   r6   r   r   r8   r8   /   sV    &\t*Dzt*$ZDzK FFTM r   r8   c                   X    \ rS rSr% \\S'   \\S'   \\   \S'   \\   \S'   Sr	\
\S'   Srg	)

TurnResult:   costmessageearned_cardsplayed_cardsFdoes_end_gamer6   N)r,   r-   r.   r/   rB   r1   r0   r3   r2   rJ   r4   r5   r6   r   r   rD   rD   :   s*    
ILt*t*M4r   rD   piler   c                 "    U R                  5       $ r   poprK   s    r   draw_from_pilerP   B       88:r   c                 "    U R                  5       $ r   rM   rO   s    r   draw_party_leaderrS   E   rQ   r   c                 "    U R                  5       $ r   rM   rO   s    r   draw_monsterrU   H   rQ   r   r   c                 <    U R                   [        R                  :H  $ r   )r$   CardTypeMONSTERr   s    r   r   r   K   s    ??h....r   c                 6    [        U R                  [        5      $ r   )r#   r$   r%   rY   s    r   card_is_heror[   N   s    dooy11r   actionaction_points_remainingr<   r=   playerc                    U S:X  a  [        SS/ / SS9nGOU S;   a  [        SS/ / S9nGOU S	;   aA  [        SS
R                  UR                   Vs/ s H  ofR                  PM     sn5      / / S9nGOkU S;   aA  [        SS
R                  UR                   Vs/ s H  ofR                  PM     sn5      / / S9nGO$U S;   aT  [        SSUR
                  R                   SUR
                  R                  R                  R                  5        S3/ / S9nOU S:X  a  [        SS[        U5      // S9nOU S:X  a&  [        SS/ UR                  R                  5       /S9nOU S:X  a  [        SS/ / S9nOnU S:X  a  [        SS[        U5      // S9nOQU S:X  a?  [        SS[        U5      [        U5      [        U5      [        U5      [        U5      // S9nO[        SS/ / S9nUR                  U:  a  [        SS/ / S9nU$ s  snf s  snf )Nwinr   zYou end the game.T)rF   rG   rH   rI   rJ   )helpzHelpful information goes here.)rF   rG   rH   rI   )r   
)r   )leaderzYour party leader is z ()attack    play   cheatiz'You add +100 action points to yourself.drawmulliganr    z-You don't have enough action points for that.)rI   )rD   joinr   r
   r   r   r$   lowerrU   rN   rP   rF   )r\   r]   r<   r=   r^   resultr   s          r   get_result_ofrp   Q   s`   ,?b_aquv	8	,L[]lno	8	DIIV[[6Y[Tyy[6Y,Zikz|}	9	DIIV\\6Z\Tyy\6Z,[jl{}~	:	.CFDWDWD\D\C]]_`f`s`s`~`~  aD  aD  aJ  aJ  aL  `M  MN  -O  ^`  oq  r	8	Bl<>X=Yhjk	6	BRv{{O`Nab	7	/Xgixz{	6	BnY>W=Xgij	:	BnY>WYghqYr  uC  DM  uN  P^  _h  Pi  ky  zC  kD  >E  TV  W,L[]lno{{,,ANPRacdM+ 7Z6Zs   G:G?c            	         / n / n/ n/ n/ n[          Hi  nUR                  [        R                  :X  a  UR	                  U5        M4  UR
                  (       a  UR	                  U5        MX  UR	                  U5        Mk     [        R                  " U5        [        R                  " U5        [        R                  " U5        [        S[        U5      / / / 5      [        S[        U5      / / / 5      [        S[        U5      / / / 5      /n[        X`XX45      nUR                   H:  n[        S5       H(  n	UR                  [        UR                  5      /5        M*     M<     U$ )NNehlaSamSean   )	ALL_CARDSr$   rW   rX   r   r   randomshuffler   rS   r8   r:   ranger   rP   r<   )
r;   r<   r=   r>   leader_piler   r:   gamer^   _s
             r   dealr}   o   s&   !LI!L"$O K??h...%^^t$T"  NN9
NN< 
NN; 	w)+6BCu'4b"bAv(5r2rBG y]D,,qA~dnn=>?   Kr   (   zHERE TO SLAY=c                  d   [        5       n U R                  (       Gd  U R                  U R                  [	        U R                  5      -     nSn[        SUR                   S35        U(       Gad  U R                  (       GdR  [        SU S35        SnUS:X  Ga  U R                  (       Gd	  [        S5      n[        XBU R                  U R                  U5      nUR                  n[        UR                  5        UR                   H  n[        SUR                   S	35        M     UR                  UR                  5        UR                   H  nUR                   R#                  U5        M      UR%                  5       (       d  UR&                  (       a  Xl        US:X  a  U R                  (       d  GM	  X#-  nU(       a  U R                  (       d  GMR  U =R                  S
-  sl        [        S[(        -  5        U R                  (       d  GM  [        SU R                  R                   S35        g )Nr    zIt is z's turn.z	You have z action points remaining.r   zAction: zYou take a .ri   r   zThe winner is !)r}   rA   r:   r@   r"   printr
   inputrp   r<   r=   rF   rG   rH   r   rI   r   r   r*   rJ   
term_width)r{   r^   r]   action_costr\   action_resultr   s          r   mainr      s   6Dkkkd..T\\1BBC"#v{{m8,-%t{{{I566OPQK"DKKKz* -ft~~_c_p_prx y+00m++,)66DK		{!45 7!!-"<"<=)66DLL''- 7**,,0K0K"(K "DKKK $2# &t{{{  	AcJ+ kkk. 
N4;;++,A
./r   )dataclassesr   enumr   abcr   rw   r   carddbr   r8   rD   r3   r2   rP   rS   rU   r4   r   r[   r0   rB   rp   r}   r   r   r   r6   r   r   <module>r      sA   "     
"! "! "!J ! ! !      d  DJ 4 tDz d /$ /4 /2t 2 2#  T
 bfgkbl v|   BL <d B 
 n  cJ 08 r   