§
    ¹ÀjD$  ã                  ó¶   — 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mZmZmZ ddlZddlmZmZ  G d„ d¦  «        Z G d„ d	¦  «        Z G d
„ d¦  «        ZdS )u  
Tier 1: Feature Coverage â€” Sanctuary Safe Haven, 4 Camp NPCs & Boss Gate State Machine.
Covers Features 12, 13, 16 from PROJECT.md Feature Inventory:
- Feature 12: Sanctuary Safe Haven & Y-Sorting
- Feature 13: 4 Encampment NPCs & Dialogue
- Feature 16: Boss Gate State Machine
é    )ÚannotationsN)ÚAnyÚDictÚListÚTuple)Úmap_zone_pb2Únpc_pb2c                  óB   — e Zd ZdZdd„Zdd„Zdd„Zdd„Zdd„Zdd	„Z	d
S )Ú&TestTier1SanctuarySafeHavenAndYSortingz-Feature 12: Sanctuary Safe Haven & Y-Sorting.ÚreturnÚNonec                ó¨  — d}|dk    }| }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	}||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Úzone_boundless_sanctuaryT©Úis)z%(py0)s is %(py3)sÚis_safe_haven©Úpy0Úpy3úassert %(py5)sÚpy5FÚcan_spawn_hostile©Ú
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanation)ÚselfÚzone_idr   r   Ú@py_assert2Ú@py_assert1Ú@py_format4Ú@py_format6s           úDC:\Projects\FreeExile\tests\e2e_cocos\test_tier1_world_and_scenes.pyÚ4test_t1_f12_sanctuary_zero_hostile_monster_guaranteez[TestTier1SanctuarySafeHavenAndYSorting.test_t1_f12_sanctuary_zero_hostile_monster_guarantee   s©  € à,ˆØ Ð$>Ò>ˆØ -Ð-ÐØ $Ð$ˆ} Ð$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$ˆ} Ð$Ñ$Ô$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$ˆ}Ñ$Ô$Ð$Õ$Ô$ˆ}Ñ$Ô$Ð$Ð$Õ$Ô$ Ñ$Ô$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ø$)Ð)Ð  EÐ)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)Ð  EÐ)Ñ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)Ð Ñ)Ô)Ð)Õ)Ô)Ð Ñ)Ô)Ð)Ð)Õ)Ô) EÑ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ó    c                ó  — d}d}g d¢}|D ]ø\  }}t          j        ||d         z
  ||d         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  }dd|iz  }	t          t          j	        |	¦  «        ¦  «        ‚d }Œùd S )N©ç        r-   g      @)r,   )ç       @r.   )ç      Àg      ø?)r-   ç      @r   é   ©ú<=)z%(py0)s <= %(py2)sÚdistÚplaza_radius©r   Úpy2úassert %(py4)sÚpy4©
ÚmathÚhypotr   r   r   r   r   r   r    r!   )
r"   Úplaza_centerr5   Útest_pointsÚpxÚpyr4   r%   Ú@py_format3Ú@py_format5s
             r(   Ú,test_t1_f12_central_plaza_radius_walkabilityzSTestTier1SanctuarySafeHavenAndYSorting.test_t1_f12_central_plaza_radius_walkability   s=  € Ø!ˆØˆàGÐGÐGˆØ!ð 	(ð 	(‰FˆB�Ý”:˜b <°¤?Ñ2°B¸Àa¼Ñ4HÑIÔIˆDØ˜<Ò'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'�4˜<Ð'Ñ'Ô'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'�4Ñ'Ô'Ð'Õ'Ô'�4Ñ'Ô'Ð'Ð'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'˜<Ñ'Ô'Ð'Õ'Ô'˜<Ñ'Ô'Ð'Ð'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'ð	(ð 	(r*   c                óˆ  — ddddœddddœdd	d
dœg}t          |d„ ¬¦  «        }|d         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}||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}||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Ú	prop_backg       Àr/   )ÚidÚwxÚwyÚherog      ð?r.   Ú
prop_frontr0   g      @c                ó$   — | d         | d         z   S )NrG   rH   © )Úes    r(   ú<lambda>z\TestTier1SanctuarySafeHavenAndYSorting.test_t1_f12_y_depth_sorting_formula.<locals>.<lambda>-   s   € ¸¸4¼À1ÀTÄ7Ñ9J€ r*   )Úkeyr   rF   ©ú==©z%(py1)s == %(py4)s©Úpy1r9   úassert %(py6)sÚpy6r1   é   )Úsortedr   r   r   r    r!   )r"   ÚentitiesÚsorted_entitiesÚ@py_assert0Ú@py_assert3r$   rB   Ú@py_format7s           r(   Ú#test_t1_f12_y_depth_sorting_formulazJTestTier1SanctuarySafeHavenAndYSorting.test_t1_f12_y_depth_sorting_formula&   sZ  € ð  d°$Ð7Ð7Ø ¨CÐ0Ð0Ø s°#Ð6Ð6ð
ˆõ
 ! Ð/JÐ/JÐKÑKÔKˆØ˜qÔ! $Ô'Ð6¨;Ð6Ð'¨;Ò6Ð6Ð6Ð6Õ6Ô6Ð6Ð6Ð6Ð6Ð'¨;Ð6Ñ6Ô6Õ6Ô6Ð'Ñ6Ô6Õ6Ô6¨;Ñ6Ô6Ð6Ð6Ñ6Ð6Ð6Ð6Ð6Ð6Ñ6Ð6Õ6Õ6Ô6Ð6Ñ6Ô6Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ø˜qÔ! $Ô'Ð1¨6Ð1Ð'¨6Ò1Ð1Ð1Ð1Õ1Ô1Ð1Ð1Ð1Ð1Ð'¨6Ð1Ñ1Ô1Õ1Ô1Ð'Ñ1Ô1Õ1Ô1¨6Ñ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Ø˜qÔ! $Ô'Ð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*   c                ó¦  — d}d}||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  }dd	|iz  }t          t          j        |¦  «        ¦  «        ‚d }d S )
