§
    “¿jÿ.  ã                  ó6  — 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
mZ ddlZddlmZ ej        dd„¦   «         Zej        d	„ ¦   «         Z G d
„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        ZdS )z™
Tier 1 E2E Tests: 2-Way Town Portal Engine, 6-Portal Map Charges,
Boss & Secret Chamber Quarantines, Death Penalty, and Game Design Matrix DB (R4, R5).
é    )ÚannotationsN)ÚPath©ÚTownPortalEngineÚreturnr   c                 ó   — t          ¦   «         S )Nr   © ó    úMC:\Projects\FreeExile\tests\e2e_social_party\test_tier1_town_portal_matrix.pyÚportal_enginer      s   € åÑÔÐr
   c               #  óì   K  — t          d¦  «        } |                      ¦   «         r"t          j        t	          | ¦  «        ¦  «        }nt          j        d¦  «        }|V — |                     ¦   «          d S )Nzdata/game_design_matrix.dbz:memory:)r   ÚexistsÚsqlite3ÚconnectÚstrÚclose)Údb_pathÚconns     r   Údb_connr      sf   è è € åÐ/Ñ0Ô0€GØ‡~‚~ÑÔð +ÝŒ�s 7™|œ|Ñ,Ô,ˆˆåŒ˜zÑ*Ô*ˆØ
€J€J€JØ‡J‚J�L„L€L€L€Lr
   c                  ó:   — e Zd ZdZdd„Zdd„Zdd„Zdd	„Zdd
„ZdS )ÚTestTier1TownPortalEnginezWFeature 12: 2-Way Town Portal Engine (Wilderness (wx, wy) linked to Hideout/Sanctuary).r   r   r   ÚNonec                óÒ  — |                      ddddd¦  «        \  }}}g }d}||u }|}|rd }	||	u}
|
}|�sXt          j        d|fd||f¦  «        d	t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd	t          j        |¦  «        d
œz  }dd|iz  }|                     |¦  «         |r‹t          j        d|
fd||	f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |	¦  «        dœz  }dd|iz  }|                     |¦  «         t          j        |d¦  «        i z  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}x}x}x}
}	|j        |         }|d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}g }|d         }d}||k    }|}|r|d         }
d}|
|k    }|}|�st          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }d d!|iz  }|                     |¦  «         |r`t          j        d|fd"|
|f¦  «        t          j        |
¦  «        t          j        |¦  «        d#œz  }d$d%|iz  }|                     |¦  «         t          j        |d¦  «        i z  }d&d'|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}x}x}x}x}
x}}d S )(NÚhero_1Úzone_tang_kiem_nhaiÚinst_w1g      ^@g     @u@T©Úis©z%(py2)s is %(py5)sÚok©Úpy2Úpy5ú%(py7)sÚpy7©úis not©z%(py9)s is not %(py12)sÚp_id©Úpy9Úpy12ú%(py14)sÚpy14r   úassert %(py17)sÚpy17Úorigin_zone©ú==©z%(py1)s == %(py4)s©Úpy1Úpy4úassert %(py6)sÚpy6Úorigin_xÚorigin_y)z%(py3)s == %(py6)s)Úpy3r9   ú%(py8)sÚpy8)z%(py11)s == %(py14)s©Úpy11r.   ú%(py16)sÚpy16úassert %(py19)sÚpy19)Úrequest_town_portalÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚappendÚ_format_boolopÚAssertionErrorÚ_format_explanationÚportals)Úselfr   r    Úmsgr)   Ú@py_assert1Ú@py_assert4Ú@py_assert3Ú@py_assert0Ú@py_assert11Ú@py_assert10Ú@py_format6Ú@py_format8Ú@py_format13Ú@py_format15Ú@py_format16Ú@py_format18ÚportalÚ@py_assert2Ú@py_format5Ú@py_format7Ú@py_assert5Ú@py_assert13Ú@py_assert12Ú@py_format9Ú@py_format17Ú@py_format20s                              r   Ú&test_town_portal_created_in_wildernessz@TestTier1TownPortalEngine.test_town_portal_created_in_wilderness    sx  € Ø%×9Ò9¸(ÐDYÐ[dÐfkÐmrÑsÔs‰ˆˆC�Ø.Ð.�TÐ.ˆr�TˆzÐ.Ð.Ð.Ð.Ð.¨$Ð.˜d¨$Ð.Ð.Ð.Ð.Ð.Ñ.Õ.Ô.Ð.Ð.Ð.Ð.ˆr�TÐ.Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.ˆrÑ.Ô.Ð.Õ.Ô.ˆrÑ.Ô.Ð.Ð.Õ.Ô.�TÑ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Ð.×.Ò.Ð.Ñ.Ô.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.˜d¨$Ð.Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.˜dÑ.Ô.Ð.Õ.Ô.˜dÑ.Ô.Ð.Ð.Õ.Ô.¨$Ñ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Ð.×.Ò.Ð.Ñ.Ô.Ð.Õ.Ô.Ð.Ð.Ñ.Ô.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.ØÔ& tÔ,ˆØ�mÔ$Ð=Ð(=Ð=Ð$Ð(=Ò=Ð=Ð=Ð=Õ=Ô=Ð=Ð=Ð=Ð=Ð$Ð(=Ð=Ñ=Ô=Õ=Ô=Ð$Ñ=Ô=Õ=Ô=Ð(=Ñ=Ô=Ð=Ð=Ñ=Ð=Ð=Ð=Ð=Ð=Ñ=Ð=Õ=Õ=Ô=Ð=Ñ=Ô=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=ØJÐJˆv�jÔ!ÐJ UÐJÐ! UÒ*ÐJÐJÐJÐJÐJ¨v°jÔ/AÐJÀUÐJÐ/AÀUÒ/JÐJÐJÐJÐJÑJÕJÔJÐJÐJÐJÐJÐ! UÐJÑJÔJÕJÔJÐ!ÑJÔJÕJÔJ UÑ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Ð/AÀUÐJÑJÔJÕJÔJÐ/AÑJÔJÕJÔJÀUÑ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ÐJÑJÔJÑJÔJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJr
   c                ó  — |                      dddddd¬¦  «        \  }}}g }d}||u }|}|r|j        |         d         }	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  }dd|iz  }|                     |¦  «         |r`t          j        d|fd|	|
