§
    ²¿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mZmZmZmZmZmZmZmZmZmZ e
j        d„ ¦   «         Z G d„ d¦  «        ZdS )z¤
Tier 3 E2E Tests: Cross-Feature State Interleaving & Pairwise Combinations.
Tests interactions between Party, Teleport, Town Portal, Quarantine, and Loot systems.
é    )ÚannotationsN)
ÚGroundLootDropÚGuildMemberPresenceDTOÚGuildRosterServiceÚLootAllocationModeÚPartyScalingCalculatorÚPartyServiceÚSocialServiceÚ
TargetTypeÚTeleportServiceÚTownPortalEnginec                 ó¢   — t          ¦   «         } t          ¦   «         }t          ¦   «         }t          | ||¦  «        }t	          ¦   «         }| ||||fS )N)r	   r
   r   r   r   )Ú	party_svcÚ
social_svcÚ	guild_svcÚteleport_svcÚportal_engines        úHC:\Projects\FreeExile\tests\e2e_social_party\test_tier3_cross_feature.pyÚ	cross_envr      sL   € å‘”€IÝ‘”€JÝ"Ñ$Ô$€IÝ" 9¨j¸)ÑDÔD€LÝ$Ñ&Ô&€MØ�j )¨\¸=ÐHÐHó    c                  ó:   — e Zd ZdZd
d„Zd
d„Zd
d„Zd
d„Zd
d„Zd	S )Ú!TestTier3CrossFeatureCombinationsz?Tier 3: Cross-Feature State Interleaving & System Interactions.ÚreturnÚNonec                ób  — |\  }}}}}|                      ddddd¦  «        }|                     |j        dd¦  «         |                     |j        ddd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}||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 )"zYParty leader attempts to open town portal while boss encounter is in progress -> BLOCKED.ÚleaderÚLeaderé(   Úzone_boss_chamberÚinst_boss_1Úmember1ÚM1T)Úboss_activeç        FN©Úis©z%(py2)s is %(py5)sÚok©Úpy2Úpy5ú%(py7)sÚpy7)z%(py9)s is %(py12)sÚp_id©Úpy9Úpy12ú%(py14)sÚpy14r   úassert %(py17)sÚpy17ÚQUARANTINE_BOSS©Úin©z%(py1)s in %(py3)sÚerr©Úpy1Úpy3úassert %(py5)sr+   )Úcreate_partyÚinvite_playerÚparty_idÚaccept_inviteÚset_encounter_stateÚrequest_town_portalÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚappendÚ_format_boolopÚAssertionErrorÚ_format_explanation)Úselfr   r   Ú_r   Úpr(   r:   r.   Ú@py_assert1Ú@py_assert4Ú@py_assert3Ú@py_assert0Ú@py_assert11Ú@py_assert10Ú@py_format6Ú@py_format8Ú@py_format13Ú@py_format15Ú@py_format16Ú@py_format18Ú@py_assert2Ú@py_format4s                          r   Ú5test_cross_01_party_leader_opens_portal_in_boss_fightzWTestTier3CrossFeatureCombinations.test_cross_01_party_leader_opens_portal_in_boss_fight$   sX  € à,5Ñ)ˆ	�1�a˜˜MØ×"Ò" 8¨X°rÐ;NÐP]Ñ^Ô^ˆØ×Ò ¤
¨H°iÑ@Ô@Ð@Ø×Ò ¤
¨I°t¸RÐATÐVcÑdÔdÐdð 	×)Ò)¨-ÀTÐ)ÑJÔJÐJð &×9Ò9¸(ÐDWÐYfÐhkÐmpÑqÔq‰ˆˆ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d¦  «         |                     dd¬¦  «         |                     ddt
          j        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}||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 )zbParty member attempts to teleport to friend who is inside a quarantined secret chamber -> BLOCKED.ÚheroÚexplorerÚExploreré2   TÚzone_puzzle_tombu   Máº­t Tháº¥t Cá»• Quan)Úis_secret_activeFr%   )z%(py0)s is %(py3)sr(   )Úpy0r=   r>   r+   NÚGATE_5_QUARANTINE_SECRETr7   r9   Úreasonr;   )Úsend_friend_requestÚaccept_friend_requestÚupdate_presenceÚset_zone_stateÚvalidate_destination_5_gatesr   ÚFRIENDrE   rF   rG   rH   rI   rJ   rM   rN   )rO   r   rP   r   r   r(   rj   r^   rR   r_   rX   rU   s               r   Ú:test_cross_02_teleport_to_friend_in_secret_chamber_blockedz\TestTier3CrossFeatureCombinations.test_cross_02_teleport_to_friend_in_secret_chamber_blocked3   s(  € à,5Ñ)ˆˆ:�q˜,¨Ø×&Ò& v¨zÑ:Ô:Ð:Ø×(Ò(¨°VÑ<Ô<Ð<Ø×"Ò" :¨z¸2¸tÐEWÐYqÑrÔrÐrð 	×#Ò#Ð$6ÈÐ#ÑNÔNÐNà!×>Ò>¸vÀzÕS]ÔSdÐfxÑyÔy‰
ˆˆFØÐˆr�Uˆ{ÐÐÐÕÔÐÐÐÐˆr�UÐÑÔÐÕÔÑÔÐÐÕÔˆrÑÔÐÕÔˆrÑÔÐÐÕÔ�UÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØ)Ð3Ð)¨VÐ3Ð3Ð3Ð3Õ3Ô3Ð3Ð3Ð3Ð3Ð)¨VÐ3Ñ3Ô3Õ3Ô3Ð)Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3¨VÑ3Ô3Ð3Õ3Ô3¨VÑ3Ô3Ð3Ð3Ð3Ð3Ñ3Ð3Ð3Ð3Ð3Ð3Ñ3Ð3Õ3Õ3Ô3Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3r   c           	     óX  — |\  }}}}}|                      ddd¦  «        }|                     |j        dd¦  «         |                     |j        ddd¦  «         t	          ddddt
          j        ¬	¦  «        }|                     d¦  «         |j        }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        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}x}x}	x}}
