§
    NÖÀj~  ã                  óÒ   — d Z ddlmZ ddlZddlmc mZ ddl	Z	ddl
Z
ddlZddlmZmZmZmZ ddlmZ ddlmZ ddlmZ  G d„ d	¦  «        Z G d
„ d¦  «        Z G d„ d¦  «        ZdS )zü
Unit Test Suite for Progressive Map Scaling & Vast Endgame Labyrinth Architecture.
Validates that map dimensions, room counts, and secret chambers strictly scale
proportionally with quest progression from Act I (compact) to Pinnacle Labyrinth (vast).
é    )ÚannotationsN)Úcalculate_map_scale_profileÚget_zone_scaled_dimensionsÚPROGRESSION_PROFILESÚMapScaleProfile)ÚProceduralMapEngine)ÚWildernessMapGenerator)ÚTileTypec                  ó2   — e Zd ZdZd	d„Zd	d„Zd	d„Zd	d„ZdS )
ÚTestProgressiveMapScalingzGVerifies that map scale grows monotonically from early game to endgame.ÚreturnÚNonec           	     óX  — g d¢}d}d}|D �]\  }}}t          ||¬¦  «        }|j        |j        z  }||k    }	|	sàt          j        d|	fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }
t          j	        d	|› d
|› d|› �¦  «        dz   d|
iz  }t          t          j        |¦  «        ¦  «        ‚d }	|j        }	|	|k    }|sðt          j        d|fd|	|f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |	¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }t          j	        d|› d|› �¦  «        dz   d|iz  }t          t          j        |¦  «        ¦  «        ‚d x}	}|}|j        }�Œd S )N))ÚACT_I_ONBOARDINGé   N)ÚACT_II_EXPLORATIONé   N)ÚACT_III_SANDSTORMé#   N)ÚACT_IV_V_CRUCIBLEé7   N)ÚENDGAME_WHITE_ATLASéH   é   )ÚENDGAME_YELLOW_RED_ATLASéP   é
   )ÚENDGAME_PINNACLE_LABYRINTHéZ   é   r   ©ÚlevelÚmap_tier)ú>)z%(py0)s > %(py2)sÚareaÚ	prev_area)Úpy0Úpy2z	Area for z (z) must exceed z