f¦  «        t          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }|                     |¦  «         t          j	        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}	x}}
d S )Nr   r   r   ç        Úzone_player_hideout©Úhub_zoneTrn   r   r   r    r!   r$   r%   r2   ©z%(py10)s == %(py13)s©Úpy10Úpy13ú%(py15)sÚpy15r   úassert %(py18)sÚpy18©rE   rP   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   ©rQ   r   r    Ú_r)   rS   rT   rU   rV   Ú@py_assert9re   rW   rY   rZ   Ú@py_format14r]   rg   Ú@py_format19s                     r   Ú(test_town_portal_links_to_player_hideoutzBTestTier1TownPortalEngine.test_town_portal_links_to_player_hideout'   s  € Ø#×7Ò7¸ÐBWÐYbÐdgÐilð  xMÐ7ñ  Nô  N‰ˆˆAˆtØ^Ð^�TÐ^ˆr�TˆzÐ^Ð^Ð^Ð^Ð^˜mÔ3°DÔ9¸*ÔEÐ^ÐI^Ð^ÐEÐI^Ò^Ð^Ð^Ð^Ð^Ñ^Õ^Ô^Ð^Ð^Ð^Ð^ˆr�TÐ^Ñ^Ô^Ð^Õ^Ô^Ñ^Ô^Ð^Ð^Õ^Ô^ˆrÑ^Ô^Ð^Õ^Ô^ˆrÑ^Ô^Ð^Ð^Õ^Ô^�TÑ^Ô^Ð^Ð^Ñ^Ð^Ð^Ð^Ð^Ð^Ñ^Ð^Ð^×^Ò^Ð^Ñ^Ô^Ð^Ð^Ð^Õ^Ô^Ð^Ð^Ð^Ð^ÐEÐI^Ð^Ñ^Ô^Õ^Ô^ÐEÑ^Ô^Õ^Ô^ÐI^Ñ^Ô^Ð^Ð^Ñ^Ð^Ð^Ð^Ð^Ð^Ñ^Ð^Ð^×^Ò^Ð^Ñ^Ô^Ð^Õ^Ô^Ð^Ð^Ñ^Ô^Ð^Ñ^Ð^Ð^Ð^Ð^Ð^Ñ^Ð^Õ^Õ^Ô^Ð^Ñ^Ô^Ñ^Ô^Ð^Ð^Ð^Ð^Ð^Ð^Ð^Ð^Ð^Ð^Ð^Ð^Ð^Ð^Ð^Ð^Ð^r
   c                ó  — |                      dddddd¬¦  «        \  }}}g }d}||u }|}|r|j        |         d         }	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  }dd|iz  }|                     |¦  «         |r`t          j        d|fd|	|
f¦  «        t          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }|                     |¦  «         t          j	        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}	x}}
d S )Nr   r   r   rk   Úzone_boundless_sanctuaryrm   Trn   r   r   r    r!   r$   r%   r2   ro   rp   rs   rt   r   ru   rv   rw   rx   s                     r   Ú'test_town_portal_links_to_sanctuary_hubzATestTier1TownPortalEngine.test_town_portal_links_to_sanctuary_hub+   s  € Ø#×7Ò7¸ÐBWÐYbÐdgÐilð  xRÐ7ñ  Sô  S‰ˆˆAˆtØcÐc�TÐcˆr�TˆzÐcÐcÐcÐcÐc˜mÔ3°DÔ9¸*ÔEÐcÐIcÐcÐEÐIcÒcÐcÐcÐcÐcÑcÕcÔcÐcÐcÐcÐcˆr�TÐcÑcÔcÐcÕcÔcÑcÔcÐcÐcÕcÔcˆrÑcÔcÐcÕcÔcˆrÑcÔcÐcÐcÕcÔc�TÑcÔcÐcÐcÑcÐcÐcÐcÐcÐcÑcÐcÐc×cÒcÐcÑcÔcÐcÐcÐcÕcÔcÐcÐcÐcÐcÐEÐIcÐcÑcÔcÕcÔcÐEÑcÔcÕcÔcÐIcÑcÔcÐcÐcÑcÐcÐcÐcÐcÐcÑcÐcÐc×cÒcÐcÑcÔcÐcÕcÔcÐcÐcÑcÔcÐcÑcÐcÐcÐcÐcÐcÑcÐcÕcÕcÔcÐcÑcÔcÑcÔcÐcÐcÐcÐcÐcÐcÐcÐcÐcÐcÐcÐcÐcÐcÐcÐcÐcr
   c                óZ  — |                      ddddd¦  «        \  }}}|j        |         d         }d}||u }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        d	œz  }d
d|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d S )Nr   Ú	zone_wildÚinst_1g      $@Ú	is_activeTr   ©z%(py1)s is %(py4)sr5   r8   r9   )rE   rP   rF   rG   rK   rN   rO   ©	rQ   r   ry   r)   rV   rU   r`   ra   rb   s	            r   Útest_town_portal_active_statez7TestTier1TownPortalEngine.test_town_portal_active_state/   sÜ   € Ø"×6Ò6°xÀÈhÐX\Ð^bÑcÔc‰
ˆˆ1ˆdØÔ$ TÔ*¨;Ô7Ð?¸4Ð?Ð7¸4Ð?Ð?Ð?Ð?Õ?Ô?Ð?Ð?Ð?Ð?Ð7¸4Ð?Ñ?Ô?Õ?Ô?Ð7Ñ?Ô?Õ?Ô?¸4Ñ?Ô?Ð?Ð?Ñ?Ð?Ð?Ð?Ð?Ð?Ñ?Ð?Õ?Õ?Ô?Ð?Ñ?Ô?Ñ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?r
   c                ó�  — |                      ddddd¦  «        \  }}}g }|j        }||v }|}|r|j        |         d         }d}	||	u }