|j        }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        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}x}x}	x}}
dS )zaItem dropped for member who leaves party remains locked until 5.0s expires, then converts to FFA.r   r   re   ÚleaverÚLeaverÚd_dropÚsword_uniqueg      Y@)Údrop_timestampÚallocation_modeg     €Y@)Úcurrent_timeFr%   )zn%(py8)s
{%(py8)s = %(py2)s
{%(py2)s = %(py0)s.can_player_pickup
}(%(py4)s, current_time=%(py6)s)
} is %(py11)sÚdrop)rh   r*   Úpy4Úpy6Úpy8Úpy11zassert %(py13)sÚpy13NgfffffFZ@T)r?   r@   rA   rB   r   r   ÚSHORTÚleave_partyÚcan_player_pickuprE   rF   rG   rH   rI   rJ   rM   rN   )rO   r   r   rP   rQ   rz   rR   rT   Ú@py_assert5Ú@py_assert7rW   Ú@py_assert9Ú@py_format12Ú@py_format14s                 r   ÚAtest_cross_03_short_allocation_when_allocated_player_leaves_partyzcTestTier3CrossFeatureCombinations.test_cross_03_short_allocation_when_allocated_player_leaves_partyA   s%  € à )Ñˆ	�1�a˜˜AØ×"Ò" 8¨X°rÑ:Ô:ˆØ×Ò ¤
¨H°hÑ?Ô?Ð?Ø×Ò ¤
¨H°hÀÑCÔCÐCå˜h¨¸ÐQVÕhzô  iAð  Bñ  Bô  Bˆð 	×Ò˜hÑ'Ô'Ð'ð Ô%ÐL hÐL¸UÐLÐ%Ð% h¸UÐCÑCÔCÐLÀuÐLÐCÀuÐLÐLÐLÐLÕLÔLÐLÐLÐLÐLÐCÀuÐLÑLÔLÐLÕLÔLÑLÔLÐLÐLÕLÔLˆtÑLÔLÐLÕLÔLˆtÑLÔLÐLÐLÕLÔLÐ%ÑLÔLÕLÔL hÑLÔLÕLÔL¸UÑLÔLÕLÔLÐCÑLÔLÕLÔLÀuÑLÔLÐLÐLÑLÐLÐLÐLÐLÐLÑLÐLÕLÕLÔLÐLÑLÔLÑLÔLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLð Ô%ÐK hÐK¸UÐKÐ%Ð% h¸UÐCÑCÔCÐKÀtÐKÐCÀtÐKÐKÐKÐKÕKÔKÐKÐKÐKÐKÐCÀtÐKÑKÔKÐKÕKÔKÑKÔKÐKÐKÕKÔKˆtÑKÔKÐKÕKÔKˆtÑKÔKÐKÐKÕKÔKÐ%ÑKÔKÕKÔK hÑKÔKÕKÔK¸UÑKÔKÕKÔKÐCÑKÔKÕKÔKÀtÑKÔKÐKÐKÑKÐKÐKÐKÐKÐKÑKÐKÕKÕKÔKÐKÑKÔKÑKÔKÐKÐKÐKÐKÐKÐKÐKÐKÐKÐKÐKÐKÐKÐKÐKr   c           	     óz  — |\  }}}}}|                      ddddd¦  «        }t          dd¦  «        D ]F}|                     |j        dd|› �¦  «         |                     |j        d|› �d	|› �ddd¦  «         ŒG|                     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|j        d         _        |                     dd¬¦  «        }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
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}	x}}t)          j        t!          |¦  «        ¦  «        \  }}}t,          j        }d} |||¦  «        }|sæd d!t#          j        ¦   «         v st          j        t,          ¦  «        rt          j
        t,          ¦  «        nd!t          j
        |¦  «        d"t#          j        ¦   «         v st          j        |¦  «        rt          j
        |¦  «        nd"t          j
        |¦  «        t          j
        |¦  «        d#œz  }t          t          j        |¦  «        ¦  «        ‚dx}x}}|                     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        |d0¦  «        i z  }d1d2|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}x}x}x}}d|j        d         _        d3\  |j        d         _        |j        d         _        |                     dd¬¦  «        }t!          |¦  «        }	d
}|	|k    }|sòt          j	        d|fd|	|f¦  «        dt#          j        ¦   «         v st          j        t           ¦  «        rt          j
        t           ¦  «        ndd4t#          j        ¦   «         v st          j        |¦  «        rt          j
        |¦  «        nd4t          j
        |	¦  «        t          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}	x}}t)          j        t!          |¦  «        ¦  «        \  }}}t,          j        }d5} |||¦  «        }|sæd d!t#          j        ¦   «         v st          j        t,          ¦  «        rt          j
        t,          ¦  «        nd!t          j
        |¦  «        d6t#          j        ¦   «         v st          j        |¦  «        rt          j
        |¦  «        nd6t          j
        |¦  «        t          j
        |¦  «        d#œz  }t          t          j        |¦  «        ¦  «        ‚dx}x}}dS )7zmMember dies in 6-player map, consumes charge on death, returns via portal, restoring full EXP & Loot bonuses.Úp1r   é<   Úzone_map_t16Úinst_t16é   é   rQ   ÚMé   )Úinitial_chargesÚp6T)Úis_map_instanceé   ©ú==)z%(py1)s == %(py4)s©r<   r{   úassert %(py6)sr|   NÚzone_player_hideoutg      .@)Úradius)z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sÚlenÚnearby_5)rh   r<   r=   r|   zassert %(py8)sr}   g      @zRassert %(py7)s
{%(py7)s = %(py2)s
{%(py2)s = %(py0)s.isclose
}(%(py3)s, %(py5)s)
}ÚmathÚi_qty5)rh   r*   r=   r+   r-   é   r%   r'   r(   r)   r,   r-   ©z%(py9)s == %(py12)sÚremr/   r2   r3   r   r4   r5   )r$   r$   Únearby_6ç      @Úi_qty6)r?   Úranger@   rA   rB   Úregister_astral_map_deviceÚon_player_deathÚmap_chargesrE   rF   rJ   rM   rN   ÚmembersÚzone_idÚget_nearby_membersrœ   rG   rH   rI   r   Úcalculate_loot_multipliersrž   ÚiscloseÚenter_map_portalrK   rL   ÚxÚy)rO   r   r   rP   r   rQ   ÚirU   rT   r^   Ú@py_format5Ú@py_format7r�   rƒ   rS   Ú@py_format9rŸ   rR   Ú@py_assert6rY   r(   r¢   rV   rW   rX   rZ   r[   r\   r]   r£   r¥   s                                  r   Ú;test_cross_04_map_death_reentry_restores_six_player_scalingz]TestTier3CrossFeatureCombinations.test_cross_04_map_death_reentry_restores_six_player_scalingS   sT  € à,5Ñ)ˆ	�1�a˜˜MØ×"Ò" 4¨°2°~ÀzÑRÔRˆÝ�q˜!‘”ð 	bð 	bˆAØ×#Ò# A¤J°°g¸!°g°gÑ>Ô>Ð>Ø×#Ò# A¤J°°A°°¸¸Q¸¸À"ÀnÐV`ÑaÔaÐaÐaà×0Ò0°ÈQÐ0ÑOÔOÐOð 	×%Ò% d¨N¸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ð #8ˆŒ	�$ŒÔØ×/Ò/°¸TÐ/ÑBÔBˆÝ�8‰}Œ}Ð! Ð!ˆ} Ò!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ} Ð!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!�sÑ!Ô!Ð!Õ!Ô!�sÑ!Ô!Ð!Ð!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!�8Ñ!Ô!Ð!Õ!Ô!�8Ñ!Ô!Ð!Ð!Õ!Ô!ˆ}Ñ!Ô!Õ!Ô! Ñ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ý-ÔHÍÈXÉÌÑWÔW‰ˆ��1ÝŒ|Ð( CÐ(ˆ|ˆ|˜F CÑ(Ô(Ð(Ð(Ð(Ð(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(�tÑ(Ô(Ð(Õ(Ô(�tÑ(Ô(Ð(Ð(Õ(Ô(ˆ|Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(˜FÑ(Ô(Ð(Õ(Ô(˜FÑ(Ô(Ð(Ð(Õ(Ô( CÑ(Ô(Õ(Ô(Ð(Ñ(Ô(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ð #×3Ò3°JÑ?Ô?‰
ˆˆAˆsØ&Ð&�TÐ&ˆr�TˆzÐ&Ð&Ð&Ð&Ð& QÐ&˜c QšhÐ&Ð&Ð&Ð&Ñ&Õ&Ô&Ð&Ð&Ð&Ð&ˆr�TÐ&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&ˆrÑ&Ô&Ð&Õ&Ô&ˆrÑ&Ô&Ð&Ð&Õ&Ô&�TÑ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Ð&×&Ò&Ð&Ñ&Ô&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&˜c QÐ&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&˜cÑ&Ô&Ð&Õ&Ô&˜cÑ&Ô&Ð&Ð&Õ&Ô& QÑ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Ð&×&Ò&Ð&Ñ&Ô&Ð&Õ&Ô&Ð&Ð&Ñ&Ô&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ð #1ˆŒ	�$ŒÔØ/7Ñ,ˆŒ	�$ŒÔ˜1œ9 Tœ?Ô,Ø×/Ò/°¸TÐ/ÑBÔBˆÝ�8‰}Œ}Ð! Ð!ˆ} Ò!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ} Ð!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!�sÑ!Ô!Ð!Õ!Ô!�sÑ!Ô!Ð!Ð!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!�8Ñ!Ô!Ð!Õ!Ô!�8Ñ!Ô!Ð!Ð!Õ!Ô!ˆ}Ñ!Ô!Õ!Ô! Ñ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ý-ÔHÍÈXÉÌÑWÔW‰ˆ��1ÝŒ|Ð( CÐ(ˆ|ˆ|˜F CÑ(Ô(Ð(Ð(Ð(Ð(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(�tÑ(Ô(Ð(Õ(Ô(�tÑ(Ô(Ð(Ð(Õ(Ô(ˆ|Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(˜FÑ(Ô(Ð(Õ(Ô(˜FÑ(Ô(Ð(Ð(Õ(Ô( CÑ(Ô(Õ(Ô(Ð(Ñ(Ô(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(r   c                óø  — |\  }}}}}|                      ddddd¦  «        }|                     |j        dd¦  «         |                     |j        ddddd¦  «         t	          dd	d
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t$          j        dd¦  «        \  }}g }d}||u }|}|r|j        }d } ||¦  «        }|}|�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’d"d#t          j
        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd#t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d$œz  }|                     |¦  «         t          j        |d¦  «        i z  }d%d&|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}x}x}x}x}}|                     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}}|j        |         d-         }d}||u } | slt          j        d| fd.||f¦  «        t          j        |¦  «        t          j        |¦  «        d/œz  }!d0d1|!iz  }"t          t          j        |"¦  «        ¦  «        ‚dx}x} }dS )2zgSimultaneous channeling of guild teleport and town portal creation operates cleanly without cross-talk.ÚaliceÚAlicer   Ú	zone_wildÚinst_wÚbobÚBobÚcharlieÚCharlieé*   u   Huynh Ä�á»‡TÚzone_sanctuaryÚoutcastsg      $@Nr%   r'   Ú	ok_portalr)   r,   r-   )úis not)z%(py9)s is not %(py12)sr.   r/   r2   r3   r   r4   r5   Ú	chan_bob_Úok_tpzJ%(py15)s
{%(py15)s = %(py11)s
{%(py11)s = %(py9)s.startswith
}(%(py13)s)
}Úchan_id)r0   r~   r   Úpy15zassert %(py18)sÚpy18r¤   )Úelapsed_timeÚok_compr–   r¡   Útarget_zoneÚ	is_active)z%(py1)s is %(py4)sr˜   r™   r|   )r?   r@   rA   rB   r   Úregister_memberrD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   Ústart_teleport_channelr   Ú	GUILDMATEÚ
startswithÚcomplete_channelÚportals)#rO   r   r   r   r   r   r   rQ   Ú
guild_materÄ   rP   r.   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   rÇ   rÈ   Ú@py_assert12Ú@py_assert14Ú@py_format17Ú@py_format19rÌ   rÍ   r^   r³   r´   s#                                      r   Ú?test_cross_05_concurrent_guild_teleport_and_town_portal_channelzaTestTier3CrossFeatureCombinations.test_cross_05_concurrent_guild_teleport_and_town_portal_channelt   si  € àHQÑEˆ	�:˜y¨,¸Ø×"Ò" 7¨G°R¸ÀhÑOÔOˆØ×Ò ¤
¨G°UÑ;Ô;Ð;Ø×Ò ¤
¨E°5¸"¸kÈ8ÑTÔTÐTõ ,¨I°yÀ"ÀmÐUYÐ[kÑlÔlˆ
Ø×!Ò! *¨jÑ9Ô9Ð9ð +×>Ò>¸wÈÐU]Ð_cÐeiÑjÔjÑˆ	�1�dØ5Ð5˜DÐ5ˆy˜DÐ Ð5Ð5Ð5Ð5Ð5°Ð5 T°Ð%5Ð5Ð5Ð5Ð5Ñ5Õ5Ô5Ð5Ð5Ð5Ð5ˆy˜DÐ5Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5ˆyÑ5Ô5Ð5Õ5Ô5ˆyÑ5Ô5Ð5Ð5Õ5Ô5˜DÑ5Ô5Ð5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Ð5×5Ò5Ð5Ñ5Ô5Ð5Ð5Ð5Õ5Ô5Ð5Ð5Ð5Ð5 T°Ð5Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5 TÑ5Ô5Ð5Õ5Ô5 TÑ5Ô5Ð5Ð5Õ5Ô5°Ñ5Ô5Ð5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Ð5×5Ò5Ð5Ñ5Ô5Ð5Õ5Ô5Ð5Ð5Ñ5Ô5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Õ5Õ5Ô5Ð5Ñ5Ô5Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5ð &×<Ò<¸UÅJÔDXÐZcÐeuÑvÔv‰ˆˆwØ@Ð@˜Ð@ˆu˜ˆ}Ð@Ð@Ð@Ð@Ð@ Ô!3Ð@°KÐ@Ð!3Ð!3°KÑ!@Ô!@Ð@Ð!@Ð@Ð@Ñ@Õ@Ô@Ð@Ð@Ð@Ð@ˆu˜Ð@Ñ@Ô@Ð@Õ@Ô@Ñ@Ô@Ð@Ð@Õ@Ô@ˆuÑ@Ô@Ð@Õ@Ô@ˆuÑ@Ô@Ð@Ð@Õ@Ô@˜Ñ@Ô@Ð@Ð@Ñ@Ð@Ð@Ð@Ð@Ð@Ñ@Ð@Ð@×@Ò@Ð@Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Õ@Ô@Ñ@Ô@Ð@Ð@Õ@Ô@ Ñ@Ô@Ð@Õ@Ô@ Ñ@Ô@Ð@Ð@Õ@Ô@Ð!3Ñ@Ô@Õ@Ô@°KÑ@Ô@Õ@Ô@Ð!@Ñ@Ô@Ð@Ð@Ñ@Ð@Ð@×@Ò@Ð@Ñ@Ô@Ð@Õ@Ô@Ð@Ð@Ñ@Ô@Ð@Ñ@Ð@Ð@Ð@Ð@Ð@Ñ@Ð@Õ@Õ@Ô@Ð@Ñ@Ô@Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@ð  ,×<Ò<¸UÐQTÐ<ÑUÔUÑˆ�ØBÐB˜$ÐBˆw˜$ˆÐBÐBÐBÐBÐBÐ2BÐB ;Ð2BÒ#BÐBÐBÐBÐBÑBÕBÔBÐBÐBÐBÐBˆw˜$ÐBÑBÔBÐBÕBÔBÑBÔBÐBÐBÕBÔBˆwÑBÔBÐBÕBÔBˆwÑBÔBÐBÐBÕBÔB˜$ÑBÔBÐBÐBÑBÐBÐBÐBÐBÐBÑBÐBÐB×BÒBÐBÑBÔBÐBÐBÐBÕBÔBÐBÐBÐBÐB ;Ð2BÐBÑBÔBÐBÕBÔBÑBÔBÐBÐBÕBÔB ;ÑBÔBÐBÕBÔB ;ÑBÔBÐBÐBÕBÔBÐ2BÑBÔBÐBÐBÑBÐBÐBÐBÐBÐBÑBÐBÐB×BÒBÐBÑBÔBÐBÕBÔBÐBÐBÑBÔBÐBÑBÐBÐBÐBÐBÐBÑBÐBÕBÕBÔBÐBÑBÔBÑBÔBÐBÐBÐBÐBÐBÐBÐBÐBÐBÐBÐBÐBÐBð Ô$ TÔ*¨;Ô7Ð?¸4Ð?Ð7¸4Ð?Ð?Ð?Ð?Õ?Ô?Ð?Ð?Ð?Ð?Ð7¸4Ð?Ñ?Ô?Õ?Ô?Ð7Ñ?Ô?Õ?Ô?¸4Ñ?Ô?Ð?Ð?Ñ?Ð?Ð?Ð?Ð?Ð?Ñ?Ð?Õ?Õ?Ô?Ð?Ñ?Ô?Ñ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?r   N)r   r   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r`   rq   rˆ   r·   rÚ   © r   r   r   r   !   s‰   € € € € € ØIÐIð(ð (ð (ð (ð4ð 4ð 4ð 4ðLð Lð Lð Lð$)ð )ð )ð )ðB@ð @ð @ð @ð @ð @r   r   )rÞ   Ú
__future__r   ÚbuiltinsrG   Ú_pytest.assertion.rewriteÚ	assertionÚrewriterE   rž   ÚpytestÚ#tests.e2e_social_party.test_harnessr   r   r   r   r   r	   r
   r   r   r   Úfixturer   r   rß   r   r   ú<module>rè      s-  ððð ð
 #Ð "Ð "Ð "Ð "Ð "Ø  € € € € € € € € € € € € €€€€Ø €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð „ðIð Iñ „ðIðk@ð k@ð k@ð k@ð k@ñ k@ô k@ð k@ð k@ð k@r   