Nr0   g      @)ú<)z%(py0)s < %(py2)sÚ
hero_depthÚ
prop_depthr6   r8   r9   r   )r"   ra   rb   r%   rA   rB   s         r(   Ú/test_t1_f12_occlusion_ordering_hero_behind_propzVTestTier1SanctuarySafeHavenAndYSorting.test_t1_f12_occlusion_ordering_hero_behind_prop2   sõ   € àˆ
Øˆ
Ø˜JÒ&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&ˆz˜JÐ&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&ˆzÑ&Ô&Ð&Õ&Ô&ˆzÑ&Ô&Ð&Ð&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&˜JÑ&Ô&Ð&Õ&Ô&˜JÑ&Ô&Ð&Ð&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&r*   c                óz  — d\  }}d\  }}||z   ||z   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  }dd	|iz  }	t          t          j        |	¦  «        ¦  «        ‚d x}}d S )
N)ç      @g      $@)ç      à?rf   g      0@rP   ©z%(py0)s == %(py3)sÚeffective_depthr   r   r   r   )
r"   Úprop_xÚprop_yÚfootprint_offset_xÚfootprint_offset_yrh   r$   r%   r&   r'   s
             r(   Ú(test_t1_f12_prop_footprint_center_offsetzOTestTier1SanctuarySafeHavenAndYSorting.test_t1_f12_prop_footprint_center_offset8   sõ   € Ø"‰ˆ�Ø19Ñ.ÐÐ.Ø!Ð$6Ñ6¸6ÐDVÑ;VÑWˆØ"&Ð&ˆ $Ò&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&ˆ $Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&ˆÑ&Ô&Ð&Õ&Ô&ˆÑ&Ô&Ð&Ð&Õ&Ô& $Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&r*   c                ó¶  — g d¢}ddg}|D ]¥}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  }t          t          j        |¦  «        ¦  «        ‚d x}}Œ¦|D ]¥}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  }t          t          j        |¦  «        ¦  «        ‚d x}}Œ¦d S )N)ÚnpcÚplayerÚdummy_primal_shrineÚmob_skeleton_warriorÚboss_strand_executioner©Úin)z%(py0)s in %(py3)srM   r   r   r   )únot in)z%(py0)s not in %(py3)sr   )r"   Úallowed_entitiesÚdisallowed_entitiesrM   r$   r%   r&   r'   s           r(   Ú/test_t1_f12_target_dummy_permitted_in_sanctuaryzVTestTier1SanctuarySafeHavenAndYSorting.test_t1_f12_target_dummy_permitted_in_sanctuary>   sØ  € àCÐCÐCÐØ5Ð7PÐQÐØ!ð 	Að 	AˆAØ@Ð@�1Ð@Ð@Ð@Ð@Ð@Õ@Ô@Ð@Ð@Ð@Ð@�1Ð@Ð@Ñ@Ô@Ð@Õ@Ô@Ñ@Ô@Ð@Ð@Õ@Ô@�1Ñ@Ô@Ð@Õ@Ô@�1Ñ@Ô@Ð@Ð@Õ@Ô@Ð@Ñ@Ô@Ð@Ð@Ñ@Ð@Ð@Ð@Ð@Ð@Ñ@Ð@Õ@Õ@Ô@Ð@Ñ@Ô@Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@Ø$ð 	Eð 	EˆAØDÐD�1ÐDÐDÐDÐDÐDÕDÔDÐDÐDÐDÐD�1ÐDÐDÑDÔDÐDÕDÔDÑDÔDÐDÐDÕDÔD�1ÑDÔDÐDÕDÔD�1ÑDÔDÐDÐDÕDÔDÐDÑDÔDÐDÐDÑDÐDÐDÐDÐDÐDÑDÐDÕDÕDÔDÐDÑDÔDÑDÔDÐDÐDÐDÐDÐDÐDð	Eð 	Er*   N©r   r   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r)   rC   r^   rc   rm   ry   rL   r*   r(   r   r      s˜   € € € € € Ø7Ð7ð*ð *ð *ð *ð(ð (ð (ð (ð