|
}|�skt          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
t          j        |¦  «        dœz  }dd|iz  }|                     |¦  «         |r`t          j        d|
fd||	f¦  «        t          j        |¦  «        t          j        |	¦  «        dœz  }dd|iz  }|                     |¦  «         t          j	        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}
}	d S )NÚleaderr‚   rƒ   g      I@r„   T©Úin)z/%(py2)s in %(py6)s
{%(py6)s = %(py4)s.portals
}r)   r   )r"   r7   r9   r=   r>   r   )z%(py11)s is %(py14)sr?   rA   rB   r   rC   rD   rw   )rQ   r   ry   r)   rS   rc   rU   rV   rX   rd   re   rb   rf   r\   rg   r^   rh   s                    r   Ú*test_party_member_can_access_leader_portalzDTestTier1TownPortalEngine.test_party_member_can_access_leader_portal3   s@  € Ø"×6Ò6°xÀÈhÐX\Ð^bÑcÔc‰
ˆˆ1ˆdàaÐa�}Ô,ÐaˆtÐ,Ð,ÐaÐaÐaÐaÐa°Ô1FÀtÔ1LÈ[Ô1YÐaÐ]aÐaÐ1YÐ]aÐ1aÐaÐaÐaÐaÑaÕaÔaÐaÐaÐaÐaˆtÐ,ÐaÑaÔaÐaÕaÔaÑaÔaÐaÐaÕaÔaˆtÑaÔaÐaÕaÔaˆtÑaÔaÐaÐaÐaÕaÔaÑaÔaÐaÐaÕaÔa�}ÑaÔaÐaÕaÔa�}ÑaÔaÐaÐaÕaÔaÐ,ÑaÔaÐaÐaÑaÐaÐaÐaÐaÐaÑaÐaÐa×aÒaÐaÑaÔaÐaÐaÐaÕaÔaÐaÐaÐaÐaÐ1YÐ]aÐaÑaÔaÕaÔaÐ1YÑaÔaÕaÔaÐ]aÑaÔaÐaÐaÑaÐaÐaÐaÐaÐaÑaÐaÐa×aÒaÐaÑaÔaÐaÕaÔaÐaÐaÑaÔaÐaÑaÐaÐaÐaÐaÐaÑaÐaÕaÕaÔaÐaÑaÔaÑaÔaÐaÐaÐaÐaÐaÐaÐaÐaÐaÐaÐaÐaÐaÐaÐaÐaÐar
   N©r   r   r   r   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__ri   r}   r€   r‡   rŒ   r	   r
   r   r   r      s”   € € € € € ØaÐaðKð Kð Kð Kð_ð _ð _ð _ðdð dð dð dð@ð @ð @ð @ðbð bð bð bð bð br
   r   c                  ó:   — e Zd ZdZdd„Zdd„Zdd„Zdd	„Zdd
„ZdS )ÚTestTier1SixPortalChargeSystemzZFeature 13: 6-Portal Map Charge System (Initial 6 charges, decrement on entry, seal at 0).r   r   r   r   c                óF  — |                      dd¬¦  «         |j        d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d S )	NÚmap_t16_insté   ©Úinitial_chargesr2   r4   r5   r8   r9   )Úregister_astral_map_deviceÚmap_chargesrF   rG   rK   rN   rO   ©rQ   r   rV   rU   r`   ra   rb   s          r   Ú'test_map_device_initializes_six_portalszFTestTier1SixPortalChargeSystem.test_map_device_initializes_six_portals<   sÎ   € Ø×0Ò0°ÐQRÐ0ÑSÔSÐSØÔ(¨Ô8Ð=¸AÐ=Ð8¸AÒ=Ð=Ð=Ð=Õ=Ô=Ð=Ð=Ð=Ð=Ð8¸AÐ=Ñ=Ô=Õ=Ô=Ð8Ñ=Ô=Õ=Ô=¸AÑ=Ô=Ð=Ð=Ñ=Ð=Ð=Ð=Ð=Ð=Ñ=Ð=Õ=Õ=Ô=Ð=Ñ=Ô=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=r
   c                ó`  — |                      dd¬¦  «         |                     d¦  «        \  }}}g }d}||u }|}|r
d}	||	k    }
|
}|�sXt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        d	œz  }d
d|iz  }|                     |¦  «         |r‹t          j        d|
fd||	f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |	¦  «        dœz  }dd|iz  }|                     |¦  «         t          j	        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}
}	d S )Nr•   r–   r—   Té   r   r   r    r!   r$   r%   r2   ©z%(py9)s == %(py12)sÚ	remainingr*   r-   r.   r   r/   r0   ©r™   Úenter_map_portalrF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   )rQ   r   r    ry   r    rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   s                    r   Ú)test_map_portal_entry_consumes_one_chargezHTestTier1SixPortalChargeSystem.test_map_portal_entry_consumes_one_charge@   s  € Ø×0Ò0°ÐQRÐ0ÑSÔSÐSØ(×9Ò9¸.ÑIÔIÑˆˆAˆyØ,Ð,�TÐ,ˆr�TˆzÐ,Ð,Ð,Ð,Ð,¨1Ð,˜i¨1šnÐ,Ð,Ð,Ð,Ñ,Õ,Ô,Ð,Ð,Ð,Ð,ˆr�TÐ,Ñ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,ˆrÑ,Ô,Ð,Õ,Ô,ˆrÑ,Ô,Ð,Ð,Õ,Ô,�TÑ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Ð,×,Ò,Ð,Ñ,Ô,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,˜i¨1Ð,Ñ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,˜iÑ,Ô,Ð,Õ,Ô,˜iÑ,Ô,Ð,Ð,Õ,Ô,¨1Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Ð,×,Ò,Ð,Ñ,Ô,Ð,Õ,Ô,Ð,Ð,Ñ,Ô,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,r
   c                ó¼  — |                      dd¬¦  «         dD �]À}|                     d¦  «        \  }}}g }d}||u }|}	|r||k    }
|
}	|	�sƒt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        d	œz  }d
d|iz  }|                     |¦  «         |r¶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  }dd|iz  }|                     |¦  «         t          j	        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}	x}x}x}}
�ŒÂd S )Nr•   r–   r—   )rž   é   é   é   é   r   Tr   r   r    r!   r$   r%   r2   )z%(py9)s == %(py11)sr    Úexpected)r+   r@   z%(py13)srr   r   zassert %(py16)srB   r¡   )rQ   r   r©   r    ry   r    rS   rT   rU   rV   rX   rY   rZ   Ú@py_format12r{   r\   rg   s                    r   Ú.test_map_portal_sequential_consumption_to_zerozMTestTier1SixPortalChargeSystem.test_map_portal_sequential_consumption_to_zeroE   sT  € Ø×0Ò0°ÐQRÐ0ÑSÔSÐSØ*ð 	8ñ 	8ˆHØ,×=Ò=¸nÑMÔMÑˆB��9Ø7Ð7˜Ð7�2˜�:Ð7Ð7Ð7Ð7Ð7 )¨xÒ"7Ð7Ð7Ð7Ð7Ñ7Õ7Ô7Ð7Ð7Ð7Ð7�2˜Ð7Ñ7Ô7Ð7Õ7Ô7Ñ7Ô7Ð7Ð7Õ7Ô7�2Ñ7Ô7Ð7Õ7Ô7�2Ñ7Ô7Ð7Ð7Õ7Ô7˜Ñ7Ô7Ð7Ð7Ñ7Ð7Ð7Ð7Ð7Ð7Ñ7Ð7Ð7×7Ò7Ð7Ñ7Ô7Ð7Ð7Ð7Õ7Ô7Ð7Ð7Ð7Ð7 )¨xÐ7Ñ7Ô7Ð7Õ7Ô7Ñ7Ô7Ð7Ð7Õ7Ô7 )Ñ7Ô7Ð7Õ7Ô7 )Ñ7Ô7Ð7Ð7Ð7Õ7Ô7Ñ7Ô7Ð7Ð7Õ7Ô7¨xÑ7Ô7Ð7Õ7Ô7¨xÑ7Ô7Ð7Ð7Ð7Ð7Ñ7Ð7Ð7Ð7Ð7Ð7Ñ7Ð7Ð7×7Ò7Ð7Ñ7Ô7Ð7Õ7Ô7Ð7Ð7Ñ7Ô7Ð7Ñ7Ð7Ð7Ð7Ð7Ð7Ñ7Ð7Õ7Õ7Ô7Ð7Ñ7Ô7Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ñ7ð	8ð 	8r
   c                óæ  — |                      dd¬¦  «         t          d¦  «        D ]}|                     d¦  «         Œ|                     d¦  «        \  }}}g }d}||u }|}	|rd}
||
k    }|}	|rd}||v }|}	|	�sæt          j        d|fd||f¦  «        d	t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd	t          j        |¦  «        d
œz  }dd|iz  }| 	                    |¦  «         |�rt          j        d|fd||
f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |
¦  «        dœz  }dd|iz  }| 	                    |¦  «         |r‹t          j        d|fd||f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }| 	                    |¦  «         t          j
        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}	x}x}x}x}x}
x}}d S )Nr•   r–   r—   Fr   Ú
MAP_SEALEDr   r   r    r!   r$   r%   r2   rŸ   r    r*   r-   r.   rŠ   ©z%(py17)s in %(py19)srR   ©r0   rD   ú%(py21)sÚpy21úassert %(py24)sÚpy24)r™   Úranger¢   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   )rQ   r   ry   r    rR   r    rS   rT   rU   rV   rW   rX   Ú@py_assert16Ú@py_assert18rY   rZ   r[   r\   rh   Ú@py_format22Ú@py_format23Ú@py_format25s                         r   Ú&test_map_device_sealed_at_zero_chargeszETestTier1SixPortalChargeSystem.test_map_device_sealed_at_zero_chargesK   s  € Ø×0Ò0°ÐQRÐ0ÑSÔSÐSÝ�q‘”ð 	;ð 	;ˆAØ×*Ò*¨>Ñ:Ô:Ð:Ð:Ø*×;Ò;¸NÑKÔKÑˆˆC�ØEÐE�UÐEˆr�Uˆ{ÐEÐEÐEÐEÐE¨AÐE˜y¨Aš~ÐEÐEÐEÐEÐE°,ÐE°,À#Ð2EÐEÐEÐEÐEÑEÕEÔEÐEÐEÐEÐEˆr�UÐEÑEÔEÐEÕEÔEÑEÔEÐEÐEÕEÔEˆrÑEÔEÐEÕEÔEˆrÑEÔEÐEÐEÕEÔE�UÑEÔEÐEÐEÑEÐEÐEÐEÐEÐEÑEÐEÐE×EÒEÐEÑEÔEÐEÐEÑEÕEÔEÐEÐEÐEÐE˜y¨AÐEÑEÔEÐEÕEÔEÑEÔEÐEÐEÕEÔE˜yÑEÔEÐEÕEÔE˜yÑEÔEÐEÐEÕEÔE¨AÑEÔEÐEÐEÑEÐEÐEÐEÐEÐEÑEÐEÐE×EÒEÐEÑEÔEÐEÐEÐEÕEÔEÐEÐEÐEÐE°,À#ÐEÑEÔEÕEÔE°,ÑEÔEÐEÕEÔEÑEÔEÐEÐEÕEÔEÀ#ÑEÔEÐEÕEÔEÀ#ÑEÔEÐEÐEÐEÐEÑEÐEÐEÐEÐEÐEÑEÐEÐE×EÒEÐEÑEÔEÐEÕEÔEÐEÐEÑEÔEÐEÑEÐEÐEÐEÐEÐEÑEÐEÕEÕEÔEÐEÑEÔEÑEÔEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEr
   c                ó\  — |                      dd¬¦  «         |                     d¦  «        \  }}}g }d}||u }|}|rd}	|	|v }
|
}|�sXt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        d	œz  }d
d|iz  }|                     |¦  «         |r‹t          j        d|
fd|	|f¦  «        t          j        |	¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }|                     |¦  «         t          j	        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}	}
d S )NÚ	empty_mapr   r—   Fr­   r   r   r    r!   r$   r%   rŠ   ©z%(py10)s in %(py12)srR   ©rq   r,   r-   r.   r/   r0   r¡   )rQ   r   r    rR   ry   rS   rT   rU   rV   rz   rW   rY   rZ   r[   r\   r]   r^   s                    r   Ú2test_map_device_with_zero_initial_charges_rejectedzQTestTier1SixPortalChargeSystem.test_map_device_with_zero_initial_charges_rejectedR   s  € Ø×0Ò0°ÈaÐ0ÑPÔPÐPØ"×3Ò3°KÑ@Ô@‰
ˆˆC�Ø2Ð2�UÐ2ˆr�Uˆ{Ð2Ð2Ð2Ð2Ð2˜|Ð2˜|¨sÐ2Ð2Ð2Ð2Ð2Ñ2Õ2Ô2Ð2Ð2Ð2Ð2ˆr�UÐ2Ñ2Ô2Ð2Õ2Ô2Ñ2Ô2Ð2Ð2Õ2Ô2ˆrÑ2Ô2Ð2Õ2Ô2ˆrÑ2Ô2Ð2Ð2Õ2Ô2�UÑ2Ô2Ð2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Ð2×2Ò2Ð2Ñ2Ô2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2˜|¨sÐ2Ñ2Ô2Õ2Ô2˜|Ñ2Ô2Ð2Õ2Ô2Ñ2Ô2Ð2Ð2Õ2Ô2¨sÑ2Ô2Ð2Õ2Ô2¨sÑ2Ô2Ð2Ð2Ð2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Ð2×2Ò2Ð2Ñ2Ô2Ð2Õ2Ô2Ð2Ð2Ñ2Ô2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2r
   Nr�   )	rŽ   r�   r�   r‘   rœ   r£   r«   rº   r¿   r	   r
   r   r“   r“   9   s‚   € € € € € ØdÐdð>ð >ð >ð >ð-ð -ð -ð -ð
8ð 8ð 8ð 8ðFð Fð Fð Fð3ð 3ð 3ð 3ð 3ð 3r
   r“   c                  ó:   — e Zd ZdZdd„Zdd„Zdd„Zdd	„Zdd
„ZdS )ÚTestTier1BossEncounterLockoutz\Feature 14: Anti-Exploit Boss Quarantine (Reject town portal & escape while boss is active).r   r   r   r   c                óª  — |                      dd¬¦  «         |                     ddddd¦  «        \  }}}g }d}||u }|}|rd }	||	u }
|
}|�sXt          j        d|fd	||f¦  «        d
t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd
t          j        |¦  «        dœz  }dd|iz  }|                     |¦  «         |r‹t          j        d|
fd||	f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |	¦  «        dœz  }dd|iz  }|                     |¦  «         t          j	        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}
}	d}||v }|s—t          j        d|fd||f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}}d S )NÚboss_inst_1T©Úboss_activeÚheroÚzone_boss_chamberrk   Fr   r   r    r!   r$   r%   ©z%(py9)s is %(py12)sr)   r*   r-   r.   r   r/   r0   ÚQUARANTINE_BOSS_ENGAGEDrŠ   ©z%(py1)s in %(py3)srR   ©r6   r<   úassert %(py5)sr#   ©Úset_encounter_staterE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   ©rQ   r   r    rR   r)   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r`   Ú@py_format4s                      r   Ú,test_town_portal_rejected_during_active_bosszJTestTier1BossEncounterLockout.test_town_portal_rejected_during_active_boss[   së  € Ø×)Ò)¨-ÀTÐ)ÑJÔJÐJØ%×9Ò9¸&ÐBUÐWdÐfiÐknÑoÔo‰ˆˆC�Ø+Ð+�UÐ+ˆr�Uˆ{Ð+Ð+Ð+Ð+Ð+ tÐ+˜t t˜|Ð+Ð+Ð+Ð+Ñ+Õ+Ô+Ð+Ð+Ð+Ð+ˆr�UÐ+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ˆrÑ+Ô+Ð+Õ+Ô+ˆrÑ+Ô+Ð+Ð+Õ+Ô+�UÑ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Ð+×+Ò+Ð+Ñ+Ô+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+˜t tÐ+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+˜tÑ+Ô+Ð+Õ+Ô+˜tÑ+Ô+Ð+Ð+Õ+Ô+ tÑ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Ð+×+Ò+Ð+Ñ+Ô+Ð+Õ+Ô+Ð+Ð+Ñ+Ô+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ø(Ð/Ð(¨CÐ/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/Ð(¨CÐ/Ñ/Ô/Õ/Ô/Ð(Ñ/Ô/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/¨CÑ/Ô/Ð/Õ/Ô/¨CÑ/Ô/Ð/Ð/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/r
   c                ó’  — |                      dd¬¦  «         |                      dd¬¦  «         |                     ddddd¦  «        \  }}}g }d}||u }|}|rd }	||	u}