>assert %(py4)sÚpy4)z0%(py2)s
{%(py2)s = %(py0)s.max_rooms
} > %(py4)sÚprofÚ
prev_rooms)r'   r(   r)   zMax rooms for z must exceed z
>assert %(py6)sÚpy6)r   Ú
grid_widthÚgrid_heightÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚ_format_assertmsgÚAssertionErrorÚ_format_explanationÚ	max_rooms)ÚselfÚstagesr&   r+   Ú
stage_nameÚlvlÚtierr*   r%   Ú@py_assert1Ú@py_format3Ú@py_format5Ú@py_assert3Ú@py_format7s                 úFC:\Projects\FreeExile\tests\unit\test_map_progression_and_labyrinth.pyÚ,test_progressive_dimensions_monotonic_growthzFTestProgressiveMapScaling.test_progressive_dimensions_monotonic_growth   s�  € ð
ð 
ð 
ˆð ˆ	Øˆ
Ø%+ð 	(ñ 	(Ñ!ˆJ˜˜TÝ.°SÀ4ÐHÑHÔHˆDØ”? TÔ%5Ñ5ˆDØ˜)Ò#Ð^Ð^Ð^Õ^Ô^Ð^Ð^Ð^Ð^�4˜)Ð^Ñ^Ô^Ð^Õ^Ô^Ñ^Ô^Ð^Ð^Õ^Ô^�4Ñ^Ô^Ð^Õ^Ô^�4Ñ^Ô^Ð^Ð^Ð^Õ^Ô^Ñ^Ô^Ð^Ð^Õ^Ô^˜)Ñ^Ô^Ð^Õ^Ô^˜)Ñ^Ô^Ð^Ð^Ð^Ð^Ñ^Ð^Õ^Ô^Ð%^°Ð%^Ð%^¸tÐ%^Ð%^ÐS\Ð%^Ð%^Ñ^Ô^Ð^Ñ^Ð^Ð^Ð^Ñ^Ð^Õ^Õ^Ô^Ð^Ñ^Ô^Ñ^Ô^Ð^Ð^Ð^Ø”>Ðf�> JÒ.ÐfÐfÐfÕfÔfÐfÐfÐfÐf�> JÐfÑfÔfÐfÕfÔfÑfÔfÐfÐfÕfÔf�4ÑfÔfÐfÕfÔf�4ÑfÔfÐfÐfÕfÔf�>ÑfÔfÐfÕfÔfÑfÔfÐfÐfÕfÔf JÑfÔfÐfÕfÔf JÑfÔfÐfÐfÐfÐfÑfÐfÕfÔfÐ0fÀÐ0fÐ0fÐZdÐ0fÐ0fÑfÔfÐfÑfÐfÐfÐfÑfÐfÕfÕfÔfÐfÑfÔfÑfÔfÐfÐfÐfÐfÐfØˆIØœˆJ‰Jð	(ð 	(ó    c                ó²
  — t          dd¬¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}|j
        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}|j        }d}||u }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}d S )Nr   ÚACT_I_HUNGER©r"   Úact_idé<   ©ú==©z2%(py2)s
{%(py2)s = %(py0)s.grid_width
} == %(py5)sr*   ©r'   r(   Úpy5úassert %(py7)sÚpy7é-   ©z3%(py2)s
{%(py2)s = %(py0)s.grid_height
} == %(py5)siŒ
  ©z3%(py2)s
{%(py2)s = %(py0)s.total_tiles
} == %(py5)sF©Úis©z4%(py2)s
{%(py2)s = %(py0)s.is_labyrinth
} is %(py5)sr   ©z7%(py2)s
{%(py2)s = %(py0)s.secret_chambers
} == %(py5)s©z5%(py2)s
{%(py2)s = %(py0)s.pillar_totems
} == %(py5)sg      D@)ú<=)z9%(py2)s
{%(py2)s = %(py0)s.boss_distance_min
} <= %(py5)s)r   r-   r/   r0   r1   r2   r3   r4   r6   r7   r.   Útotal_tilesÚis_labyrinthÚsecret_chambersÚpillar_totemsÚboss_distance_min©r9   r*   r>   Ú@py_assert4rA   Ú@py_format6Ú@py_format8s          rC   Ú+test_act1_is_compact_and_onboarding_focusedzETestProgressiveMapScaling.test_act1_is_compact_and_onboarding_focused.   s=  € Ý*°¸>ÐJÑJÔJˆØŒÐ$ "Ð$ˆ "Ò$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$ˆ "Ð$Ñ$Ô$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$ˆtÑ$Ô$Ð$Õ$Ô$ˆtÑ$Ô$Ð$Ð$Õ$Ô$ˆÑ$Ô$Õ$Ô$ "Ñ$Ô$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$ØÔÐ% 2Ð%Ð 2Ò%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%Ð 2Ð%Ñ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%ˆtÑ%Ô%Ð%Õ%Ô%ˆtÑ%Ô%Ð%Ð%Õ%Ô%ÐÑ%Ô%Õ%Ô% 2Ñ%Ô%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%ØÔÐ' 4Ð'Ð 4Ò'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'Ð 4Ð'Ñ'Ô'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'ˆtÑ'Ô'Ð'Õ'Ô'ˆtÑ'Ô'Ð'Ð'Õ'Ô'ÐÑ'Ô'Õ'Ô' 4Ñ'Ô'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'ØÔ Ð) EÐ)Ð  EÐ)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)Ð  EÐ)Ñ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)ˆtÑ)Ô)Ð)Õ)Ô)ˆtÑ)Ô)Ð)Ð)Õ)Ô)Ð Ñ)Ô)Õ)Ô) EÑ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ØÔ#Ð( qÐ(Ð# qÒ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð# qÐ(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆtÑ(Ô(Ð(Õ(Ô(ˆtÑ(Ô(Ð(Ð(Õ(Ô(Ð#Ñ(Ô(Õ(Ô( qÑ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ØÔ!Ð& QÐ&Ð! QÒ&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&Ð! QÐ&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&ˆtÑ&Ô&Ð&Õ&Ô&ˆtÑ&Ô&Ð&Ð&Õ&Ô&Ð!Ñ&Ô&Õ&Ô& QÑ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ØÔ%Ð-¨Ð-Ð%¨Ò-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-Ð%¨Ð-Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô-ˆtÑ-Ô-Ð-Õ-Ô-ˆtÑ-Ô-Ð-Ð-Õ-Ô-Ð%Ñ-Ô-Õ-Ô-¨Ñ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-rE   c                ó4  — t          dd¬¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}|j
        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}|j        }d}||u }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}d S )Nr   r    r!   éð   rK   rM   r*   rN   rP   rQ   é´   rS   iÀ¨  rT   TrU   rW   é   ©ú>=)z7%(py2)s
{%(py2)s = %(py0)s.secret_chambers
} >= %(py5)sé   )z5%(py2)s
{%(py2)s = %(py0)s.pillar_totems
} >= %(py5)sr   )z1%(py2)s
{%(py2)s = %(py0)s.max_rooms
} >= %(py5)sg      i@)z9%(py2)s
{%(py2)s = %(py0)s.boss_distance_min
} >= %(py5)s)r   r-   r/   r0   r1   r2   r3   r4   r6   r7   r.   r[   r\   r]   r^   r8   r_   r`   s          rC   Ú%test_endgame_tier16_is_vast_labyrinthz?TestProgressiveMapScaling.test_endgame_tier16_is_vast_labyrinth8   s  € Ý*°¸bÐAÑAÔAˆØŒÐ% #Ð%ˆ #Ò%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%ˆ #Ð%Ñ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%ˆtÑ%Ô%Ð%Õ%Ô%ˆtÑ%Ô%Ð%Ð%Õ%Ô%ˆÑ%Ô%Õ%Ô% #Ñ%Ô%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%ØÔÐ& 3Ð&Ð 3Ò&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&Ð 3Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&ˆtÑ&Ô&Ð&Õ&Ô&ˆtÑ&Ô&Ð&Ð&Õ&Ô&ÐÑ&Ô&Õ&Ô& 3Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ØÔÐ( 5Ð(Ð 5Ò(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð 5Ð(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆtÑ(Ô(Ð(Õ(Ô(ˆtÑ(Ô(Ð(Ð(Õ(Ô(ÐÑ(Ô(Õ(Ô( 5Ñ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ØÔ Ð( DÐ(Ð  DÐ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð  DÐ(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆtÑ(Ô(Ð(Õ(Ô(ˆtÑ(Ô(Ð(Ð(Õ(Ô(Ð Ñ(Ô(Õ(Ô( DÑ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ØÔ#Ð( qÐ(Ð# qÒ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð# qÐ(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆtÑ(Ô(Ð(Õ(Ô(ˆtÑ(Ô(Ð(Ð(Õ(Ô(Ð#Ñ(Ô(Õ(Ô( qÑ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ØÔ!Ð& QÐ&Ð! QÒ&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&Ð! QÐ&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&ˆtÑ&Ô&Ð&Õ&Ô&ˆtÑ&Ô&Ð&Ð&Õ&Ô&Ð!Ñ&Ô&Õ&Ô& QÑ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ØŒ~Ð# Ð#ˆ~ Ò#Ð#Ð#Ð#Õ#Ô#Ð#Ð#Ð#Ð#ˆ~ Ð#Ñ#Ô#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#ˆtÑ#Ô#Ð#Õ#Ô#ˆtÑ#Ô#Ð#Ð#Õ#Ô#ˆ~Ñ#Ô#Õ#Ô# Ñ#Ô#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#ØÔ%Ð.¨Ð.Ð%¨Ò.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.Ð%¨Ð.Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.ˆtÑ.Ô.Ð.Õ.Ô.ˆtÑ.Ô.Ð.Ð.Õ.Ô.Ð%Ñ.Ô.Õ.Ô.¨Ñ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.rE   c                ó  — t          d¬¦  «        }t          d¬¦  «        }t          dd¬¦  «        }t          dd¬¦  «        }|j        }d}||k    }|sªt          j        d	|fd
||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t          t          j	        |	¦  «        ¦  «        ‚d x}x}}|j        }d}||k    }|sªt          j        d	|fd
||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t          t          j	        |	¦  «        ¦  «        ‚d x}x}}|j        }d}||k    }|sªt          j        d	|fd
||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t          t          j	        |	¦  «        ¦  «        ‚d x}x}}|j        }d}||k    }|sªt          j        d	|fd
||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t          t          j	        |	¦  «        ¦  «        ‚d x}x}}|j
        }d}||k    }|sªt          j        d	|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t          t          j	        |	¦  «        ¦  «        ‚d x}x}}|j
        }d}||k    }|sªt          j        d	|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t          t          j	        |	¦  «        ¦  «        ‚d x}x}}|j
        }d}||k    }|sªt          j        d	|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t          t          j	        |	¦  «        ¦  «        ‚d x}x}}d S )Nrh   )r"   é   éI   r!   éU   r    r   rK   rX   Úact1rN   rP   rQ   é   Úact3r   Út5é   Út16rY   rk   )r   r]   r/   r0   r1   r2   r3   r4   r6   r7   r^   )
r9   rq   rs   rt   rv   r>   ra   rA   rb   rc   s
             rC   Ú/test_secret_chambers_and_totems_scale_with_tierzITestProgressiveMapScaling.test_secret_chambers_and_totems_scale_with_tierC   ss  € Ý*°Ð3Ñ3Ô3ˆÝ*°Ð4Ñ4Ô4ˆÝ(¨r¸AÐ>Ñ>Ô>ˆÝ)°¸RÐ@Ñ@Ô@ˆàÔ#Ð( qÐ(Ð# qÒ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð# qÐ(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆtÑ(Ô(Ð(Õ(Ô(ˆtÑ(Ô(Ð(Ð(Õ(Ô(Ð#Ñ(Ô(Õ(Ô( qÑ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ØÔ#Ð( qÐ(Ð# qÒ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð# qÐ(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆtÑ(Ô(Ð(Õ(Ô(ˆtÑ(Ô(Ð(Ð(Õ(Ô(Ð#Ñ(Ô(Õ(Ô( qÑ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ØÔ!Ð& QÐ&Ð! QÒ&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&Ð! QÐ&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&ˆrÑ&Ô&Ð&Õ&Ô&ˆrÑ&Ô&Ð&Ð&Õ&Ô&Ð!Ñ&Ô&Õ&Ô& QÑ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ØÔ"Ð' aÐ'Ð" aÒ'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'Ð" aÐ'Ñ'Ô'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'ˆsÑ'Ô'Ð'Õ'Ô'ˆsÑ'Ô'Ð'Ð'Õ'Ô'Ð"Ñ'Ô'Õ'Ô' aÑ'Ô'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'àÔ!Ð& QÐ&Ð! QÒ&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&Ð! QÐ&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&ˆtÑ&Ô&Ð&Õ&Ô&ˆtÑ&Ô&Ð&Ð&Õ&Ô&Ð!Ñ&Ô&Õ&Ô& QÑ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ØÔ!Ð& QÐ&Ð! QÒ&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&Ð! QÐ&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&ˆtÑ&Ô&Ð&Õ&Ô&ˆtÑ&Ô&Ð&Ð&Õ&Ô&Ð!Ñ&Ô&Õ&Ô& QÑ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ØÔ Ð% AÐ%Ð  AÒ%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%Ð  AÐ%Ñ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%ˆsÑ%Ô%Ð%Õ%Ô%ˆsÑ%Ô%Ð%Ð%Õ%Ô%Ð Ñ%Ô%Õ%Ô% AÑ%Ô%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%rE   N©r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rD   rd   rl   rw   © rE   rC   r   r      sj   € € € € € ØQÐQð(ð (ð (ð (ð(.ð .ð .ð .ð	/ð 	/ð 	/ð 	/ð&ð &ð &ð &ð &ð &rE   r   c                  ó"   — e Zd ZdZdd„Zdd„ZdS )Ú$TestVastLabyrinthProceduralSynthesiszUVerifies that ProceduralMapEngine synthesizes high-complexity mazes at endgame scale.r   r   c                ó@
  — t          j        dd¬¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|                     d¬¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|j        }t          |¦  «        }d}	||	k    }
|
�st          j        d|
fd||	f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |	¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}x}
}	|j        }d }||u}|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}d S )Nrh   rG   rH   rJ   rK   ©z-%(py2)s
{%(py2)s = %(py0)s.width
} == %(py5)sÚenginerN   rP   rQ   rR   ©z.%(py2)s
{%(py2)s = %(py0)s.height
} == %(py5)sé*   ©ÚseedÚgridri   ©zK%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.rooms
})
} >= %(py8)sÚlen©r'   Úpy1Úpy3rO   Úpy8zassert %(py10)sÚpy10©úis not©z5%(py2)s
{%(py2)s = %(py0)s.boss_room
} is not %(py5)s)r   Úfor_progressionÚwidthr/   r0   r1   r2   r3   r4   r6   r7   ÚheightÚgenerate_mapÚroomsr‰   Ú	boss_room)r9   r‚   r>   ra   rA   rb   rc   r‡   Ú@py_assert2Ú@py_assert7Ú@py_assert6Ú@py_format9Ú@py_format11s                rC   Ú/test_procedural_map_engine_for_progression_act1zTTestVastLabyrinthProceduralSynthesis.test_procedural_map_engine_for_progression_act1V   sº  € Ý$Ô4¸1À^ÐTÑTÔTˆØŒ|Ð!˜rÐ!ˆ|˜rÒ!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ|˜rÐ!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!ˆvÑ!Ô!Ð!Õ!Ô!ˆvÑ!Ô!Ð!Ð!Õ!Ô!ˆ|Ñ!Ô!Õ!Ô!˜rÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!ØŒ}Ð" Ð"ˆ} Ò"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"ˆ} Ð"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆvÑ"Ô"Ð"Õ"Ô"ˆvÑ"Ô"Ð"Ð"Õ"Ô"ˆ}Ñ"Ô"Õ"Ô" Ñ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ø×"Ò"¨Ð"Ñ+Ô+ˆØŒzÐ˜RÐˆz˜RÒÐÐÐÕÔÐÐÐÐˆz˜RÐÑÔÐÕÔÑÔÐÐÕÔˆtÑÔÐÕÔˆtÑÔÐÐÕÔˆzÑÔÕÔ˜RÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØŒ{Ð ˜bÐ ˆ{˜bÒ Ð Ð Ð Õ Ô Ð Ð Ð Ð ˆ{˜bÐ Ñ Ô Ð Õ Ô Ñ Ô Ð Ð Õ Ô ˆtÑ Ô Ð Õ Ô ˆtÑ Ô Ð Ð Õ Ô ˆ{Ñ Ô Õ Ô ˜bÑ Ô Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð Ð Ð Ø”:Ð#�s�:‰ŒÐ# !Ð#ˆ !Ò#Ð#Ð#Ñ#Õ#Ô#Ð#Ð#Ð#Ð#ˆ !Ð#Ñ#Ô#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#�sÑ#Ô#Ð#Õ#Ô#�sÑ#Ô#Ð#Ð#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#�4Ñ#Ô#Ð#Õ#Ô#�4Ñ#Ô#Ð#Ð#Õ#Ô#�:Ñ#Ô#Õ#Ô#ˆÑ#Ô#Õ#Ô# !Ñ#Ô#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#Ð#Ð#ØŒ~Ð) TÐ)ˆ~ TÐ)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)ˆ~ TÐ)Ñ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)ˆtÑ)Ô)Ð)Õ)Ô)ˆtÑ)Ô)Ð)Ð)Õ)Ô)ˆ~Ñ)Ô)Õ)Ô) TÑ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)rE   c                óˆ  — t          j        dd¬¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}t          j        ¦   «         }|                     d¬¦  «        }t          j        ¦   «         |z
  dz  }	|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|j        }
t!          |
¦  «        }d}||k    }|�s/t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        nddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |
¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }t          j        dt!          |j        ¦  «        › �¦  «        dz   d|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}
x}x}}|j        }d }||u}|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}t'          j        |j        j        d         |j        d         z
  |j        j        d         |j        d         z
  ¦  «        }d}
||
k    }|s°t          j        d|fd||
f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |
¦  «        d œz  }t          j        d!|d"›�¦  «        d#z   d$|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}}
d}
|	|
k     }|s±t          j        d%|fd&|	|
f¦  «        d't          j        ¦   «         v st          j        |	¦  «        rt          j        |	¦  «        nd't          j        |
¦  «        d œz  }t          j        d(|	d"›d)�¦  «        d#z   d$|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}}
d S )*Nr   r    r!   rf   rK   r�   r‚   rN   rP   rQ   rg   rƒ   i9  r…   g     @�@r‡   é   ri   rˆ   r‰   rŠ   z,Expected >= 20 rooms in vast labyrinth, got ú
>assert %(py10)srŽ   r�   r‘   r   r   g      ^@)z%(py0)s >= %(py3)sÚdist)r'   rŒ   z5Boss distance in labyrinth must be >= 120 tiles, got z.1fz
>assert %(py5)srO   )ú<)z%(py0)s < %(py3)sÚ
elapsed_mszSynthesis of 240x180 maze took zms (budget < 1000ms))r   r’   r“   r/   r0   r1   r2   r3   r4   r6   r7   r”   ÚtimeÚperf_counterr•   r–   r‰   r5   r—   ÚmathÚhypotÚcenterÚspawn_point)r9   r‚   r>   ra   rA   rb   rc   Út0r‡   r£   r˜   r™   rš   r›   rœ   r¡   Ú@py_format4s                    rC   Ú=test_procedural_map_engine_for_progression_pinnacle_labyrinthzbTestVastLabyrinthProceduralSynthesis.test_procedural_map_engine_for_progression_pinnacle_labyrinth`   s  € Ý$Ô4¸2ÈÐKÑKÔKˆØŒ|Ð"˜sÐ"ˆ|˜sÒ"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"ˆ|˜sÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆvÑ"Ô"Ð"Õ"Ô"ˆvÑ"Ô"Ð"Ð"Õ"Ô"ˆ|Ñ"Ô"Õ"Ô"˜sÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"ØŒ}Ð# Ð#ˆ} Ò#Ð#Ð#Ð#Õ#Ô#Ð#Ð#Ð#Ð#ˆ} Ð#Ñ#Ô#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#ˆvÑ#Ô#Ð#Õ#Ô#ˆvÑ#Ô#Ð#Ð#Õ#Ô#ˆ}Ñ#Ô#Õ#Ô# Ñ#Ô#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#ÝÔÑ Ô ˆØ×"Ò"¨Ð"Ñ-Ô-ˆÝÔ'Ñ)Ô)¨BÑ.°&Ñ8ˆ
àŒzÐ ˜SÐ ˆz˜SÒ Ð Ð Ð Õ Ô Ð Ð Ð Ð ˆz˜SÐ Ñ Ô Ð Õ Ô Ñ Ô Ð Ð Õ Ô ˆtÑ Ô Ð Õ Ô ˆtÑ Ô Ð Ð Õ Ô ˆzÑ Ô Õ Ô ˜SÑ Ô Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð Ð Ð ØŒ{Ð!˜cÐ!ˆ{˜cÒ!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ{˜cÐ!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!ˆtÑ!Ô!Ð!Õ!Ô!ˆtÑ!Ô!Ð!Ð!Õ!Ô!ˆ{Ñ!Ô!Õ!Ô!˜cÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ø”:Ðf�s�:‰ŒÐf "Ðfˆ "Ò$ÐfÐfÑfÕfÔfÐfÐfÐfÐfˆ "ÐfÑfÔfÐfÕfÔfÑfÔfÐfÐfÕfÔf�sÑfÔfÐfÕfÔf�sÑfÔfÐfÐfÐfÕfÔfÑfÔfÐfÐfÕfÔf�4ÑfÔfÐfÕfÔf�4ÑfÔfÐfÐfÕfÔf�:ÑfÔfÕfÔfˆÑfÔfÕfÔf "ÑfÔfÐfÐfÑfÐfÕfÔfÐ&fÕUXÐY]ÔYcÑUdÔUdÐ&fÐ&fÑfÔfÐfÑfÐfÐfÐfÑfÐfÕfÕfÔfÐfÑfÔfÑfÔfÐfÐfÐfÐfÐfÐfÐfÐfÐfØŒ~Ð) TÐ)ˆ~ TÐ)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)ˆ~ TÐ)Ñ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)ˆtÑ)Ô)Ð)Õ)Ô)ˆtÑ)Ô)Ð)Ð)Õ)Ô)ˆ~Ñ)Ô)Õ)Ô) TÑ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)õ ŒzØŒNÔ! !Ô$ tÔ'7¸Ô':Ñ:ØŒNÔ! !Ô$ tÔ'7¸Ô':Ñ:ñ
ô 
ˆð Ð`ˆt�uŠ}Ð`Ð`Ð`Õ`Ô`Ð`Ð`Ð`Ð`ˆt�uÐ`Ñ`Ô`Ð`Õ`Ô`Ñ`Ô`Ð`Ð`Õ`Ô`ˆtÑ`Ô`Ð`Õ`Ô`ˆtÑ`Ô`Ð`Ð`Õ`Ô`�uÑ`Ô`Ð`Ð`Ñ`Ð`Õ`Ô`Ð`ÐVZÐ`Ð`Ð`Ñ`Ô`Ð`Ñ`Ð`Ð`Ð`Ñ`Ð`Õ`Õ`Ô`Ð`Ñ`Ô`Ñ`Ô`Ð`Ð`Ð`Ð`Ð`Ø"Ðjˆz˜FÒ"ÐjÐjÐjÕjÔjÐjÐjÐjÐjˆz˜FÐjÑjÔjÐjÕjÔjÑjÔjÐjÐjÕjÔjˆzÑjÔjÐjÕjÔjˆzÑjÔjÐjÐjÕjÔj˜FÑjÔjÐjÐjÑjÐjÕjÔjÐ$jÀjÐ$jÐ$jÐ$jÐ$jÑjÔjÐjÑjÐjÐjÐjÑjÐjÕjÕjÔjÐjÑjÔjÑjÔjÐjÐjÐjÐjÐjÐjÐjrE   Nrx   )ry   rz   r{   r|   r�   r¬   r}   rE   rC   r   r   S   sH   € € € € € Ø_Ð_ð*ð *ð *ð *ðkð kð kð kð kð krE   r   c                  ó   — e Zd ZdZdd„ZdS )Ú TestWildernessProgressionScalingzNVerifies that WildernessMapGenerator scales dimensions and encounter clusters.r   r   c                óÆ  — t          j        ddd¬¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        d	œz  }d
d|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        d	œz  }d
d|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}t          j        dddd¬¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        d	œz  }d
d|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        d	œz  }d
d|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|                     d¬¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        d	œz  }d
d|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        d	œz  }d
d|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}|j        }	t          |	¦  «        }d}
||
k    }|�st          j        d|fd||
f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |	¦  «        t          j        |¦  «        t          j        |
¦  «        dœz  }t          j        d¦  «        dz   d|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}	x}x}}
|j        |j        d                  |j        d                   }|j        }	d!}|	|u }|st          j        d"|fd#|	|f¦  «        t          j        |¦  «        t          j        |	¦  «        t          j        |¦  «        d$œz  }d%d&|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}	x}}|j        |j        d                  |j        d                   }|j        }	t*          j        }|	|k    }|sÇt          j        d|fd'|	|f¦  «        t          j        |¦  «        t          j        |	¦  «        d(t          j        ¦   «         v st          j        t*          ¦  «        rt          j        t*          ¦  «        nd(t          j        |¦  «        d)œz  }d*d+|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}	x}}d S ),NÚzone_tang_kiem_nhair   r   )r†   Úplayer_levelrJ   rK   r�   Ú	gen_earlyrN   rP   rQ   rR   rƒ   Úzone_boundless_celestial_palacer   r    )r†   r±   r#   rf   Úgen_endgamerg   i	  r…   r‡   rk   ri   )zU%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.encounter_zones
})
} >= %(py8)sr‰   rŠ   z6High tier wilderness must have >= 4 encounter clustersr    rŽ   r   TrU   )z0%(py3)s
{%(py3)s = %(py1)s.walkable
} is %(py6)s)r‹   rŒ   r,   zassert %(py8)sr�   )zP%(py3)s
{%(py3)s = %(py1)s.tile_type
} == %(py7)s
{%(py7)s = %(py5)s.BOSS_GATE
}r
   )r‹   rŒ   rO   rQ   zassert %(py9)sÚpy9)r	   Úfor_zoner“   r/   r0   r1   r2   r3   r4   r6   r7   r”   ÚgenerateÚencounter_zonesr‰   r5   Útilesr©   ÚwalkableÚ	boss_gateÚ	tile_typer
   Ú	BOSS_GATE)r9   r²   r>   ra   rA   rb   rc   r´   r‡   r˜   r™   rš   r›   rœ   Ú@py_assert0Ú@py_assert5rB   Ú@py_format10s                     rC   Ú-test_wilderness_for_zone_scales_with_map_tierzNTestWildernessProgressionScaling.test_wilderness_for_zone_scales_with_map_tiery   sß  € Ý*Ô3Ð4IÐPRÐabÐcÑcÔcˆ	ØŒÐ$ "Ð$ˆ "Ò$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$ˆ "Ð$Ñ$Ô$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$ˆyÑ$Ô$Ð$Õ$Ô$ˆyÑ$Ô$Ð$Ð$Õ$Ô$ˆÑ$Ô$Õ$Ô$ "Ñ$Ô$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$ØÔÐ% 2Ð%Ð 2Ò%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%Ð 2Ð%Ñ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%ˆyÑ%Ô%Ð%Õ%Ô%ˆyÑ%Ô%Ð%Ð%Õ%Ô%ÐÑ%Ô%Õ%Ô% 2Ñ%Ô%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%å,Ô5Ð6WÐ^`ÐoqÐ|~ÐÑÔˆØÔ Ð' CÐ'Ð  CÒ'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'Ð  CÐ'Ñ'Ô'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'ˆ{Ñ'Ô'Ð'Õ'Ô'ˆ{Ñ'Ô'Ð'Ð'Õ'Ô'Ð Ñ'Ô'Õ'Ô' CÑ'Ô'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'ØÔ!Ð( SÐ(Ð! SÒ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð! SÐ(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆ{Ñ(Ô(Ð(Õ(Ô(ˆ{Ñ(Ô(Ð(Ð(Õ(Ô(Ð!Ñ(Ô(Õ(Ô( SÑ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(à×#Ò#¨Ð#Ñ-Ô-ˆØŒzÐ ˜SÐ ˆz˜SÒ Ð Ð Ð Õ Ô Ð Ð Ð Ð ˆz˜SÐ Ñ Ô Ð Õ Ô Ñ Ô Ð Ð Õ Ô ˆtÑ Ô Ð Õ Ô ˆtÑ Ô Ð Ð Õ Ô ˆzÑ Ô Õ Ô ˜SÑ Ô Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð Ð Ð ØŒ{Ð!˜cÐ!ˆ{˜cÒ!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ{˜cÐ!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!ˆtÑ!Ô!Ð!Õ!Ô!ˆtÑ!Ô!Ð!Ð!Õ!Ô!ˆ{Ñ!Ô!Õ!Ô!˜cÑ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!ØÔ'Ðg�sÐ'Ñ(Ô(Ðg¨AÐgÐ(¨AÒ-ÐgÐgÑgÕgÔgÐgÐgÐgÐgÐ(¨AÐgÑgÔgÐgÕgÔgÑgÔgÐgÐgÕgÔg�sÑgÔgÐgÕgÔg�sÑgÔgÐgÐgÐgÕgÔgÑgÔgÐgÐgÕgÔg�4ÑgÔgÐgÕgÔg�4ÑgÔgÐgÐgÕgÔgÐ'ÑgÔgÕgÔgÐ(ÑgÔgÕgÔg¨AÑgÔgÐgÐgÑgÐgÕgÔgÐ/gÑgÔgÐgÑgÐgÐgÐgÑgÐgÕgÕgÔgÐgÑgÔgÑgÔgÐgÐgÐgÐgÐgÐgÐgÐgÐgð Œz˜$Ô*¨1Ô-Ô.¨tÔ/?ÀÔ/BÔCÐTÐCÔLÐTÐPTÐTÐLÐPTÐTÐTÐTÐTÕTÔTÐTÐTÐTÐTÐLÐPTÐTÑTÔTÕTÔTÐCÑTÔTÕTÔTÐLÑTÔTÕTÔTÐPTÑTÔTÐTÐTÑTÐTÐTÐTÐTÐTÑTÐTÕTÕTÔTÐTÑTÔTÑTÔTÐTÐTÐTÐTÐTÐTÐTÐTÐTØŒz˜$œ.¨Ô+Ô,¨T¬^¸AÔ->Ô?Ð_Ð?ÔIÐ_ÍXÔM_Ð_ÐIÐM_Ò_Ð_Ð_Ð_Õ_Ô_Ð_Ð_Ð_Ð_ÐIÐM_Ð_Ñ_Ô_Õ_Ô_Ð?Ñ_Ô_Õ_Ô_ÐIÑ_Ô_Ð_Õ_Ô_Ñ_Ô_Ð_Ð_Õ_Ô_ÍXÑ_Ô_Ð_Õ_Ô_ÍXÑ_Ô_Ð_Ð_Õ_Ô_ÐM_Ñ_Ô_Ð_Ð_Ñ_Ð_Ð_Ð_Ð_Ð_Ñ_Ð_Õ_Õ_Ô_Ð_Ñ_Ô_Ñ_Ô_Ð_Ð_Ð_Ð_Ð_Ð_Ð_Ð_Ð_Ð_Ð_rE   Nrx   )ry   rz   r{   r|   rÁ   r}   rE   rC   r®   r®   v   s4   € € € € € ØXÐXð`ð `ð `ð `ð `ð `rE   r®   )r|   Ú
__future__r   Úbuiltinsr1   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter/   r¦   r¤   ÚpytestÚ#server.world.map_progression_scalerr   r   r   r   Ú"server.world.procedural_map_enginer   Ú%server.world.wilderness_map_generatorr	   Úserver.world.map_data_typesr
   r   r   r®   r}   rE   rC   ú<module>rÌ      sc  ððð ð #Ð "Ð "Ð "Ð "Ð "Ø  € € € € € € € € € € € € €€€€Ø €€€Ø €€€ðð ð ð ð ð ð ð ð ð ð ð ð CÐ BÐ BÐ BÐ BÐ BØ HÐ HÐ HÐ HÐ HÐ HØ 0Ð 0Ð 0Ð 0Ð 0Ð 0ð9&ð 9&ð 9&ð 9&ð 9&ñ 9&ô 9&ð 9&ðx kð  kð  kð  kð  kñ  kô  kð  kðF`ð `ð `ð `ð `ñ `ô `ð `ð `ð `rE   