8ð 
8ð 
8ð 
8ð'ð 'ð 'ð 'ð'ð 'ð 'ð 'ðEð Eð Eð Eð Eð Er*   r   c                  ód   — e Zd ZdZej        dd„¦   «         Zdd„Zdd„Zdd	„Z	dd
„Z
dd„Zdd„ZdS )Ú"TestTier1EncampmentNPCsAndDialoguez)Feature 13: 4 Encampment NPCs & Dialogue.r   úDict[str, Dict[str, Any]]c           	     ó@   — ddddddœddd	d
ddœddddddœddddddœdœS )NÚnpc_van_gioi_thuong_nhanu   Gian ThÆ°Æ¡ng Cáº©u Kháº¥u)g      Àr-   ÚOUTCAST_SCAVENGERÚ
SHOP_VAULT)rF   ÚnameÚposÚroleÚserviceÚnpc_thiet_tuong_au_da_tuõ   Thiáº¿t TÆ°á»£ng Huyáº¿t Ä�á»“)g      @r-   ÚBONE_BLACKSMITHÚCRAFTING_FORGEÚnpc_chan_vo_truyen_thuau   Huyáº¿t Vu BÃ  BÃ )g      Àç      @ÚBLOOD_SHAMANÚMERIDIAN_INSIGHTÚnpc_bach_hieu_sinhu   BÃ¡ch Hiá»ƒu Sinh)g      @r�   ÚFERAL_TRACKERÚQUEST_DISPATCH)Ú	scavengerÚ
blacksmithÚshamanÚtrackerrL   )r"   s    r(   Ú	camp_npcsz,TestTier1EncampmentNPCsAndDialogue.camp_npcsK   s}   € ð 1Ø4Ø"Ø+Ø'ðð ð 1Ø8Ø!Ø)Ø+ðð ð 0Ø,Ø"Ø&Ø-ðð ð +Ø+Ø!Ø'Ø+ðð ð-
ð 
ð 	
r*   r™   r   c                óx  — 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}}|d	         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}||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}||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}||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é   rP   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sÚlenr™   )r   rT   r   rV   úassert %(py8)sÚpy8r•   rˆ   r„   rR   rS   rU   rV   r–   rŒ   r—   r�   r˜   r“   )	rœ   r   r   r   r   r   r   r    r!   )
r"   r™   r$   Ú@py_assert5Ú@py_assert4r]   Ú@py_format9r[   r\   rB   s
             r(   Ú2test_t1_f13_four_npcs_present_with_canonical_roleszUTestTier1EncampmentNPCsAndDialogue.test_t1_f13_four_npcs_present_with_canonical_rolesl   sã  € Ý�9‰~Œ~Ð" Ð"ˆ~ Ò"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"ˆ~ Ð"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"�sÑ"Ô"Ð"Õ"Ô"�sÑ"Ô"Ð"Ð"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"�9Ñ"Ô"Ð"Õ"Ô"�9Ñ"Ô"Ð"Ð"Õ"Ô"ˆ~Ñ"Ô"Õ"Ô" Ñ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ø˜Ô% fÔ-ÐDÐ1DÐDÐ-Ð1DÒDÐDÐDÐDÕDÔDÐDÐDÐDÐDÐ-Ð1DÐDÑDÔDÕDÔDÐ-ÑDÔDÕDÔDÐ1DÑDÔDÐDÐDÑDÐDÐDÐDÐDÐDÑDÐDÕDÕDÔDÐDÑDÔDÑDÔDÐDÐDÐDÐDÐDÐDÐDØ˜Ô& vÔ.ÐCÐ2CÐCÐ.Ð2CÒCÐCÐCÐCÕCÔCÐCÐCÐCÐCÐ.Ð2CÐCÑCÔCÕCÔCÐ.ÑCÔCÕCÔCÐ2CÑ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Ø˜Ô" 6Ô*Ð<¨nÐ<Ð*¨nÒ<Ð<Ð<Ð<Õ<Ô<Ð<Ð<Ð<Ð<Ð*¨nÐ<Ñ<Ô<Õ<Ô<Ð*Ñ<Ô<Õ<Ô<¨nÑ<Ô<Ð<Ð<Ñ<Ð<Ð<Ð<Ð<Ð<Ñ<Ð<Õ<Õ<Ô<Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ø˜Ô# FÔ+Ð>¨Ð>Ð+¨Ò>Ð>Ð>Ð>Õ>Ô>Ð>Ð>Ð>Ð>Ð+¨Ð>Ñ>Ô>Õ>Ô>Ð+Ñ>Ô>Õ>Ô>¨Ñ>Ô>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>r*   c                óš  — |d         d         }d}d}d}t           j        }|d         }|d         }||z
  }	|d         }