|
}|�sXt          j        d|fd	||f¦  «        d
t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd
t          j        |¦  «        dœz  }dd|iz  }|                     |¦  «         |r‹t          j        d|
fd||	f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |	¦  «        dœz  }dd|iz  }|                     |¦  «         t          j	        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}
}	d S )NrÃ   TrÄ   FrÆ   rÇ   rk   r   r   r    r!   r$   r%   r&   r(   r)   r*   r-   r.   r   r/   r0   rÍ   ©rQ   r   r    ry   r)   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   s                    r   Ú,test_town_portal_permitted_after_boss_defeatzJTestTier1BossEncounterLockout.test_town_portal_permitted_after_boss_defeata   s@  € Ø×)Ò)¨-ÀTÐ)ÑJÔJÐJà×)Ò)¨-ÀUÐ)ÑKÔKÐKØ#×7Ò7¸Ð@SÐUbÐdgÐilÑmÔm‰ˆˆAˆtØ.Ð.�TÐ.ˆr�TˆzÐ.Ð.Ð.Ð.Ð.¨$Ð.˜d¨$Ð.Ð.Ð.Ð.Ð.Ñ.Õ.Ô.Ð.Ð.Ð.Ð.ˆr�TÐ.Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.ˆrÑ.Ô.Ð.Õ.Ô.ˆrÑ.Ô.Ð.Ð.Õ.Ô.�TÑ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Ð.×.Ò.Ð.Ñ.Ô.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.˜d¨$Ð.Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.˜dÑ.Ô.Ð.Õ.Ô.˜dÑ.Ô.Ð.Ð.Õ.Ô.¨$Ñ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Ð.×.Ò.Ð.Ñ.Ô.Ð.Õ.Ô.Ð.Ð.Ñ.Ô.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.r
   c                ó\  — |                      dd¬¦  «         |                     dd¦  «        \  }}g }d}||u }|}|rd}||v }	|	}|�sXt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        d	œz  }
d
d|
iz  }|                     |¦  «         |r‹t          j        d|	fd||f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }|                     |¦  «         t          j	        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}}	d S )NrÃ   TrÄ   rÇ   ÚBossr   r   Úlockedr!   r$   r%   rŠ   r½   Úreasonr¾   r-   r.   r   r/   r0   ©rÎ   Úcheck_quarantine_lockrF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   ©rQ   r   r×   rØ   rS   rT   rU   rV   rz   rW   rY   rZ   r[   r\   r]   r^   s                   r   Ú&test_boss_quarantine_lock_check_directzDTestTier1BossEncounterLockout.test_boss_quarantine_lock_check_directh   s  € Ø×)Ò)¨-ÀTÐ)ÑJÔJÐJØ&×<Ò<Ð=PÐR_Ñ`Ô`‰ˆ�Ø2Ð2˜Ð2ˆv˜ˆ~Ð2Ð2Ð2Ð2Ð2 &Ð2 &¨FÐ"2Ð2Ð2Ð2Ð2Ñ2Õ2Ô2Ð2Ð2Ð2Ð2ˆv˜Ð2Ñ2Ô2Ð2Õ2Ô2Ñ2Ô2Ð2Ð2Õ2Ô2ˆvÑ2Ô2Ð2Õ2Ô2ˆvÑ2Ô2Ð2Ð2Õ2Ô2˜Ñ2Ô2Ð2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Ð2×2Ò2Ð2Ñ2Ô2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2 &¨FÐ2Ñ2Ô2Õ2Ô2 &Ñ2Ô2Ð2Õ2Ô2Ñ2Ô2Ð2Ð2Õ2Ô2¨FÑ2Ô2Ð2Õ2Ô2¨FÑ2Ô2Ð2Ð2Ð2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Ð2×2Ò2Ð2Ñ2Ô2Ð2Õ2Ô2Ð2Ð2Ñ2Ô2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2r
   c                ó¬  — |                      dd¬¦  «         |                     dd¦  «        \  }}d}||u }|s—t          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }d	d
