
    Ii
                        % S r SSKr0 SS_SS_SS_SS	_S
S_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_S S!_S"S#_S$S%0Er\\\4   \S&'   1 S'krS$rS(r	S)\S*\4S+ jr
S)\S*\4S, jrS-\\   S*\4S. jrS2S/\S*\\\4   4S0 jjrS-\\   S*\4S1 jrg)3z[
Gem System for Pirates of the Lost Seas.

Defines gem types, values, and placement logic.
    Nopal   ruby   garnet   diamond   sapphire   emerald   zgem of the palace   z,large plastic gem (what is this doing here!)   zawesome blue bastardstone	   amethyst
   zgolden ring   zawesome red ppulpstone   zawesome red gorestone   	moonstone   zlapis lazuli   amber   citrine   z&definitely not cursed black pearl (tm)	GEM_NAMES>   r   r   r   r      gem_typereturnc                 0    U [         :X  a  gU [        ;   a  gg)z
Get the point value of a gem by its type index.

Args:
    gem_type: The gem type (0-17)

Returns:
    The point value (1, 2, or 3)
r   r   r   )LEGENDARY_GEM	RARE_GEMSr    s    8c:\Users\dbart\PlayPalace11\server\games\pirates\gems.pyget_gem_valuer'   )   s     = 9    c                 .    [         R                  U S5      $ )z
Get the name of a gem by its type index.

Args:
    gem_type: The gem type (0-17)

Returns:
    The gem name, or "unknown gem" if invalid
zunknown gem)r   getr%   s    r&   get_gem_namer+   :   s     ===11r(   gemsc                 6    U (       d  g[        S U  5       5      $ )zu
Calculate total score from a list of gem types.

Args:
    gems: List of gem type indices

Returns:
    Total score
r   c              3   8   #    U  H  n[        U5      v   M     g 7fN)r'   .0gems     r&   	<genexpr>,calculate_score_from_gems.<locals>.<genexpr>S   s     2Tc}S!!T   )sumr,   s    r&   calculate_score_from_gemsr8   G   s     2T222r(   map_sizec                     0 n[        SU S-   5       H  nSX'   M	     [        [        SU S-   5      5      n[        R                  " U5        [        [        5       H  nUR                  5       nXAU'   M     U$ )z
Place all gems randomly across the map.

Args:
    map_size: Total number of tiles (default 40)

Returns:
    Dictionary mapping position -> gem_type (-1 if no gem)
r   )rangelistrandomshuffleTOTAL_GEM_TYPESpop)r9   gem_positionsiavailable_positionsr    poss         r&   
place_gemsrF   V   sz     %'M 1hl# $ uQ156
NN&'/*!%%'%c + r(   c                 B    U (       d  gSR                  S U  5       5      $ )z
Format a list of gems as a comma-separated string.

Args:
    gems: List of gem type indices

Returns:
    Formatted string like "ruby, diamond, emerald"
zno gemsz, c              3   8   #    U  H  n[        U5      v   M     g 7fr/   )r+   r0   s     r&   r3   "format_gem_list.<locals>.<genexpr>}   s     7$3\#&&$r5   )joinr7   s    r&   format_gem_listrK   q   s     997$777r(   )(   )__doc__r>   r   dictintstr__annotations__r$   r#   r@   r'   r+   r=   r8   rF   rK    r(   r&   <module>rS      s   vv x y	
 z y  5 " z        !" 	#$ 0%	4S> , 	  C C "
23 
23 
23DI 3# 3 d38n 68$s) 8 8r(   