|d         }|
|z
  } ||	|¦  «        }||k    }|�s>t          j        d|fd	||f¦  «        d
t	          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        nd
t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |
¦  «        t          j        |¦  «        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}x}x}x}	x}
x}x}x}}t           j        }|d         }|d         }||z
  }	|d         }
|d         }|
|z
  } ||	|¦  «        }||k    }|�s>t          j        d|fd||f¦  «        d
t	          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        nd
t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |
¦  «        t          j        |¦  «        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}x}x}x}	x}
x}x}x}}d S )Nr•   r‡   )g      Àrf   )r/   r-   g      @r   r1   r2   )zp%(py14)s
{%(py14)s = %(py2)s
{%(py2)s = %(py0)s.hypot
}((%(py4)s - %(py6)s), (%(py9)s - %(py11)s))
} <= %(py16)sr;   Úmax_interact_radius)r   r7   r9   rV   Úpy9Úpy11Úpy14Úpy16zassert %(py18)sÚpy18)ú>)zo%(py14)s
{%(py14)s = %(py2)s
{%(py2)s = %(py0)s.hypot
}((%(py4)s - %(py6)s), (%(py9)s - %(py11)s))
} > %(py16)sr:   )r"   r™   Úscav_posÚplayer_nearÚ
player_farr¤   r%   r\   rŸ   Ú@py_assert7Ú@py_assert8Ú@py_assert10Ú@py_assert12Ú@py_assert13Ú@py_assert15Ú@py_format17Ú@py_format19s                    r(   Ú5test_t1_f13_interaction_proximity_threshold_2_5_unitszXTestTier1EncampmentNPCsAndDialogue.test_t1_f13_interaction_proximity_threshold_2_5_unitss   s©  € Ø˜[Ô)¨%Ô0ˆØ!ˆØ ˆ
Ø!ÐåŒzÐl˜+ aœ.Ðl¨8°A¬;Ðl˜.¨;Ñ6Ðl¸ÀA¼ÐlÈÐRSÌÐl¸ÈÑ8TÐlˆzˆzÐ6Ð8TÑUÔUÐlÐUÐYlÒlÐlÐlÑlÕlÔlÐlÐlÐlÐlÐUÐYlÐ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ˆzÑlÔlÕlÔl˜.ÑlÔlÕlÔl¨;ÑlÔlÕlÔl¸ÑlÔlÕlÔlÈÑlÔlÕlÔlÐUÑlÔlÐlÕlÔlÑlÔlÐlÐlÕlÔlÐYlÑlÔlÐlÕlÔlÐYlÑ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ÐlÐlÐlÐlÐlÐlÐlÐlÝŒzÐi˜* Qœ-Ði¨(°1¬+Ði˜-¨+Ñ5Ði°zÀ!´}ÐiÀxÐPQÄ{Ði°}À{Ñ7RÐiˆzˆzÐ5Ð7RÑSÔSÐiÐSÐViÒiÐiÐiÑiÕiÔiÐiÐiÐiÐiÐSÐViÐiÑiÔiÐiÕiÔiÑiÔiÐiÐiÕiÔi�tÑiÔiÐiÕiÔi�tÑiÔiÐiÐiÕiÔiˆzÑiÔiÕiÔi˜-ÑiÔiÕiÔi¨+ÑiÔiÕiÔi°}ÑiÔiÕiÔiÀ{ÑiÔiÕiÔiÐSÑiÔiÐiÕiÔiÑiÔiÐiÐiÕiÔiÐViÑiÔiÐiÕiÔiÐViÑiÔiÐiÐiÐiÐiÑiÐiÐiÐiÐiÐiÑiÐiÕiÕiÔiÐiÑiÔiÑiÔiÐiÐiÐiÐiÐiÐiÐiÐiÐiÐiÐiÐiÐiÐiÐiÐiÐiÐiÐiÐiÐir*   c           	     ó–  — t          j        dd¬¦  «        }d|j        _        d|j        _        d|j        _        |j        j                             dd¬	¦  «        }|j        j                             d
d¬	¦  «        }| 	                    ¦   «         }t          j        ¦   «         }| 
                    |¦  «         |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        }|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        |¦  «        t          j        |¦  «        dœz  }