|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}}d S )NrÃ   FrÄ   rÇ   r   ©z%(py0)s is %(py3)sr×   ©Úpy0r<   rÌ   r#   ©
rÎ   rÚ   rF   rG   rH   rI   rJ   rK   rN   rO   ©rQ   r   r×   ry   r`   rS   rÐ   rY   s           r   Ú+test_boss_quarantine_unlocked_when_inactivezITestTier1BossEncounterLockout.test_boss_quarantine_unlocked_when_inactivem   sü   € Ø×)Ò)¨-ÀUÐ)ÑKÔKÐKØ!×7Ò7Ð8KÈ]Ñ[Ô[‰	ˆ�ØÐˆv˜ˆÐÐÐÕÔÐÐÐÐˆv˜ÐÑÔÐÕÔÑÔÐÐÕÔˆvÑÔÐÕÔˆvÑÔÐÐÕÔ˜ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐr
   c                óº  — |                      dd¬¦  «         |                      dd¬¦  «         |                     dd¦  «        d         }d}||u }|slt          j        d|fd	||f¦  «        t          j        |¦  «        t          j        |¦  «        d
œz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|                     dd¦  «        d         }d}||u }|slt          j        d|fd	||f¦  «        t          j        |¦  «        t          j        |¦  «        d
œz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d S )NrÃ   TrÄ   Úboss_inst_2FÚ	zone_bossr   r   r…   r5   r8   r9   ©rÎ   rÚ   rF   rG   rK   rN   rO   r›   s          r   Ú'test_boss_quarantine_instance_isolationzETestTier1BossEncounterLockout.test_boss_quarantine_instance_isolationr   s´  € Ø×)Ò)¨-ÀTÐ)ÑJÔJÐJØ×)Ò)¨-ÀUÐ)ÑKÔKÐKØ×2Ò2°;ÀÑNÔNÈqÔQÐYÐUYÐYÐQÐUYÐYÐYÐYÐYÕYÔYÐYÐYÐYÐYÐQÐUYÐYÑYÔYÕYÔYÐQÑYÔYÕYÔYÐUYÑYÔYÐYÐYÑYÐYÐYÐYÐYÐYÑYÐYÕYÕYÔYÐYÑYÔYÑYÔYÐYÐYÐYÐYÐYÐYÐYØ×2Ò2°;ÀÑNÔNÈqÔQÐZÐUZÐZÐQÐUZÐZÐZÐZÐZÕZÔZÐZÐZÐZÐZÐQÐUZÐZÑZÔZÕZÔZÐQÑZÔZÕZÔZÐUZÑZÔZÐZÐZÑZÐZÐZÐZÐZÐZÑZÐZÕZÕZÔZÐZÑZÔZÑZÔZÐZÐZÐZÐZÐZÐZÐZÐZÐZr
   Nr�   )	rŽ   r�   r�   r‘   rÑ   rÔ   rÜ   rã   rè   r	   r
   r   rÁ   rÁ   X   s„   € € € € € ØfÐfð0ð 0ð 0ð 0ð/ð /ð /ð /ð3ð 3ð 3ð 3ð
ð ð ð ð
[ð [ð [ð [ð [ð [r
   rÁ   c                  ó:   — e Zd ZdZdd„Zdd„Zdd„Zdd	„Zdd
„ZdS )ÚTestTier1SecretChamberLockoutz<Feature 15: Anti-Exploit Puzzle / Secret Chamber Quarantine.r   r   r   r   c                óª  — |                      dd¬¦  «         |                     ddddd¦  «        \  }}}g }d}||u }|}|rd }	||	u }
|
}|�sXt          j        d|fd	||f¦  «        d
t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd
t          j        |¦  «        dœz  }dd|iz  }|                     |¦  «         |r‹t          j        d|
fd||	f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |	¦  «        dœz  }dd|iz  }|                     |¦  «         t          j	        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}
}	d}||v }|s—t          j        d|fd||f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}}d S )NÚsecret_inst_1T©Úsecret_activerÆ   Úzone_secret_chamberrk   Fr   r   r    r!   r$   r%   rÈ   r)   r*   r-   r.   r   r/   r0   ÚQUARANTINE_SECRET_CHAMBERrŠ   rÊ   rR   rË   rÌ   r#   rÍ   rÏ   s                      r   Ú+test_town_portal_rejected_in_secret_chamberzITestTier1SecretChamberLockout.test_town_portal_rejected_in_secret_chamber|   së  € Ø×)Ò)¨/ÈÐ)ÑNÔNÐNØ%×9Ò9¸&ÐBWÐYhÐjmÐorÑsÔs‰ˆˆC�Ø+Ð+�UÐ+ˆr�Uˆ{Ð+Ð+Ð+Ð+Ð+ tÐ+˜t t˜|Ð+Ð+Ð+Ð+Ñ+Õ+Ô+Ð+Ð+Ð+Ð+ˆr�UÐ+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ˆrÑ+Ô+Ð+Õ+Ô+ˆrÑ+Ô+Ð+Ð+Õ+Ô+�UÑ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Ð+×+Ò+Ð+Ñ+Ô+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+˜t tÐ+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+˜tÑ+Ô+Ð+Õ+Ô+˜tÑ+Ô+Ð+Ð+Õ+Ô+ tÑ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Ð+×+Ò+Ð+Ñ+Ô+Ð+Õ+Ô+Ð+Ð+Ñ+Ô+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ø*Ð1Ð*¨cÐ1Ð1Ð1Ð1Õ1Ô1Ð1Ð1Ð1Ð1Ð*¨cÐ1Ñ1Ô1Õ1Ô1Ð*Ñ1Ô1Ð1Õ1Ô1Ñ1Ô1Ð1Ð1Õ1Ô1¨cÑ1Ô1Ð1Õ1Ô1¨cÑ1Ô1Ð1Ð1Ð1Ð1Ñ1Ð1Ð1Ð1Ð1Ð1Ñ1Ð1Õ1Õ1Ô1Ð1Ñ1Ô1Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1r
   c                ó’  — |                      dd¬¦  «         |                      dd¬¦  «         |                     ddddd¦  «        \  }}}g }d}||u }|}|rd }	||	u}
|
}|�sXt          j        d|fd	||f¦  «        d
t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd
t          j        |¦  «        dœz  }dd|iz  }|                     |¦  «         |r‹t          j        d|
fd||	f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |	¦  «        dœz  }dd|iz  }|                     |¦  «         t          j	        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}
}	d S )Nrì   Trí   FrÆ   rï   rk   r   r   r    r!   r$   r%   r&   r(   r)   r*   r-   r.   r   r/   r0   rÍ   rÓ   s                    r   Ú4test_town_portal_allowed_when_secret_chamber_clearedzRTestTier1SecretChamberLockout.test_town_portal_allowed_when_secret_chamber_cleared‚   s@  € Ø×)Ò)¨/ÈÐ)ÑNÔNÐNØ×)Ò)¨/ÈÐ)ÑOÔOÐOØ#×7Ò7¸Ð@UÐWfÐhkÐmpÑqÔq‰ˆˆAˆtØ.Ð.�TÐ.ˆr�TˆzÐ.Ð.Ð.Ð.Ð.¨$Ð.˜d¨$Ð.Ð.Ð.Ð.Ð.Ñ.Õ.Ô.Ð.Ð.Ð.Ð.ˆr�TÐ.Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.ˆrÑ.Ô.Ð.Õ.Ô.ˆrÑ.Ô.Ð.Ð.Õ.Ô.�TÑ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Ð.×.Ò.Ð.Ñ.Ô.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.˜d¨$Ð.Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.˜dÑ.Ô.Ð.Õ.Ô.˜dÑ.Ô.Ð.Ð.Õ.Ô.¨$Ñ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Ð.×.Ò.Ð.Ñ.Ô.Ð.Õ.Ô.Ð.Ð.Ñ.Ô.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.r
   c                ó\  — |                      dd¬¦  «         |                     dd¦  «        \  }}g }d}||u }|}|rd}||v }	|	}|�sXt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        d	œz  }
d
d|
iz  }|                     |¦  «         |r‹t          j        d|	fd||f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }|                     |¦  «         t          j	        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}}	d S )Nrì   Trí   Úzone_secretu   Máº­t tháº¥tr   r   r×   r!   r$   r%   rŠ   r½   rØ   r¾   r-   r.   r   r/   r0   rÙ   rÛ   s                   r   Ú#test_secret_quarantine_check_directzATestTier1SecretChamberLockout.test_secret_quarantine_check_directˆ   s  € Ø×)Ò)¨/ÈÐ)ÑNÔNÐNØ&×<Ò<¸]ÈOÑ\Ô\‰ˆ�Ø:Ð:˜Ð:ˆv˜ˆ~Ð:Ð:Ð:Ð:Ð: .Ð: .°FÐ":Ð:Ð:Ð:Ð:Ñ:Õ:Ô:Ð:Ð:Ð:Ð:ˆv˜Ð:Ñ:Ô:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:ˆvÑ:Ô:Ð:Õ:Ô:ˆvÑ:Ô:Ð:Ð:Õ:Ô:˜Ñ:Ô:Ð:Ð:Ñ:Ð:Ð:Ð:Ð:Ð:Ñ:Ð:Ð:×:Ò:Ð:Ñ:Ô:Ð:Ð:Ð:Õ:Ô:Ð:Ð:Ð:Ð: .°FÐ:Ñ:Ô:Õ:Ô: .Ñ:Ô:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:°FÑ:Ô:Ð:Õ:Ô:°FÑ:Ô:Ð:Ð:Ð:Ð:Ñ:Ð:Ð:Ð:Ð:Ð:Ñ:Ð:Ð:×:Ò:Ð:Ñ:Ô:Ð:Õ:Ô:Ð:Ð:Ñ:Ô:Ð:Ñ:Ð:Ð:Ð:Ð:Ð:Ñ:Ð:Õ:Õ:Ô:Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:r
   c                ó®  — |                      ddd¬¦  «         |                     dd¦  «        \  }}d}||u }|s—t          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }d	d
|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}}d S )NÚdouble_lock_instT)rÅ   rî   Úzone_doubler   rÞ   r×   rß   rÌ   r#   rá   râ   s           r   Ú,test_simultaneous_boss_and_secret_quarantinezJTestTier1SecretChamberLockout.test_simultaneous_boss_and_secret_quarantine�   s   € Ø×)Ò)Ð*<È$Ð^bÐ)ÑcÔcÐcØ!×7Ò7¸ÐGYÑZÔZ‰	ˆ�ØÐˆv˜ˆ~ÐÐÐÕÔÐÐÐÐˆv˜ÐÑÔÐÕÔÑÔÐÐÕÔˆvÑÔÐÕÔˆvÑÔÐÐÕÔ˜ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐr
   c                óº  — |                      dd¬¦  «         |                      dd¬¦  «         |                     dd¦  «        d         }d}||u }|slt          j        d|fd	||f¦  «        t          j        |¦  «        t          j        |¦  «        d
œz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|                     dd¦  «        d         }d}||u }|slt          j        d|fd	||f¦  «        t          j        |¦  «        t          j        |¦  «        d
œz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d S )NÚsecret_1Trí   Úsecret_2Frõ   r   r   r…   r5   r8   r9   rç   r›   s          r   Ú&test_secret_chamber_instance_isolationzDTestTier1SecretChamberLockout.test_secret_chamber_instance_isolation’   s´  € Ø×)Ò)¨*ÀDÐ)ÑIÔIÐIØ×)Ò)¨*ÀEÐ)ÑJÔJÐJØ×2Ò2°=À*ÑMÔMÈaÔPÐXÐTXÐXÐPÐTXÐXÐXÐXÐXÕXÔXÐXÐXÐXÐXÐPÐTXÐXÑXÔXÕXÔXÐPÑXÔXÕXÔXÐTXÑXÔXÐXÐXÑXÐXÐXÐXÐXÐXÑXÐXÕXÕXÔXÐXÑXÔXÑXÔXÐXÐXÐXÐXÐXÐXÐXØ×2Ò2°=À*ÑMÔMÈaÔPÐYÐTYÐYÐPÐTYÐYÐYÐYÐYÕYÔYÐYÐYÐYÐYÐPÐTYÐYÑYÔYÕYÔYÐPÑYÔYÕYÔYÐTYÑYÔYÐYÐYÑYÐYÐYÐYÐYÐYÑYÐYÕYÕYÔYÐYÑYÔYÑYÔYÐYÐYÐYÐYÐYÐYÐYÐYÐYr
   Nr�   )	rŽ   r�   r�   r‘   rñ   ró   rö   rú   rþ   r	   r
   r   rê   rê   y   s„   € € € € € ØFÐFð2ð 2ð 2ð 2ð/ð /ð /ð /ð;ð ;ð ;ð ;ð
ð ð ð ð
Zð Zð Zð Zð Zð Zr
   rê   c                  ó:   — e Zd ZdZdd„Zdd„Zdd„Zdd	„Zdd
„ZdS )Ú#TestTier1DeathPenaltyPortalHandlingzZFeature 16: Death Penalty Portal Handling (Wilderness closes portal, Map consumes charge).r   r   r   r   c                ó¦  — |                      ddddd¦  «        \  }}}|j        |         d         }d}||u }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        d	œz  }d
d|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|                     dddd¬¦  «         |j        |         d         }d}||u }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        d	œz  }d
d|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d S )Nr   r‚   rƒ   rk   r„   Tr   r…   r5   r8   r9   F©Úis_map_instance)rE   rP   rF   rG   rK   rN   rO   Úon_player_deathr†   s	            r   Ú,test_wilderness_death_closes_personal_portalzPTestTier1DeathPenaltyPortalHandling.test_wilderness_death_closes_personal_portalœ   s«  € Ø"×6Ò6°xÀÈhÐX[Ð]`ÑaÔa‰
ˆˆ1ˆdØÔ$ TÔ*¨;Ô7Ð?¸4Ð?Ð7¸4Ð?Ð?Ð?Ð?Õ?Ô?Ð?Ð?Ð?Ð?Ð7¸4Ð?Ñ?Ô?Õ?Ô?Ð7Ñ?Ô?Õ?Ô?¸4Ñ?Ô?Ð?Ð?Ñ?Ð?Ð?Ð?Ð?Ð?Ñ?Ð?Õ?Õ?Ô?Ð?Ñ?Ô?Ñ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ø×%Ò% h°¸XÐW\Ð%Ñ]Ô]Ð]ØÔ$ TÔ*¨;Ô7Ð@¸5Ð@Ð7¸5Ð@Ð@Ð@Ð@Õ@Ô@Ð@Ð@Ð@Ð@Ð7¸5Ð@Ñ@Ô@Õ@Ô@Ð7Ñ@Ô@Õ@Ô@¸5Ñ@Ô@Ð@Ð@Ñ@Ð@Ð@Ð@Ð@Ð@Ñ@Ð@Õ@Õ@Ô@Ð@Ñ@Ô@Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@r
   c                óà  — |                      ddddd¦  «        \  }}}|                      ddddd¦  «        \  }}}|                     dddd¬¦  «         |j        |         d         }d}||u }|slt          j        d	|fd