dd|
iz  }t%          t          j        |¦  «        ¦  «        ‚d x}x}x}}|j        }|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        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t%          t          j        |¦  «        ¦  «        ‚d x}x}x}x}}|j        j        d         }|j        }d}||k    }|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}}d S )"NTÚOK)ÚsuccessÚmessagerŠ   r‹   uN   RÃ¨n Cá»‘t Thiáº¿t Ä‘á»•i Cá»• Cá»‘t áº¤n. NgÆ°Æ¡i cÃ³ phÃ´i Ä‘á»“ cáº§n rÃ¨n?Úforgeu   Má»Ÿ LÃ² RÃ¨n)Ú	choice_idÚtextÚleaveu	   Rá»�i Ä�ir   )z/%(py2)s
{%(py2)s = %(py0)s.success
} is %(py5)sÚdecoded©r   r7   r   úassert %(py7)sÚpy7rP   )zL%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.npc_info
}.npc_id
} == %(py7)s)r   r7   r9   rÂ   zassert %(py9)sr¥   rW   )zx%(py7)s
{%(py7)s = %(py0)s(%(py5)s
{%(py5)s = %(py3)s
{%(py3)s = %(py1)s.active_dialogue_node
}.choices
})
} == %(py10)srœ   )r   rT   r   r   rÂ   Úpy10zassert %(py12)sÚpy12r   )z1%(py3)s
{%(py3)s = %(py1)s.choice_id
} == %(py6)s)rT   r   rV   r�   rž   )r	   ÚInteractNpcResponseÚnpc_infoÚnpc_idr†   Úactive_dialogue_nodeÚcontentÚchoicesÚaddÚSerializeToStringÚParseFromStringr¹   r   r   r   r   r   r   r    r!   rœ   r¼   )r"   ÚrespÚchoice1Úchoice2Úbin_datar¿   r%   r    r\   r'   Ú@py_format8Ú@py_assert6rŸ   Ú@py_format10r$   Ú@py_assert9r¯   Ú@py_format11Ú@py_format13r[   r]   r¡   s                         r(   Ú,test_t1_f13_dialogue_node_protobuf_structurezOTestTier1EncampmentNPCsAndDialogue.test_t1_f13_dialogue_node_protobuf_structure|   sÀ  € ÝÔ*ØØð
ñ 
ô 
ˆð  :ˆŒÔØ=ˆŒÔØ,|ˆÔ!Ô)ØÔ+Ô3×7Ò7À'ÐP_Ð7Ñ`Ô`ˆØÔ+Ô3×7Ò7À'ÐP[Ð7Ñ\Ô\ˆØ×)Ò)Ñ+Ô+ˆÝÔ-Ñ/Ô/ˆØ×Ò Ñ)Ô)Ð)ØŒÐ& $Ð&ˆ $Ð&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&ˆ $Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&ˆwÑ&Ô&Ð&Õ&Ô&ˆwÑ&Ô&Ð&Ð&Õ&Ô&ˆÑ&Ô&Õ&Ô& $Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ØÔÐDÐÔ&ÐDÐ*DÐDÐ&Ð*DÒDÐDÐDÐDÕDÔDÐDÐDÐDÐDÐ&Ð*DÐDÑDÔDÐDÕDÔDÑDÔDÐDÐDÕDÔDˆwÑDÔDÐDÕDÔDˆwÑDÔDÐDÐDÕDÔDÐÑDÔDÕDÔDÐ&ÑDÔDÕDÔDÐ*DÑDÔDÐDÐDÑDÐDÐDÐDÐDÐDÑDÐDÕDÕDÔDÐDÑDÔDÑDÔDÐDÐDÐDÐDÐDÐDÐDÐDÐDØÔ/Ð=Ð/Ô7Ð=�sÐ7Ñ8Ô8Ð=¸AÐ=Ð8¸AÒ=Ð=Ð=Ñ=Õ=Ô=Ð=Ð=Ð=Ð=Ð8¸AÐ=Ñ=Ô=Ð=Õ=Ô=Ñ=Ô=Ð=Ð=Õ=Ô=�sÑ=Ô=Ð=Õ=Ô=�sÑ=Ô=Ð=Ð=Ð=Õ=Ô=Ñ=Ô=Ð=Ð=Õ=Ô=�7Ñ=Ô=Ð=Õ=Ô=�7Ñ=Ô=Ð=Ð=Õ=Ô=Ð/Ñ=Ô=Õ=Ô=Ð7Ñ=Ô=Õ=Ô=Ð8Ñ=Ô=Õ=Ô=¸AÑ=Ô=Ð=Ð=Ñ=Ð=Ð=Ð=Ð=Ð=Ñ=Ð=Õ=Õ=Ô=Ð=Ñ=Ô=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=ØÔ+Ô3°AÔ6ÐKÐ6Ô@ÐKÀGÐKÐ@ÀGÒKÐKÐKÐKÕKÔKÐKÐKÐKÐKÐ@ÀGÐKÑKÔKÕKÔKÐ6ÑKÔKÕKÔKÐ@ÑKÔKÕKÔKÀGÑ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}||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	}||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
}||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}||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                ó   — h | ]
}|d          ’ŒS )r‰   rL   ©Ú.0ro   s     r(   ú	<setcomp>z^TestTier1EncampmentNPCsAndDialogue.test_t1_f13_service_routing_for_each_npc.<locals>.<setcomp>�   s   € ÐAÐAÐA s�C˜	”NÐAÐAÐAr*   r…   rt   ©z%(py1)s in %(py3)sÚservices©rT   r   r   r   r�   r‘   r”   )	Úvaluesr   r   r   r   r   r   r    r!   )r"   r™   rß   r[   r$   r&   r'   s          r(   Ú(test_t1_f13_service_routing_for_each_npczKTestTier1EncampmentNPCsAndDialogue.test_t1_f13_service_routing_for_each_npcŽ   s8  € ØAÐA¨i×.>Ò.>Ñ.@Ô.@ÐAÑAÔAˆØÐ'ˆ|˜xÐ'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'ˆ|˜xÐ'Ñ'Ô'Õ'Ô'ˆ|Ñ'Ô'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'˜xÑ'Ô'Ð'Õ'Ô'˜xÑ'Ô'Ð'Ð'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'ØÐ+Ð 8Ð+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð 8Ð+Ñ+Ô+Õ+Ô+ÐÑ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ 8Ñ+Ô+Ð+Õ+Ô+ 8Ñ+Ô+Ð+Ð+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ø!Ð-Ð! XÐ-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-Ð! XÐ-Ñ-Ô-Õ-Ô-Ð!Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô- XÑ-Ô-Ð-Õ-Ô- XÑ-Ô-Ð-Ð-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-ØÐ+Ð 8Ð+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð 8Ð+Ñ+Ô+Õ+Ô+ÐÑ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ 8Ñ+Ô+Ð+Õ+Ô+ 8Ñ+Ô+Ð+Ð+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+r*   c           	     óª  — d„ |                      ¦   «         D ¦   «         }t          t          |¦  «        ¦  «        D �]}t          |dz   t          |¦  «        ¦  «        D ]ò}t          j        ||         d         ||         d         z
  ||         d         ||         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  }d	d
|iz  }	t          t          j        |	¦  «        ¦  «        ‚d x}}Œó�Œd S )Nc                ó   — g | ]
}|d          ‘ŒS )r‡   rL   rÛ   s     r(   ú
<listcomp>zjTestTier1EncampmentNPCsAndDialogue.test_t1_f13_npc_coordinate_spacing_prevents_overlap.<locals>.<listcomp>–   s   € Ð>Ð>Ð> C�S˜”ZÐ>Ð>Ð>r*   r1   r   re   )ú>=)z%(py0)s >= %(py3)sr4   r   r   r   )rá   Úrangerœ   r;   r<   r   r   r   r   r   r   r    r!   )
r"   r™   Ú	positionsÚiÚjr4   r$   r%   r&   r'   s
             r(   Ú3test_t1_f13_npc_coordinate_spacing_prevents_overlapzVTestTier1EncampmentNPCsAndDialogue.test_t1_f13_npc_coordinate_spacing_prevents_overlap•   su  € Ø>Ð>¨9×+;Ò+;Ñ+=Ô+=Ð>Ñ>Ô>ˆ	Ý•s˜9‘~”~Ñ&Ô&ð 	#ñ 	#ˆAÝ˜1˜q™5¥# i¡.¤.Ñ1Ô1ð #ð #�Ý”z )¨A¤,¨q¤/°I¸a´LÀ´OÑ"CÀYÈqÄ\ÐRSÄ_ÐW`ÐabÔWcÐdeÔWfÑEfÑgÔg�Ø"Ð"�t˜s’{Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"�t˜sÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"�tÑ"Ô"Ð"Õ"Ô"�tÑ"Ô"Ð"Ð"Õ"Ô"˜sÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"ñ#ð	#ð 	#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}}d S )
Nrƒ   Úopen_bazaar)rÇ   r¼   rP   )z1%(py2)s
{%(py2)s = %(py0)s.choice_id
} == %(py5)sÚreqrÀ   rÁ   rÂ   )r	   ÚSelectDialogueChoiceRequestr¼   r   r   r   r   r   r   r    r!   )r"   rî   r%   r    r\   r'   rÒ   s          r(   Ú1test_t1_f13_dialogue_choice_selection_advancementzTTestTier1EncampmentNPCsAndDialogue.test_t1_f13_dialogue_choice_selection_advancementœ   s  € ÝÔ1Ø-Ø#ð
ñ 
ô 
ˆð Œ}Ð- Ð-ˆ} Ò-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-ˆ} Ð-Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô-ˆsÑ-Ô-Ð-Õ-Ô-ˆsÑ-Ô-Ð-Ð-Õ-Ô-ˆ}Ñ-Ô-Õ-Ô- Ñ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-r*   N)r   r�   )r™   r�   r   r   rz   )r{   r|   r}   r~   ÚpytestÚfixturer™   r¢   r¶   rØ   râ   rë   rð   rL   r*   r(   r€   r€   H   s»   € € € € € Ø3Ð3à„^ð
ð 
ð 
ñ „^ð
ð@?ð ?ð ?ð ?ðjð jð jð jðLð Lð Lð Lð$,ð ,ð ,ð ,ð#ð #ð #ð #ð.ð .ð .ð .ð .ð .r*   r€   c                  óB   — e Zd ZdZdd„Zdd„Zdd„Zdd„Zdd„Zdd	„Z	d
S )ÚTestTier1BossGateStateMachinez$Feature 16: Boss Gate State Machine.r   r   c                ó*  — ddddœ}|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}||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}||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 )Nr   r1   rW   )ÚLOCKEDÚUNLOCKEDÚBREACHEDrö   rP   rR   rS   rU   rV   r÷   rø   ©r   r   r   r    r!   )r"   Ústatesr[   r\   r$   rB   r]   s          r(   Ú"test_t1_f16_three_canonical_statesz@TestTier1BossGateStateMachine.test_t1_f16_three_canonical_states§   s  € Ø¨1¸!Ð<Ð<ˆØ�hÔÐ$ 1Ð$Ð 1Ò$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$Ð 1Ð$Ñ$Ô$Õ$Ô$ÐÑ$Ô$Õ$Ô$ 1Ñ$Ô$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ø�jÔ!Ð& QÐ&Ð! QÒ&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&Ð! QÐ&Ñ&Ô&Õ&Ô&Ð!Ñ&Ô&Õ&Ô& QÑ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ø�jÔ!Ð& QÐ&Ð! QÒ&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&Ð! QÐ&Ñ&Ô&Õ&Ô&Ð!Ñ&Ô&Õ&Ô& QÑ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&r*   c                ó  — ddddœ}|d         dk    }| }|sedddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndiz  }t          t          j        |¦  «        ¦  «        ‚d }d S )Nr   é   ©ÚstateÚpacks_killedÚpacks_requiredrÿ   zassert not %(py0)sr   Úis_passable)r   r   r   r   r   r    r!   )r"   Úgater  r%   Ú@py_format2s        r(   Ú/test_t1_f16_initial_locked_state_blocks_passagezMTestTier1BossGateStateMachine.test_t1_f16_initial_locked_state_blocks_passage­   sœ   € Ø¨AÀÐCÐCˆØ˜G”}¨Ò)ˆØˆÐˆÐÐÐÐÕÔÑÔÐÐÕÔ�;ÑÔÐÕÔ�;ÑÔÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐr*   c                ó¸  — ddddœ}|dxx         dz  cc<   |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xx         dz  cc<   |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xx         dz  cc<   |d         |d         k    rd|d<   |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 )Nr   rý   rþ   r   r1   rÿ   rP   rR   rS   rU   rV   r  rù   )r"   r  r[   r\   r$   rB   r]   s          r(   Ú0test_t1_f16_encounter_kill_reporting_advancementzNTestTier1BossGateStateMachine.test_t1_f16_encounter_kill_reporting_advancement²   sy  € Ø¨AÀÐCÐCˆàˆ^ÐÐÔ Ñ!ÐÐÑØ�GŒ}Ð! Ð!ˆ} Ò!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ} Ð!Ñ!Ô!Õ!Ô!ˆ}Ñ!Ô!Õ!Ô! Ñ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!àˆ^ÐÐÔ Ñ!ÐÐÑØ�GŒ}Ð! Ð!ˆ} Ò!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ} Ð!Ñ!Ô!Õ!Ô!ˆ}Ñ!Ô!Õ!Ô! Ñ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!àˆ^ÐÐÔ Ñ!ÐÐÑØ�Ô 4Ð(8Ô#9Ò9Ð9ØˆD�‰MØ�GŒ}Ð! Ð!ˆ} Ò!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ} Ð!Ñ!Ô!Õ!Ô!ˆ}Ñ!Ô!Õ!Ô! Ñ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ð!r*   c                óˆ  — ddddœ}|d         }|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  }t          t          j        |¦  «        ¦  «        ‚d x}}d S )NrW   r1   é
   )ÚWALLÚFLOORÚBOSS_GATE_LOCKEDr  r  rP   rg   Ú	gate_tiler   r   r   r   )r"   Ú