||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚d x}x}}|j        |         d         }d}||u }|slt          j        d	|fd
||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚d x}x}}d S )Nr   r‚   rƒ   rk   Úhero_2Fr  r„   r   r…   r5   r8   r9   T)rE   r  rP   rF   rG   rK   rN   rO   )
rQ   r   ry   Úp1Úp2rV   rU   r`   ra   rb   s
             r   Ú3test_wilderness_death_does_not_close_others_portalszWTestTier1DeathPenaltyPortalHandling.test_wilderness_death_does_not_close_others_portals¢   sÎ  € Ø ×4Ò4°X¸{ÈHÐVYÐ[^Ñ_Ô_‰ˆˆ1ˆbØ ×4Ò4°X¸{ÈHÐVYÐ[^Ñ_Ô_‰ˆˆ1ˆbØ×%Ò% h°¸XÐW\Ð%Ñ]Ô]Ð]ØÔ$ RÔ(¨Ô5Ð>¸Ð>Ð5¸Ð>Ð>Ð>Ð>Õ>Ô>Ð>Ð>Ð>Ð>Ð5¸Ð>Ñ>Ô>Õ>Ô>Ð5Ñ>Ô>Õ>Ô>¸Ñ>Ô>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>ØÔ$ RÔ(¨Ô5Ð=¸Ð=Ð5¸Ð=Ð=Ð=Ð=Õ=Ô=Ð=Ð=Ð=Ð=Ð5¸Ð=Ñ=Ô=Õ=Ô=Ð5Ñ=Ô=Õ=Ô=¸Ñ=Ô=Ð=Ð=Ñ=Ð=Ð=Ð=Ð=Ð=Ñ=Ð=Õ=Õ=Ô=Ð=Ñ=Ô=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=r
   c                ó¢  — |                      dd¬¦  «         |                     d¦  «         |                     dddd¬¦  «         |j        d         }d}||k    }|slt	          j        d	|fd
||f¦  «        t	          j        |¦  «        t	          j        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}x}}d S )NÚmap_instr–   r—   r   Úzone_mapTr  r¥   r2   r4   r5   r8   r9   )	r™   r¢   r  rš   rF   rG   rK   rN   rO   r›   s          r   Ú'test_map_instance_death_consumes_chargezKTestTier1DeathPenaltyPortalHandling.test_map_instance_death_consumes_charge©   sÿ   € Ø×0Ò0°ÈQÐ0ÑOÔOÐOØ×&Ò& zÑ2Ô2Ð2Ø×%Ò% h°
¸JÐX\Ð%Ñ]Ô]Ð]ØÔ(¨Ô4Ð9¸Ð9Ð4¸Ò9Ð9Ð9Ð9Õ9Ô9Ð9Ð9Ð9Ð9Ð4¸Ð9Ñ9Ô9Õ9Ô9Ð4Ñ9Ô9Õ9Ô9¸Ñ9Ô9Ð9Ð9Ñ9Ð9Ð9Ð9Ð9Ð9Ñ9Ð9Õ9Õ9Ô9Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9r
   c                óÔ  — |                      dd¬¦  «         |                     dddd¬¦  «         |                     dddd¬¦  «         |j        d         }d	}||k    }|slt          j        d
|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}|                     d¦  «        d	         }d}||u }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d S )NÚhard_mapr§   r—   r   r  Tr  r  r   r2   r4   r5   r8   r9   Fr   r…   )	r™   r  rš   rF   rG   rK   rN   rO   r¢   r›   s          r   Ú,test_map_instance_multiple_deaths_exhaustionzPTestTier1DeathPenaltyPortalHandling.test_map_instance_multiple_deaths_exhaustion¯   sÀ  € Ø×0Ò0°ÈQÐ0ÑOÔOÐOØ×%Ò% h°
¸JÐX\Ð%Ñ]Ô]Ð]Ø×%Ò% h°
¸JÐX\Ð%Ñ]Ô]Ð]ØÔ(¨Ô4Ð9¸Ð9Ð4¸Ò9Ð9Ð9Ð9Õ9Ô9Ð9Ð9Ð9Ð9Ð4¸Ð9Ñ9Ô9Õ9Ô9Ð4Ñ9Ô9Õ9Ô9¸Ñ9Ô9Ð9Ð9Ñ9Ð9Ð9Ð9Ð9Ð9Ñ9Ð9Õ9Õ9Ô9Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ø×-Ò-¨jÑ9Ô9¸!Ô<ÐEÀÐEÐ<ÀÐEÐEÐEÐEÕEÔEÐEÐEÐEÐEÐ<ÀÐEÑEÔEÕEÔEÐ<ÑEÔEÕEÔEÀÑEÔEÐEÐEÑEÐEÐEÐEÐEÐEÑEÐEÕEÕEÔEÐEÑEÔEÑEÔEÐEÐEÐEÐEÐEÐEÐEÐEÐEr
   c                óf  — |                      ddddd¦  «         |                     dddd¬¦  «        \  }}g }d}||u }|}|rd}||v }	|	}|�sXt          j        d	|fd
||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }
dd|
iz  }|                     |¦  «         |r‹t          j        d|	fd||f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }|                     |¦  «         t          j	        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}}	d S )Nr   r‚   rƒ   rk   Fr  TÚWILDERNESS_DEATHr   r   r    r!   r$   r%   rŠ   r½   rR   r¾   r-   r.   r   r/   r0   )rE   r  rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   )rQ   r   r    rR   rS   rT   rU   rV   rz   rW   rY   rZ   r[   r\   r]   r^   s                   r   Ú$test_wilderness_death_report_messagezHTestTier1DeathPenaltyPortalHandling.test_wilderness_death_report_message¶   s+  € Ø×)Ò)¨(°KÀÈ3ÐPSÑTÔTÐTØ×/Ò/°¸+ÀxÐafÐ/ÑgÔg‰ˆˆCØ7Ð7�TÐ7ˆr�TˆzÐ7Ð7Ð7Ð7Ð7Ð0Ð7Ð0°CÐ7Ð7Ð7Ð7Ð7Ñ7Õ7Ô7Ð7Ð7Ð7Ð7ˆr�TÐ7Ñ7Ô7Ð7Õ7Ô7Ñ7Ô7Ð7Ð7Õ7Ô7ˆrÑ7Ô7Ð7Õ7Ô7ˆrÑ7Ô7Ð7Ð7Õ7Ô7�TÑ7Ô7Ð7Ð7Ñ7Ð7Ð7Ð7Ð7Ð7Ñ7Ð7Ð7×7Ò7Ð7Ñ7Ô7Ð7Ð7Ð7Õ7Ô7Ð7Ð7Ð7Ð7Ð0°CÐ7Ñ7Ô7Õ7Ô7Ð0Ñ7Ô7Ð7Õ7Ô7Ñ7Ô7Ð7Ð7Õ7Ô7°CÑ7Ô7Ð7Õ7Ô7°CÑ7Ô7Ð7Ð7Ð7Ð7Ñ7Ð7Ð7Ð7Ð7Ð7Ñ7Ð7Ð7×7Ò7Ð7Ñ7Ô7Ð7Õ7Ô7Ð7Ð7Ñ7Ô7Ð7Ñ7Ð7Ð7Ð7Ð7Ð7Ñ7Ð7Õ7Õ7Ô7Ð7Ñ7Ô7Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7r
   Nr�   )	rŽ   r�   r�   r‘   r  r
  r  r  r  r	   r
   r   r   r   ™   s†   € € € € € ØdÐdðAð Að Að Að>ð >ð >ð >ð:ð :ð :ð :ðFð Fð Fð Fð8ð 8ð 8ð 8ð 8ð 8r
   r   c                  ó:   — e Zd ZdZdd„Zdd„Zdd„Zdd	„Zdd
„ZdS )ÚTestTier1GameDesignMatrixSchemaz.Feature 17: Game Design Matrix DB Tables (R5).r   úsqlite3.Connectionr   r   c                ó®  — d„ |                      d¦  «                             ¦   «         D ¦   «         }d}||v }|s—t          j        d|fd||f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}}d S )
Nc                ó   — g | ]
}|d          ‘ŒS ©r   r	   ©Ú.0Úrs     r   ú
<listcomp>zZTestTier1GameDesignMatrixSchema.test_db_has_party_scaling_matrix_table.<locals>.<listcomp>À   ó   € ÐpÐpÐp˜1�!�A”$ÐpÐpÐpr
   ú1SELECT name FROM sqlite_master WHERE type='table'Úparty_scaling_matrixrŠ   rÊ   ÚtablesrË   rÌ   r#   ©
ÚexecuteÚfetchallrF   rG   rK   rH   rI   rJ   rN   rO   ©rQ   r   r"  rV   r`   rÐ   rY   s          r   Ú&test_db_has_party_scaling_matrix_tablezFTestTier1GameDesignMatrixSchema.test_db_has_party_scaling_matrix_table¿   sù   € ØpÐp §¢Ð0cÑ dÔ d× mÒ mÑ oÔ oÐpÑpÔpˆØ%Ð/Ð%¨Ð/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/Ð%¨Ð/Ñ/Ô/Õ/Ô/Ð%Ñ/Ô/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/¨Ñ/Ô/Ð/Õ/Ô/¨Ñ/Ô/Ð/Ð/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/r
   c                ó®  — d„ |                      d¦  «                             ¦   «         D ¦   «         }d}||v }|s—t          j        d|fd||f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}}d S )