tile_typesr  r$   r%   r&   r'   s          r(   Ú5test_t1_f16_gate_tile_mutation_from_obstacle_to_floorzSTestTier1BossGateStateMachine.test_t1_f16_gate_tile_mutation_from_obstacle_to_floorÀ   sö   € Ø¨!ÀÐDÐDˆ
ØÐ1Ô2ˆ	à˜wÔ'ˆ	Ø& wÔ/Ð/ˆyÐ/Ò/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/ˆyÐ/Ð/Ñ/Ô/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/ˆyÑ/Ô/Ð/Õ/Ô/ˆyÑ/Ô/Ð/Ð/Õ/Ô/Ð/Ñ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/r*   c                ój  — d}d}||z
  }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 )NrW   rý   u   [Cá»”NG NIÃŠM PHONG] CÃ²n uI    Ä‘Ã n quÃ¡i dá»‹ biáº¿n cáº§n tiÃªu diá»‡t Ä‘á»ƒ phÃ¡ giáº£i phong áº¥n!u   CÃ²n 1 Ä‘Ã n quÃ¡irt   rÞ   Úlore_msgrà   r   r   )r   r   r   r   r   r   r    r!   )	r"   r   r  Ú	remainingr  r[   r$   r&   r'   s	            r(   Ú)test_t1_f16_proximity_lore_banner_messagezGTestTier1BossGateStateMachine.test_t1_f16_proximity_lore_banner_messageÇ   sý   € ØˆØˆØ" \Ñ1ˆ	ð E°	ð  Eð  Eð  EˆØ#Ð/Ð# xÐ/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/Ð# xÐ/Ñ/Ô/Õ/Ô/Ð#Ñ/Ô/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/ xÑ/Ô/Ð/Õ/Ô/ xÑ/Ô/Ð/Ð/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/r*   c                ó@  — ddi}d}|r|d         dk    rd|d<   |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 )
Nrÿ   r1   TrW   rP   rR   rS   rU   rV   rù   )r"   r  Úplayer_crossedr[   r\   r$   rB   r]   s           r(   Ú(test_t1_f16_breached_state_upon_crossingzFTestTier1BossGateStateMachine.test_t1_f16_breached_state_upon_crossingÎ   sÚ   € Ø˜ˆ|ˆàˆØð 	˜d 7œm¨qÒ0Ð0ØˆD�‰MØ�GŒ}Ð! Ð!ˆ} Ò!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ} Ð!Ñ!Ô!Õ!Ô!ˆ}Ñ!Ô!Õ!Ô! Ñ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ð!r*   Nrz   )
r{   r|   r}   r~   rû   r  r  r  r  r  rL   r*   r(   rô   rô   ¤   s’   € € € € € Ø.Ð.ð'ð 'ð 'ð 'ðð ð ð ð
"ð "ð "ð "ð0ð 0ð 0ð 0ð0ð 0ð 0ð 0ð"ð "ð "ð "ð "ð "r*   rô   )r~   Ú
__future__r   Úbuiltinsr   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter   r;   Útypingr   r   r   r   rñ   Úserver.protor   r	   r   r€   rô   rL   r*   r(   ú<module>r     s  ððð ð #Ð "Ð "Ð "Ð "Ð "à  € € € € € € € € € € € € €€€€Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø €€€à .Ð .Ð .Ð .Ð .Ð .Ð .Ð .ð3Eð 3Eð 3Eð 3Eð 3Eñ 3Eô 3Eð 3EðlY.ð Y.ð Y.ð Y.ð Y.ñ Y.ô Y.ð Y.ðx0"ð 0"ð 0"ð 0"ð 0"ñ 0"ô 0"ð 0"ð 0"ð 0"r*   