Nc                ó   — g | ]
}|d          ‘ŒS r  r	   r  s     r   r  z[TestTier1GameDesignMatrixSchema.test_db_has_loot_allocation_modes_table.<locals>.<listcomp>Ä   r  r
   r   Úloot_allocation_modesrŠ   rÊ   r"  rË   rÌ   r#   r#  r&  s          r   Ú'test_db_has_loot_allocation_modes_tablezGTestTier1GameDesignMatrixSchema.test_db_has_loot_allocation_modes_tableÃ   sù   € ØpÐp §¢Ð0cÑ dÔ d× mÒ mÑ oÔ oÐpÑpÔpˆØ&Ð0Ð&¨&Ð0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0Ð&¨&Ð0Ñ0Ô0Õ0Ô0Ð&Ñ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0¨&Ñ0Ô0Ð0Õ0Ô0¨&Ñ0Ô0Ð0Ð0Ð0Ð0Ñ0Ð0Ð0Ð0Ð0Ð0Ñ0Ð0Õ0Õ0Ô0Ð0Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0r
   c                ó®  — d„ |                      d¦  «                             ¦   «         D ¦   «         }d}||v }|s—t          j        d|fd||f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}}d S )
Nc                ó   — g | ]
}|d          ‘ŒS r  r	   r  s     r   r  zVTestTier1GameDesignMatrixSchema.test_db_has_teleport_configs_table.<locals>.<listcomp>È   r  r
   r   Úteleport_configsrŠ   rÊ   r"  rË   rÌ   r#   r#  r&  s          r   Ú"test_db_has_teleport_configs_tablezBTestTier1GameDesignMatrixSchema.test_db_has_teleport_configs_tableÇ   sù   € ØpÐp §¢Ð0cÑ dÔ d× mÒ mÑ oÔ oÐpÑpÔpˆØ!Ð+Ð! VÐ+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð! VÐ+Ñ+Ô+Õ+Ô+Ð!Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ VÑ+Ô+Ð+Õ+Ô+ VÑ+Ô+Ð+Ð+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+r
   c                ó®  — d„ |                      d¦  «                             ¦   «         D ¦   «         }d}||v }|s—t          j        d|fd||f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}}d S )
Nc                ó   — g | ]
}|d          ‘ŒS r  r	   r  s     r   r  z]TestTier1GameDesignMatrixSchema.test_db_has_portal_quarantine_rules_table.<locals>.<listcomp>Ì   r  r
   r   Úportal_quarantine_rulesrŠ   rÊ   r"  rË   rÌ   r#   r#  r&  s          r   Ú)test_db_has_portal_quarantine_rules_tablezITestTier1GameDesignMatrixSchema.test_db_has_portal_quarantine_rules_tableË   sù   € ØpÐp §¢Ð0cÑ dÔ d× mÒ mÑ oÔ oÐpÑpÔpˆØ(Ð2Ð(¨FÐ2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2Ð(¨FÐ2Ñ2Ô2Õ2Ô2Ð(Ñ2Ô2Ð2Õ2Ô2Ñ2Ô2Ð2Ð2Õ2Ô2¨FÑ2Ô2Ð2Õ2Ô2¨FÑ2Ô2Ð2Ð2Ð2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2r
   c                óÜ  — d„ |                      d¦  «                             ¦   «         D ¦   «         }d}||v }|s—t          j        d|fd||f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}}g }d
}||v }|}|sd}	|	|v }
|
}|
sd}||v }|}|�sæt          j        d|fd||f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }| 
                    |¦  «         |�st          j        d|
fd|	|f¦  «        t          j        |	¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }| 
                    |¦  «         |
s‹t          j        d|fd||f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }| 
                    |¦  «         t          j        |d¦  «        i z  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}x}x}x}	x}
x}}d S )Nc                ó   — g | ]
}|d          ‘ŒS )r¨   r	   r  s     r   r  z[TestTier1GameDesignMatrixSchema.test_db_party_scaling_columns_integrity.<locals>.<listcomp>Ð   s   € ÐdÐdÐd˜��!”ÐdÐdÐdr
   z'PRAGMA table_info(party_scaling_matrix)Ú
party_sizerŠ   rÊ   ÚcolsrË   rÌ   r#   Úexp_bonus_pctÚexp_multiplierÚdescription)z%(py3)s in %(py5)s)r<   r#   r$   r%   r½   r¾   r-   r.   r®   r¯   r°   r±   r¨   r²   r³   )r$  r%  rF   rG   rK   rH   rI   rJ   rN   rO   rL   rM   )rQ   r   r7  rV   r`   rÐ   rY   rS   rT   rz   rW   rµ   r¶   rZ   r[   r\   rh   r·   r¸   r¹   s                       r   Ú'test_db_party_scaling_columns_integrityzGTestTier1GameDesignMatrixSchema.test_db_party_scaling_columns_integrityÏ   s§  € ØdÐd˜gŸošoÐ.WÑXÔX×aÒaÑcÔcÐdÑdÔdˆØÐ#ˆ|˜tÐ#Ð#Ð#Ð#Õ#Ô#Ð#Ð#Ð#Ð#ˆ|˜tÐ#Ñ#Ô#Õ#Ô#ˆ|Ñ#Ô#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#˜tÑ#Ô#Ð#Õ#Ô#˜tÑ#Ô#Ð#Ð#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ø[Ð[ˆÐ[ˆ $Ð&Ð[Ð[Ð[Ð[Ð[Ð*:Ð[Ð*:¸dÐ*BÐ[Ð[Ð[Ð[Ð[ÀmÐ[ÀmÐW[ÐF[Ð[Ð[Ð[Ð[Ñ[Õ[Ô[Ð[Ð[Ð[Ð[ˆ $Ð[Ñ[Ô[Õ[Ô[ˆÑ[Ô[Ð[Õ[Ô[Ñ[Ô[Ð[Ð[Õ[Ô[ $Ñ[Ô[Ð[Õ[Ô[ $Ñ[Ô[Ð[Ð[Ð[Ð[Ñ[Ð[Ð[Ð[Ð[Ð[Ñ[Ð[Ð[×[Ò[Ð[Ñ[Ô[Ð[Ð[Ñ[Õ[Ô[Ð[Ð[Ð[Ð[Ð*:¸dÐ[Ñ[Ô[Õ[Ô[Ð*:Ñ[Ô[Ð[Õ[Ô[Ñ[Ô[Ð[Ð[Õ[Ô[¸dÑ[Ô[Ð[Õ[Ô[¸dÑ[Ô[Ð[Ð[Ð[Ð[Ñ[Ð[Ð[Ð[Ð[Ð[Ñ[Ð[Ð[×[Ò[Ð[Ñ[Ô[Ð[Ð[Ð[Õ[Ô[Ð[Ð[Ð[Ð[ÀmÐW[Ð[Ñ[Ô[Õ[Ô[ÀmÑ[Ô[Ð[Õ[Ô[Ñ[Ô[Ð[Ð[Õ[Ô[ÐW[Ñ[Ô[Ð[Õ[Ô[ÐW[Ñ[Ô[Ð[Ð[Ð[Ð[Ñ[Ð[Ð[Ð[Ð[Ð[Ñ[Ð[Ð[×[Ò[Ð[Ñ[Ô[Ð[Õ[Ô[Ð[Ð[Ñ[Ô[Ð[Ñ[Ð[Ð[Ð[Ð[Ð[Ñ[Ð[Õ[Õ[Ô[Ð[Ñ[Ô[Ñ[Ô[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[Ð[r
   N)r   r  r   r   )	rŽ   r�   r�   r‘   r'  r+  r/  r3  r;  r	   r
   r   r  r  ¼   s„   € € € € € Ø8Ð8ð0ð 0ð 0ð 0ð1ð 1ð 1ð 1ð,ð ,ð ,ð ,ð3ð 3ð 3ð 3ð\ð \ð \ð \ð \ð \r
   r  )r   r   )r‘   Ú
__future__r   ÚbuiltinsrH   Ú_pytest.assertion.rewriteÚ	assertionÚrewriterF   r   Úpathlibr   ÚpytestÚ#tests.e2e_social_party.test_harnessr   Úfixturer   r   r   r“   rÁ   rê   r   r  r	   r
   r   ú<module>rE     sÑ  ððð ð
 #Ð "Ð "Ð "Ð "Ð "Ø  € € € € € € € € € € € € €€€€Ø Ð Ð Ð Ð Ð Ø €€€Ø @Ð @Ð @Ð @Ð @Ð @ð „ðð ð ñ „ðð „ðð ñ „ððbð bð bð bð bñ bô bð bð83ð 3ð 3ð 3ð 3ñ 3ô 3ð 3ð>[ð [ð [ð [ð [ñ [ô [ð [ðBZð Zð Zð Zð Zñ Zô Zð Zð@ 8ð  8ð  8ð  8ð  8ñ  8ô  8ð  8ðF\ð \ð \ð \ð \ñ \ô \ð \ð \ð \r
   