§
    ¼y»j÷8  ã                   ót  — d 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
 ddlmZmZmZmZmZmZmZmZmZmZmZ ddlmZmZmZmZ ej        defd„¦   «         Zej        def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 )a  
Unit Test Suite for FreeExile Map, Dungeon Instance, and Secret Chamber Engine.
Validates:
1. Zone Registry & Metadata (Sanctuary, Open World, Dungeons, Secret Chambers).
2. Waypoint Network, Discovery, and Fast Travel Authority.
3. Portal Traversal with Level and Quest Prerequisite Gates.
4. Dungeon Instance Lifecycle (Layer Progression, Time Limits, Spatial Isolation).
5. Secret Chamber Spawning, Event-Driven Discovery, and Auto-Collapse Mechanics.
6. Deep Closed-Loop Integration with QuestEngine & Combat Subsystems.
é    N)ÚSet)Ú
ZoneEngineÚZoneTypeÚZoneEnvironmentÚZoneDefinitionÚWaypointÚ
ZonePortalÚPlayerLocationÚDungeonTemplateÚInstanceSessionÚSecretChamberTemplateÚSecretChamberSession)ÚQuestEngineÚQuestStatusÚHiddenTriggerTypeÚcreate_default_quest_engineÚreturnc                  ó   — t          ¦   «         S ©N)r   © ó    ú<C:\Projects\FreeExile\tests\unit\test_map_instance_system.pyÚzone_enginer   %   s   € å‰<Œ<Ðr   c                  ó   — t          ¦   «         S r   )r   r   r   r   Úquest_enginer   *   s   € å&Ñ(Ô(Ð(r   c                   ó2   — e Zd Zdefd„Zdefd„Zdefd„ZdS )ÚTestMapAndZoneRegistryr   c                 óN  — d}|j         }||v }|sªt          j        d|fd||f¦  «        t          j        |¦  «        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}x}}| 	                    d¦  «        }|j
        }t          j        }	||	k    }
|
sòt          j        d	|
fd
||	f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |	¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}
}	|j        }t          j        }	||	k    }
|
sòt          j        d	|
fd||	f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |	¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}
}	|j        }d}||k    }
|
sªt          j        d	|
fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}
}ddt          j        fddt          j        fddt          j        fddt          j        fddt          j        fddt          j        fd d!t          j        fd"d#t          j        fd$d%t          j        fg	}|D �]å\  }}}|j         }
||
v }|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t          j        |
¦  «        d(œz  }d)d*|iz  }t          t          j        |¦  «        ¦  «        ‚dx}}
| 	                    |¦  «        }|j
        }t          j        }	||	k    }
|
sòt          j        d	|
fd+||	f¦  «        d,t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd,t          j        |¦  «        dt	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |	¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}
}	|j        }||k    }
|
sÕt          j        d	|
fd-||f¦  «        d,t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd,t          j        |¦  «        d.t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd.d(œz  }d)d*|iz  }t          t          j        |¦  «        ¦  «        ‚dx}}
|j        }||k    }
|
sÕt          j        d	|
fd/||f¦  «        d,t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd,t          j        |¦  «        d0t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd0d(œz  }d)d*|iz  }t          t          j        |¦  «        ¦  «        ‚dx}}
�ŒçdS )1zPVerifies that all 10 canonical open world / sanctuary zones and templates exist.Úzone_boundless_sanctuary©Úin)z-%(py1)s in %(py5)s
{%(py5)s = %(py3)s.zones
}r   ©Úpy1Úpy3Úpy5úassert %(py7)sÚpy7N©ú==)zP%(py2)s
{%(py2)s = %(py0)s.zone_type
} == %(py6)s
{%(py6)s = %(py4)s.SANCTUARY
}Ú	sanctuaryr   ©Úpy0Úpy2Úpy4Úpy6úassert %(py8)sÚpy8)zO%(py2)s
{%(py2)s = %(py0)s.environment
} == %(py6)s
{%(py6)s = %(py4)s.NORMAL
}r   é   ©z1%(py2)s
{%(py2)s = %(py0)s.min_level
} == %(py5)s©r,   r-   r%   Úzone_tang_kiem_nhaiÚzone_ancient_sword_barrowé   Úzone_boundless_sandstormé   Úzone_blood_scale_ruinsé   Úzone_five_elements_altaré(   Úzone_abyssal_ice_pondé2   Úzone_infinite_blood_rifté<   Úzone_purgatory_lava_cavernéF   Úzone_boundless_celestial_palaceéU   )z-%(py0)s in %(py4)s
{%(py4)s = %(py2)s.zones
}Úzone_id©r,   r-   r.   úassert %(py6)sr/   )zQ%(py2)s
{%(py2)s = %(py0)s.zone_type
} == %(py6)s
{%(py6)s = %(py4)s.OPEN_WORLD
}Úz)z1%(py2)s
{%(py2)s = %(py0)s.min_level
} == %(py4)sÚmin_lvl)z3%(py2)s
{%(py2)s = %(py0)s.environment
} == %(py4)sÚenv)ÚzonesÚ
@pytest_arÚ_call_reprcompareÚ	_safereprÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚAssertionErrorÚ_format_explanationÚget_zoneÚ	zone_typer   Ú	SANCTUARYÚenvironmentr   ÚNORMALÚ	min_levelÚMIASMA_TOXICÚ	SANDSTORMÚVOID_CORRUPTIONÚFREEZING_CHILLÚSCORCHING_HEATÚ
OPEN_WORLD)Úselfr   Ú@py_assert0Ú@py_assert4Ú@py_assert2Ú@py_format6Ú@py_format8r*   Ú@py_assert1Ú@py_assert5Ú@py_assert3Ú@py_format7Ú@py_format9Úexpected_zonesrF   rJ   rK   Ú@py_format5rI   s                      r   Ú#test_all_canonical_zones_registeredz:TestMapAndZoneRegistry.test_all_canonical_zones_registered0   sð  € ð *Ð>¨[Ô->Ð>Ð)Ð->Ð>Ð>Ð>Ð>Õ>Ô>Ð>Ð>Ð>Ð>Ð)Ð->Ð>Ñ>Ô>Õ>Ô>Ð)Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>¨[Ñ>Ô>Ð>Õ>Ô>¨[Ñ>Ô>Ð>Ð>Õ>Ô>Ð->Ñ>Ô>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ø×(Ò(Ð)CÑDÔDˆ	ØÔ"Ð8¥hÔ&8Ð8Ð"Ð&8Ò8Ð8Ð8Ð8Õ8Ô8Ð8Ð8Ð8Ð8Ð"Ð&8Ð8Ñ8Ô8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8ˆyÑ8Ô8Ð8Õ8Ô8ˆyÑ8Ô8Ð8Ð8Õ8Ô8Ð"Ñ8Ô8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8¥hÑ8Ô8Ð8Õ8Ô8¥hÑ8Ô8Ð8Ð8Õ8Ô8Ð&8Ñ8Ô8Ð8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Õ8Õ8Ô8Ð8Ñ8Ô8Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8ØÔ$Ð>­Ô(>Ð>Ð$Ð(>Ò>Ð>Ð>Ð>Õ>Ô>Ð>Ð>Ð>Ð>Ð$Ð(>Ð>Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>ˆyÑ>Ô>Ð>Õ>Ô>ˆyÑ>Ô>Ð>Ð>Õ>Ô>Ð$Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>­Ñ>Ô>Ð>Õ>Ô>­Ñ>Ô>Ð>Ð>Õ>Ô>Ð(>Ñ>Ô>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>ØÔ"Ð' aÐ'Ð" aÒ'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'Ð" aÐ'Ñ'Ô'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'ˆyÑ'Ô'Ð'Õ'Ô'ˆyÑ'Ô'Ð'Ð'Õ'Ô'Ð"Ñ'Ô'Õ'Ô' aÑ'Ô'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'ð # A¥Ô'=Ð>Ø(¨!­_Ô-IÐJØ'¨­_Ô-FÐGØ% r­?Ô+JÐKØ'¨­_Ô-CÐDØ$ b­/Ô*HÐIØ'¨­_Ô-KÐLØ)¨2­Ô/MÐNØ.°µOÔ4SÐTð

ˆð &4ð 	(ñ 	(Ñ!ˆG�W˜cØ)Ô/Ð/�7Ð/Ð/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/�7Ð/Ð/Ñ/Ô/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/�7Ñ/Ô/Ð/Õ/Ô/�7Ñ/Ô/Ð/Ð/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/˜kÑ/Ô/Ð/Õ/Ô/˜kÑ/Ô/Ð/Ð/Õ/Ô/Ð/Ñ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ø×$Ò$ WÑ-Ô-ˆAØ”;Ð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�1Ñ5Ô5Ð5Õ5Ô5�1Ñ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Ø”;Ð)�; 'Ò)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)�; 'Ð)Ñ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)�1Ñ)Ô)Ð)Õ)Ô)�1Ñ)Ô)Ð)Ð)Õ)Ô)�;Ñ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô) 'Ñ)Ô)Ð)Õ)Ô) 'Ñ)Ô)Ð)Ð)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ø”=Ð'�= CÒ'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'�= CÐ'Ñ'Ô'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'�1Ñ'Ô'Ð'Õ'Ô'�1Ñ'Ô'Ð'Ð'Õ'Ô'�=Ñ'Ô'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô' CÑ'Ô'Ð'Õ'Ô' CÑ'Ô'Ð'Ð'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ñ'ð	(ð 	(r   c                 ó^  — d}|j         }||v }|sªt          j        d|fd||f¦  «        t          j        |¦  «        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}x}}| 	                    d¦  «        }|j
        }d	}||k    }	|	sªt          j        d
|	fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}	}|j        }d}||k    }	|	sªt          j        d
|	fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}	}|j        }d}||k    }	|	sªt          j        d
|	fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}	}d}|j         }||v }|sªt          j        d|fd||f¦  «        t          j        |¦  «        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}x}}| 	                    d¦  «        }
|
j
        }d}||k    }	|	sªt          j        d
|	fd||f¦  «        dt	          j        ¦   «         v st          j        |
¦  «        rt          j        |
¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}	}|
j        }d}||k    }	|	sªt          j        d
|	fd||f¦  «        dt	          j        ¦   «         v st          j        |
¦  «        rt          j        |
¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}	}d}|j         }||v }|sªt          j        d|fd||f¦  «        t          j        |¦  «        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}x}}dS )ur   Verifies canonical dungeon instance templates (Phong Ma Cá»• Tráº­n, BÃ­ Cáº£nh HÆ° KhÃ´ng, ThÃ­ Luyá»‡n Ä�iá»‡n).Úinst_phong_ma_co_tranr    )z9%(py1)s in %(py5)s
{%(py5)s = %(py3)s.dungeon_templates
}r   r"   r&   r'   Nr?   r(   ©z2%(py2)s
{%(py2)s = %(py0)s.max_layers
} == %(py5)sÚphong_mar4   r;   r3   Ú"quest_norm_05_khai_mo_van_gioi_cac)z9%(py2)s
{%(py2)s = %(py0)s.required_quest_id
} == %(py5)sÚinst_bi_canh_hu_khongéd   Úbi_canhrA   Úinst_van_gioi_thi_luyen)Údungeon_templatesrM   rN   rO   rP   rQ   rR   rS   rT   Úget_dungeon_templateÚ
max_layersrZ   Úrequired_quest_id)ra   r   rb   rc   rd   re   rf   rr   rg   ri   rv   s              r   Ú!test_dungeon_templates_registeredz8TestMapAndZoneRegistry.test_dungeon_templates_registeredM   sE  € à&ÐG¨+Ô*GÐGÐ&Ð*GÐGÐGÐGÐGÕGÔGÐGÐGÐGÐGÐ&Ð*GÐGÑGÔGÕGÔGÐ&ÑGÔGÐGÕGÔGÑGÔGÐGÐGÕGÔG¨+ÑGÔGÐGÕGÔG¨+ÑGÔGÐGÐGÕGÔGÐ*GÑGÔGÐGÐGÑGÐGÐGÐGÐGÐGÑGÐGÕGÕGÔGÐGÑGÔGÑGÔGÐGÐGÐGÐGÐGÐGÐGØ×3Ò3Ð4KÑLÔLˆØÔ"Ð( bÐ(Ð" bÒ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð" bÐ(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆxÑ(Ô(Ð(Õ(Ô(ˆxÑ(Ô(Ð(Ð(Õ(Ô(Ð"Ñ(Ô(Õ(Ô( bÑ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ØÔ!Ð' RÐ'Ð! RÒ'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'Ð! RÐ'Ñ'Ô'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'ˆxÑ'Ô'Ð'Õ'Ô'ˆxÑ'Ô'Ð'Ð'Õ'Ô'Ð!Ñ'Ô'Õ'Ô' RÑ'Ô'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'ØÔ)ÐQÐ-QÐQÐ)Ð-QÒQÐQÐQÐQÕQÔQÐQÐQÐQÐQÐ)Ð-QÐQÑQÔQÐQÕQÔQÑQÔQÐQÐQÕQÔQˆxÑQÔQÐQÕQÔQˆxÑQÔQÐQÐQÕQÔQÐ)ÑQÔQÕQÔQÐ-QÑQÔQÐQÐQÑQÐQÐQÐQÐQÐQÑQÐQÕQÕQÔQÐQÑQÔQÑQÔQÐQÐQÐQÐQÐQÐQÐQà&ÐG¨+Ô*GÐGÐ&Ð*GÐGÐGÐGÐGÕGÔGÐGÐGÐGÐGÐ&Ð*GÐGÑGÔGÕGÔGÐ&ÑGÔGÐGÕGÔGÑGÔGÐGÐGÕGÔG¨+ÑGÔGÐGÕGÔG¨+ÑGÔGÐGÐGÕGÔGÐ*GÑGÔGÐGÐGÑGÐGÐGÐGÐGÐGÑGÐGÕGÕGÔGÐGÑGÔGÑGÔGÐGÐGÐGÐGÐGÐGÐGØ×2Ò2Ð3JÑKÔKˆØÔ!Ð( SÐ(Ð! SÒ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð! SÐ(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆwÑ(Ô(Ð(Õ(Ô(ˆwÑ(Ô(Ð(Ð(Õ(Ô(Ð!Ñ(Ô(Õ(Ô( SÑ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ØÔ Ð& BÐ&Ð  BÒ&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&Ð  BÐ&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&ˆwÑ&Ô&Ð&Õ&Ô&ˆwÑ&Ô&Ð&Ð&Õ&Ô&Ð Ñ&Ô&Õ&Ô& BÑ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&à(ÐI¨KÔ,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¨KÑIÔIÐIÕIÔI¨KÑ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                 ó<  — g d¢}|D �]“\  }}}|j         }||v }|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t          j        |¦  «        dœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚d	x}}| 	                    |¦  «        }
|
j
        }||k    }|sÕt          j        d
|fd||f¦  «        dt          j        ¦   «         v st          j        |
¦  «        rt          j        |
¦  «        ndt          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚d	x}}|
j        }||k    }|sÕt          j        d
|fd||f¦  «        dt          j        ¦   «         v st          j        |
¦  «        rt          j        |
¦  «        ndt          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚d	x}}|
j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |
¦  «        rt          j        |
¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}}�Œ•d	S )zQVerifies canonical cryptic secret chamber templates matching the 4 hidden quests.))Úsecret_huyen_anh_to_sur:   Úloc_secret_phantom_shrine)Úsecret_tan_bi_than_tuongr8   Úaction_decipher_ancient_stele)Úsecret_ngu_hanh_tran_nhanr<   Úloc_five_elements_altar)Úsecret_tang_kiem_kiem_chungr5   Úaction_cleanse_rusted_blader    )z@%(py0)s in %(py4)s
{%(py4)s = %(py2)s.secret_chamber_templates
}Ú
chamber_idr   rG   rH   r/   Nr(   )z6%(py2)s
{%(py2)s = %(py0)s.parent_zone_id
} == %(py4)sÚtmplÚparent_zone)z;%(py2)s
{%(py2)s = %(py0)s.target_objective_id
} == %(py4)sÚ
target_keyr   )ú>)z3%(py2)s
{%(py2)s = %(py0)s.lifespan_sec
} > %(py5)sr4   r&   r'   )Úsecret_chamber_templatesrM   rN   rP   rQ   rR   rO   rS   rT   Úget_secret_chamber_templateÚparent_zone_idÚtarget_objective_idÚlifespan_sec)ra   r   Úexpected_chambersr†   rˆ   r‰   ri   rg   rm   rj   r‡   rc   re   rf   s                 r   Ú(test_secret_chamber_templates_registeredz?TestMapAndZoneRegistry.test_secret_chamber_templates_registered\   s4  € ð
ð 
ð 
Ðð 4Eð 	)ñ 	)Ñ/ˆJ˜ ZØ!,Ô!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Ø×:Ò:¸:ÑFÔFˆDØÔ&Ð5Ð&¨+Ò5Ð5Ð5Ð5Õ5Ô5Ð5Ð5Ð5Ð5Ð&¨+Ð5Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5�4Ñ5Ô5Ð5Õ5Ô5�4Ñ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ØÔ+Ð9Ð+¨zÒ9Ð9Ð9Ð9Õ9Ô9Ð9Ð9Ð9Ð9Ð+¨zÐ9Ñ9Ô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¨zÑ9Ô9Ð9Õ9Ô9¨zÑ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ØÔ$Ð( qÐ(Ð$ qÒ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð$ qÐ(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(�4Ñ(Ô(Ð(Õ(Ô(�4Ñ(Ô(Ð(Ð(Õ(Ô(Ð$Ñ(Ô(Õ(Ô( qÑ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ñ(ð	)ð 	)r   N)Ú__name__Ú
__module__Ú__qualname__r   rn   r|   r‘   r   r   r   r   r   /   sj   € € € € € ð(¸zð (ð (ð (ð (ð:J¸Zð Jð Jð Jð Jð)ÀJð )ð )ð )ð )ð )ð )r   r   c                   ó&   — e Zd Zdefd„Zdefd„ZdS )Ú TestPlayerNavigationAndWaypointsr   c                 óÆ  — d}|                      |d¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d	x}x}}|j
        }d
}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d	x}x}}|j        }d
}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d	x}x}}|                     |dd¦  «        \  }	}
|	sedddt	          j        ¦   «         v st          j        |	¦  «        rt          j        |	¦  «        ndiz  }t          t          j	        |¦  «        ¦  «        ‚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}}|                     |¦  «        }|j
        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d	x}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d	x}x}}|                     d¦  «        }|j        dz   }|                     ||d
¦  «        \  }	}
|	 }|sedddt	          j        ¦   «         v st          j        |	¦  «        rt          j        |	¦  «        ndiz  }t          t          j	        |¦  «        ¦  «        ‚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 )zBTests spawning in sanctuary and boundary-checked position updates.Úplayer_test_01r   r(   ©z/%(py2)s
{%(py2)s = %(py0)s.zone_id
} == %(py5)sÚlocr4   r&   r'   Ng        ©z)%(py2)s
{%(py2)s = %(py0)s.x
} == %(py5)s©z)%(py2)s
{%(py2)s = %(py0)s.y
} == %(py5)sç      Y@g     Àb@úassert %(py0)sr,   ÚsuccessÚ ©z%(py0)s == %(py3)sÚerr©r,   r$   úassert %(py5)sr%   Úcurrent_locg     @�@úassert not %(py0)su   VÆ°á»£t quÃ¡ ranh giá»›ir    ©z%(py1)s in %(py3)s©r#   r$   )Úspawn_playerrF   rM   rN   rP   rQ   rR   rO   rS   rT   ÚxÚyÚupdate_player_positionÚget_player_locationrU   Úbounds_width)ra   r   Ú	player_idrš   rg   rc   ri   re   rf   rŸ   r¢   Ú@py_format1rd   Ú@py_format4r¥   ÚzoneÚhuge_xÚ@py_format2rb   s                      r   Ú"test_player_spawn_and_bounds_checkzCTestPlayerNavigationAndWaypoints.test_player_spawn_and_bounds_checkn   s*  € à$ˆ	Ø×&Ò& yÐ2LÑMÔMˆØŒ{Ð8Ð8Ð8ˆ{Ð8Ò8Ð8Ð8Ð8Õ8Ô8Ð8Ð8Ð8Ð8ˆ{Ð8Ð8Ñ8Ô8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8ˆsÑ8Ô8Ð8Õ8Ô8ˆsÑ8Ô8Ð8Ð8Õ8Ô8ˆ{Ñ8Ô8Õ8Ô8Ð8Ñ8Ô8Ð8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Õ8Õ8Ô8Ð8Ñ8Ô8Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8ØŒuÐ˜Ðˆu˜Š|ÐÐÐÕÔÐÐÐÐˆu˜ÐÑÔÐÕÔÑÔÐÐÕÔˆsÑÔÐÕÔˆsÑÔÐÐÕÔˆuÑÔÕÔ˜ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØŒuÐ˜Ðˆu˜Š|ÐÐÐÕÔÐÐÐÐˆu˜ÐÑÔÐÕÔÑÔÐÐÕÔˆsÑÔÐÕÔˆsÑÔÐÐÕÔˆuÑÔÕÔ˜ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐð #×9Ò9¸)ÀUÈEÑRÔR‰ˆ�Øˆˆˆˆ�Œ‰Œˆˆ�Œˆw‰Œˆ�Œˆw‰Œˆˆˆ‰ˆ��Œˆ‰Œ‰ŒˆØÐˆs�bŠyÐÐÐÕÔÐÐÐÐˆs�bÐÑÔÐÕÔÑÔÐÐÕÔˆsÑÔÐÕÔˆsÑÔÐÐÕÔ�bÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØ!×5Ò5°iÑ@Ô@ˆØŒ}Ð% Ð%ˆ} Ò%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%ˆ} Ð%Ñ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%ˆ{Ñ%Ô%Ð%Õ%Ô%ˆ{Ñ%Ô%Ð%Ð%Õ%Ô%ˆ}Ñ%Ô%Õ%Ô% Ñ%Ô%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%ØŒ}Ð% Ð%ˆ} Ò%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%ˆ} Ð%Ñ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%ˆ{Ñ%Ô%Ð%Õ%Ô%ˆ{Ñ%Ô%Ð%Ð%Õ%Ô%ˆ}Ñ%Ô%Õ%Ô% Ñ%Ô%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%ð ×#Ò#Ð$>Ñ?Ô?ˆØÔ" VÑ+ˆØ"×9Ò9¸)ÀVÈSÑQÔQ‰ˆ�Øˆ{Ðˆ{ÐÐÐÐÕÔÑÔÐÐÕÔ�7ÑÔÐÕÔ�7ÑÔÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐØ)Ð0Ð)¨SÐ0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0Ð)¨SÐ0Ñ0Ô0Õ0Ô0Ð)Ñ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0¨SÑ0Ô0Ð0Õ0Ô0¨SÑ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}||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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}|j        }	 |	|¦  «        }
||
v }|sût          j        d|fd||
f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |	¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |
¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d
x}x}x}	}
|                     |d¦  «        \  }}|sedddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndiz  }t          t          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        |	¦  «        dœz  }dd |iz  }t          t          j	        |¦  «        ¦  «        ‚d
x}x}}	|                     |d!¦  «        \  }}| }|sed"ddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndiz  }t          t          j	        |¦  «        ¦  «        ‚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 )%zITests discovering waypoints upon proximity and authoritative fast travel.Úplayer_test_02r5   Úwp_sanctuary_centralr    r§   Úunlockedr¨   r¤   r%   NÚwp_tang_kiem_cliff©únot in)z%(py1)s not in %(py3)sg     àb@g     Ðb@Ú
discovered)z\%(py1)s in %(py8)s
{%(py8)s = %(py5)s
{%(py5)s = %(py3)s.get_unlocked_waypoints
}(%(py6)s)
}r   r¯   )r#   r$   r%   r/   r1   úassert %(py10)sÚpy10rž   r,   rŸ   r   r(   r™   r¥   r4   r&   r'   Úwp_celestial_peakr¦   u   ChÆ°a kÃ­ch hoáº¡tÚmsg)r©   Úget_unlocked_waypointsrM   rN   rO   rP   rQ   rR   rS   rT   Úcheck_waypoint_proximityÚteleport_via_waypointr­   rF   )ra   r   r¯   r¹   rb   rd   r±   re   r½   rc   Ú@py_assert7rk   Ú@py_format11rŸ   rÁ   r°   r¥   rg   ri   rf   r´   s                        r   Ú)test_waypoint_discovery_and_teleportationzJTestPlayerNavigationAndWaypoints.test_waypoint_discovery_and_teleportation…   sœ  € à$ˆ	Ø× Ò  Ð,AÑBÔBÐBð ×5Ò5°iÑ@Ô@ˆØ%Ð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Ô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Ð1Ð1Ð1ð $Ð3Ð#¨8Ð3Ð3Ð3Ð3Õ3Ô3Ð3Ð3Ð3Ð3Ð#¨8Ð3Ñ3Ô3Õ3Ô3Ð#Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3¨8Ñ3Ô3Ð3Õ3Ô3¨8Ñ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ð !×9Ò9¸)ÀUÈEÑRÔRˆ
Ø#Ð1Ð# zÐ1Ð1Ð1Ð1Õ1Ô1Ð1Ð1Ð1Ð1Ð# zÐ1Ñ1Ô1Õ1Ô1Ð#Ñ1Ô1Ð1Õ1Ô1Ñ1Ô1Ð1Ð1Õ1Ô1 zÑ1Ô1Ð1Õ1Ô1 zÑ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Ø#ÐT {Ô'IÐTÐ'IÐ'IÈ)Ñ'TÔ'TÐTÐ#Ð'TÐTÐTÐTÐTÕTÔTÐTÐTÐTÐTÐ#Ð'TÐTÑTÔTÕTÔTÐ#ÑTÔTÐTÕTÔTÑTÔTÐTÐTÕTÔT {ÑTÔTÐTÕTÔT {ÑTÔTÐTÐTÕTÔTÐ'IÑTÔTÐTÕTÔTÑTÔTÐTÐTÕTÔTÈ)ÑTÔTÐTÕTÔTÈ)ÑTÔTÐTÐTÕTÔTÐ'TÑTÔTÐTÐTÑTÐTÐTÐTÐTÐTÑTÐTÕTÕTÔTÐTÑTÔTÑTÔTÐTÐTÐTÐTÐTÐTÐTÐTÐTð #×8Ò8¸ÐDZÑ[Ô[‰ˆ�Øˆˆˆˆ�Œ‰Œˆˆ�Œˆw‰Œˆ�Œˆw‰Œˆˆˆ‰ˆ��Œˆ‰Œ‰ŒˆØ!×5Ò5°iÑ@Ô@ˆØÔ"Ð@Ð&@Ð@Ð"Ð&@Ò@Ð@Ð@Ð@Õ@Ô@Ð@Ð@Ð@Ð@Ð"Ð&@Ð@Ñ@Ô@Ð@Õ@Ô@Ñ@Ô@Ð@Ð@Õ@Ô@ˆ{Ñ@Ô@Ð@Õ@Ô@ˆ{Ñ@Ô@Ð@Ð@Õ@Ô@Ð"Ñ@Ô@Õ@Ô@Ð&@Ñ@Ô@Ð@Ð@Ñ@Ð@Ð@Ð@Ð@Ð@Ñ@Ð@Õ@Õ@Ô@Ð@Ñ@Ô@Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@Ð@ð #×8Ò8¸ÐDWÑXÔX‰ˆ�Øˆ{Ðˆ{ÐÐÐÐÕÔÑÔÐÐÕÔ�7ÑÔÐÕÔ�7ÑÔÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐØ#Ð*Ð# sÐ*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð# sÐ*Ñ*Ô*Õ*Ô*Ð#Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô* sÑ*Ô*Ð*Õ*Ô* sÑ*Ô*Ð*Ð*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*r   N)r’   r“   r”   r   rµ   rÇ   r   r   r   r–   r–   m   sJ   € € € € € ð1¸jð 1ð 1ð 1ð 1ð.+ÀZð +ð +ð +ð +ð +ð +r   r–   c                   ó&   — e Zd Zdefd„Zdefd„ZdS )Ú!TestPortalTraversalAndLevelGatingr   c           	      ó  — d}|                      |d¦  «         d}|                     ||d¬¦  «        \  }}}|sedddt          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        ndiz  }t          t	          j        |¦  «        ¦  «        ‚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}	}|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        |	¦  «        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}x}}dS )zCTests crossing a zone portal when level requirements are satisfied.Úplayer_heror   Úportal_sanctuary_to_tang_kiemé   ©Úplayer_levelrž   r,   rŸ   r5   r(   r¡   Únew_zoner£   r¤   r%   N)zw%(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py2)s
{%(py2)s = %(py0)s.get_player_location
}(%(py3)s)
}.zone_id
} == %(py10)sr   r¯   )r,   r-   r$   r%   r'   r¿   zassert %(py12)sÚpy12)r©   Útraverse_portalrP   rQ   rM   rR   rO   rS   rT   rN   r­   rF   )ra   r   r¯   Ú	portal_idrŸ   rÐ   rÁ   r°   rd   rg   r±   re   rc   Ú@py_assert6Ú@py_assert9Ú@py_assert8rÆ   Ú@py_format13s                     r   Útest_portal_traversal_successz?TestPortalTraversalAndLevelGating.test_portal_traversal_success£   s¾  € à!ˆ	Ø× Ò  Ð,FÑGÔGÐGð 4ˆ	Ø!,×!<Ò!<¸YÈ	Ð`aÐ!<Ñ!bÔ!bÑˆ�˜3Øˆˆˆˆ�Œ‰Œˆˆ�Œˆw‰Œˆ�Œˆw‰Œˆˆˆ‰ˆ��Œˆ‰Œ‰ŒˆØ0Ð0ˆxÐ0Ò0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0ˆxÐ0Ð0Ñ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0ˆxÑ0Ô0Ð0Õ0Ô0ˆxÑ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ØÔ.ÐZÐ.Ð.¨yÑ9Ô9ÐZÐ9ÔAÐZÐEZÐZÐAÐEZÒZÐZÐZÑZÕZÔZÐZÐZÐZÐZÐAÐEZÐ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ÑZÔZÐZÐZÕZÔZ¨yÑZÔZÐZÕZÔZ¨yÑZÔZÐZÐZÕZÔZÐ9ÑZÔZÕZÔZÐAÑZÔZÕZÔZÐEZÑ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ÐZÐZÐZÐZÐZr   c                 óÚ  — d}|                      |d¦  «         d}|                     ||d¬¦  «        \  }}}| }|sedddt          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        ndiz  }t          t	          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  }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 )zJTests that a low-level player cannot traverse into high-tier danger zones.Úplayer_newbierB   Úportal_lava_to_celestialr9   rÎ   r¦   r,   rŸ   Nr    r(   r¡   rÐ   r£   r¤   r%   õ   ChÆ°a Ä‘áº¡t cáº¥p Ä‘á»™r    r§   rÁ   r¨   )
r©   rÒ   rP   rQ   rM   rR   rO   rS   rT   rN   )ra   r   r¯   rÓ   rŸ   rÐ   rÁ   rg   r´   rd   r±   re   rb   s                r   Ú*test_portal_traversal_level_gate_rejectionzLTestPortalTraversalAndLevelGating.test_portal_traversal_level_gate_rejection¯   sJ  € à#ˆ	Ø× Ò  Ð,HÑIÔIÐIð /ˆ	Ø!,×!<Ò!<¸YÈ	Ð`bÐ!<Ñ!cÔ!cÑˆ�˜3Øˆ{Ðˆ{ÐÐÐÐÕÔÑÔÐÐÕÔ�7ÑÔÐÕÔ�7ÑÔÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐØÐˆx˜2Š~ÐÐÐÕÔÐÐÐÐˆx˜2ÐÑÔÐÕÔÑÔÐÐÕÔˆxÑÔÐÕÔˆxÑÔÐÐÕÔ˜2ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØ)Ð0Ð)¨SÐ0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0Ð)¨SÐ0Ñ0Ô0Õ0Ô0Ð)Ñ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0¨SÑ0Ô0Ð0Õ0Ô0¨SÑ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   N)r’   r“   r”   r   rØ   rÝ   r   r   r   rÉ   rÉ   ¢   sO   € € € € € ð
[¸ð 
[ð 
[ð 
[ð 
[ð
1Àjð 
1ð 
1ð 
1ð 
1ð 
1ð 
1r   rÉ   c                   ó&   — e Zd Zdefd„Zdefd„ZdS )ÚTestDungeonInstanceLifecycler   c                 ó
  — d}ddg}|                      d||ddh¬¦  «        \  }}}|sedd	d
t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd
iz  }t          t          j        |¦  «        ¦  «        ‚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}	}|j	        }	d}|	|k    }|sªt          j        d|fd|	|f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |	¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}	x}}|j
        }	d}|	|k    }|sªt          j        d|fd|	|f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |	¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}	x}}|j        }	d}|	|k    }|sªt          j        d|fd|	|f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |	¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}	x}}|j        }t          |¦  «        }d}||k    }|�st          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd |iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}x}}|j        }|j        D �]}|                     |¦  «        }|j        }	|j        }|	|k    }|sèt          j        d|fd!|	|f¦  «        d"t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd"t          j        |	¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        d#œz  }d$d%|iz  }t          t          j        |¦  «        ¦  «        ‚dx}	x}}|j        }	|	|k    }|sÕt          j        d|fd&|	|f¦  «        d"t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd"t          j        |	¦  «        d't          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd'd(œz  }d)d*|iz  }t          t          j        |¦  «        ¦  «        ‚dx}	}�Œ|                     |¦  «        \  }}d+}||k    }	|	s—t          j        d|	fd,||f¦  «        d-t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd-t          j        |¦  «        dœz  }
dd|
iz  }t          t          j        |¦  «        ¦  «        ‚dx}	}| }	|	sed.d	d/t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd/iz  }t          t          j        |¦  «        ¦  «        ‚d}	d|_	        |                     |¦  «        \  }}|sedd	d/t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd/iz  }t          t          j        |¦  «        ¦  «        ‚|j        }	|	sxd0dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |	¦  «        d1œz  }t          t          j        |¦  «        ¦  «        ‚d}	|                     |¦  «         |j        }||v}	|	sÕt          j        d2|	fd3||f¦  «        d't          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd'd4t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd4t          j        |¦  «        d(œz  }d)d*|iz  }t          t          j        |¦  «        ¦  «        ‚dx}	}|j        D �]˜}|                     |¦  «        }|j        }	d5}|	|k    }|sªt          j        d|fd6|	|f¦  «        d"t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd"t          j        |	¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}	x}}|j        }	d}|	|u }|sªt          j        d7|fd8|	|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 )9uc   Tests full lifecycle of Phong Ma Cá»• Tráº­n (Creation, layer advances, party members, completion).Úplayer_leaderÚplayer_member_1Úplayer_member_2rp   é#   rs   ©Útemplate_idÚ	leader_idÚmembersÚleader_levelÚcompleted_questsrž   r,   rŸ   N©úis not©z%(py0)s is not %(py3)sÚsessionr£   r¤   r%   r2   r(   )z5%(py2)s
{%(py2)s = %(py0)s.current_layer
} == %(py5)sr4   r&   r'   r?   rq   é   )z7%(py2)s
{%(py2)s = %(py0)s.lives_remaining
} == %(py5)s)zQ%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.all_players
})
} == %(py8)sÚlen)r,   r#   r$   r%   r1   r¾   r¿   )zU%(py2)s
{%(py2)s = %(py0)s.zone_id
} == %(py6)s
{%(py6)s = %(py4)s.instance_zone_id
}rš   r+   r0   r1   )z3%(py2)s
{%(py2)s = %(py0)s.instance_id
} == %(py4)sÚinstance_idrG   rH   r/   é   r¡   Úcleared_layerr¦   Úis_donez0assert %(py2)s
{%(py2)s = %(py0)s.is_completed
}©r,   r-   r»   )z<%(py0)s not in %(py4)s
{%(py4)s = %(py2)s.active_instances
}r   r   r™   ©Úis©z3%(py2)s
{%(py2)s = %(py0)s.instance_id
} is %(py5)s)Úcreate_dungeon_instancerP   rQ   rM   rR   rO   rS   rT   rN   Úcurrent_layerrz   Úlives_remainingÚall_playersrð   rñ   r­   rF   Úinstance_zone_idÚadvance_instance_layerÚis_completedÚclose_instanceÚactive_instances)ra   r   rç   rè   rŸ   rî   rÁ   r°   rd   rg   r±   re   rc   ri   rf   rÅ   rÔ   rk   rÆ   rñ   Úprš   rh   rj   rm   ró   rô   r´   Ú@py_format3s                                r   Ú)test_create_and_progress_dungeon_instancezFTestDungeonInstanceLifecycle.test_create_and_progress_dungeon_instance½   sÑ  € à#ˆ	Ø$Ð&7Ð8ˆð !,× CÒ CØ/ØØØØBÐCð !Dñ !
ô !
Ñˆ�˜#ð ˆˆˆˆ�Œ‰Œˆˆ�Œˆw‰Œˆ�Œˆw‰Œˆˆˆ‰ˆ��Œˆ‰Œ‰ŒˆØ"Ð"ˆw˜dÐ"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"ˆw˜dÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆwÑ"Ô"Ð"Õ"Ô"ˆwÑ"Ô"Ð"Ð"Õ"Ô"˜dÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"ØÔ$Ð)¨Ð)Ð$¨Ò)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)Ð$¨Ð)Ñ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)ˆwÑ)Ô)Ð)Õ)Ô)ˆwÑ)Ô)Ð)Ð)Õ)Ô)Ð$Ñ)Ô)Õ)Ô)¨Ñ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ØÔ!Ð' RÐ'Ð! RÒ'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'Ð! RÐ'Ñ'Ô'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'ˆwÑ'Ô'Ð'Õ'Ô'ˆwÑ'Ô'Ð'Ð'Õ'Ô'Ð!Ñ'Ô'Õ'Ô' RÑ'Ô'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'ØÔ&Ð+¨!Ð+Ð&¨!Ò+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð&¨!Ð+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ˆwÑ+Ô+Ð+Õ+Ô+ˆwÑ+Ô+Ð+Ð+Õ+Ô+Ð&Ñ+Ô+Õ+Ô+¨!Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ØÔ&Ð,�sÐ&Ñ'Ô'Ð,¨1Ð,Ð'¨1Ò,Ð,Ð,Ñ,Õ,Ô,Ð,Ð,Ð,Ð,Ð'¨1Ð,Ñ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,�sÑ,Ô,Ð,Õ,Ô,�sÑ,Ô,Ð,Ð,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,�7Ñ,Ô,Ð,Õ,Ô,�7Ñ,Ô,Ð,Ð,Õ,Ô,Ð&Ñ,Ô,Õ,Ô,Ð'Ñ,Ô,Õ,Ô,¨1Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,àÔ)ˆð Ô$ð 	2ñ 	2ˆAØ×1Ò1°!Ñ4Ô4ˆCØ”;Ð: 'Ô":Ð:�;Ð":Ò:Ð:Ð:Ð:Õ:Ô:Ð:Ð:Ð:Ð:�;Ð":Ð:Ñ:Ô:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:�3Ñ:Ô:Ð:Õ:Ô:�3Ñ:Ô:Ð:Ð:Õ:Ô:�;Ñ:Ô:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô: 'Ñ:Ô:Ð:Õ:Ô: 'Ñ:Ô:Ð:Ð:Õ:Ô:Ð":Ñ:Ô:Ð:Ð:Ñ:Ð:Ð:Ð:Ð:Ð:Ñ:Ð:Õ:Õ:Ô:Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ø”?Ð1�? kÒ1Ð1Ð1Ð1Õ1Ô1Ð1Ð1Ð1Ð1�? kÐ1Ñ1Ô1Ð1Õ1Ô1Ñ1Ô1Ð1Ð1Õ1Ô1�3Ñ1Ô1Ð1Õ1Ô1�3Ñ1Ô1Ð1Ð1Õ1Ô1�?Ñ1Ô1Ð1Õ1Ô1Ñ1Ô1Ð1Ð1Õ1Ô1 kÑ1Ô1Ð1Õ1Ô1 kÑ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ð "-×!CÒ!CÀKÑ!PÔ!PÑˆ�wØ !Ð!ˆ} Ò!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆ} Ð!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!ˆ}Ñ!Ô!Ð!Õ!Ô!ˆ}Ñ!Ô!Ð!Ð!Õ!Ô! Ñ!Ô!Ð!Ð!Ñ!Ð!Ð!Ð!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!Ð!Ð!Øˆ{Ðˆ{ÐÐÐÐÕÔÑÔÐÐÕÔ�7ÑÔÐÕÔ�7ÑÔÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐð !#ˆÔØ!,×!CÒ!CÀKÑ!PÔ!PÑˆ�wØˆˆˆˆ�Œ‰Œˆˆ�Œˆw‰Œˆ�Œˆw‰Œˆˆˆ‰ˆ��Œˆ‰Œ‰ŒˆØÔ#Ð#Ð#Ð#Ð#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#ˆwÑ#Ô#Ð#Õ#Ô#ˆwÑ#Ô#Ð#Ð#Õ#Ô#Ð#Ñ#Ô#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#ð 	×"Ò" ;Ñ/Ô/Ð/Ø"-Ô">Ð>ˆ{Ð">Ð>Ð>Ð>Ð>Õ>Ô>Ð>Ð>Ð>Ð>ˆ{Ð">Ð>Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>ˆ{Ñ>Ô>Ð>Õ>Ô>ˆ{Ñ>Ô>Ð>Ð>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô> +Ñ>Ô>Ð>Õ>Ô> +Ñ>Ô>Ð>Ð>Õ>Ô>Ð">Ñ>Ô>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>ØÔ$ð 	+ñ 	+ˆAØ×1Ò1°!Ñ4Ô4ˆCØ”;Ð<Ð"<Ð<�;Ð"<Ò<Ð<Ð<Ð<Õ<Ô<Ð<Ð<Ð<Ð<�;Ð"<Ð<Ñ<Ô<Ð<Õ<Ô<Ñ<Ô<Ð<Ð<Õ<Ô<�3Ñ<Ô<Ð<Õ<Ô<�3Ñ<Ô<Ð<Ð<Õ<Ô<�;Ñ<Ô<Õ<Ô<Ð"<Ñ<Ô<Ð<Ð<Ñ<Ð<Ð<Ð<Ð<Ð<Ñ<Ð<Õ<Õ<Ô<Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ø”?Ð* dÐ*�? dÐ*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*�? dÐ*Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*�3Ñ*Ô*Ð*Õ*Ô*�3Ñ*Ô*Ð*Ð*Õ*Ô*�?Ñ*Ô*Õ*Ô* dÑ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ñ*ð	+ð 	+r   c                 óÂ  — d}|                      d|g dt          ¦   «         ¬¦  «        \  }}}| }|sedddt          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        ndiz  }t          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 )zLTests instance creation failure when level or quest prerequisite is missing.Úplayer_underleveledrp   é   rå   r¦   r,   rŸ   Nrö   )z%(py0)s is %(py3)srî   r£   r¤   r%   rÜ   r    r§   rÁ   r¨   )
rù   ÚsetrP   rQ   rM   rR   rO   rS   rT   rN   )ra   r   rç   rŸ   rî   rÁ   rg   r´   rd   r±   re   rb   s               r   Ú1test_dungeon_entry_rejection_without_prerequisitezNTestDungeonInstanceLifecycle.test_dungeon_entry_rejection_without_prerequisiteì   sA  € à)ˆ	Ø +× CÒ CØ/ØØØÝ ™UœUð !Dñ !
ô !
Ñˆ�˜#ð ˆ{Ðˆ{ÐÐÐÐÕÔÑÔÐÐÕÔ�7ÑÔÐÕÔ�7ÑÔÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐØÐˆw˜$ˆÐÐÐÕÔÐÐÐÐˆw˜$ÐÑÔÐÕÔÑÔÐÐÕÔˆwÑÔÐÕÔˆwÑÔÐÐÕÔ˜$ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØ)Ð0Ð)¨SÐ0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0Ð)¨SÐ0Ñ0Ô0Õ0Ô0Ð)Ñ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0¨SÑ0Ô0Ð0Õ0Ô0¨SÑ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   N)r’   r“   r”   r   r  r	  r   r   r   rß   rß   ¼   sK   € € € € € ð-+ÀZð -+ð -+ð -+ð -+ð^1ÈZð 1ð 1ð 1ð 1ð 1ð 1r   rß   c                   ó   — e Zd Zdefd„ZdS )ÚTestSecretChamberMechanicsr   c                 óÊ  — d}|                      |d¦  «         |                     d|dddd¬¦  «        \  }}}|sedd	d
t          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        nd
iz  }t          t	          j        |¦  «        ¦  «        ‚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}}|j
        }d}||k    }|sªt	          j	        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        ndt	          j        |¦  «        t	          j        |¦  «        dœz  }
dd|
iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}|j        }|sxddt          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        ndt	          j        |¦  «        dœz  }t          t	          j        |¦  «        ¦  «        ‚d}|                     ||j        ¦  «        \  }}|sedd	dt          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        ndiz  }t          t	          j        |¦  «        ¦  «        ‚|                     |¦  «        }|j        }|j        }||k    }|sèt	          j	        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        ndt	          j        |¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        ndt	          j        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}|j        }|j        }||k    }|sèt	          j	        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        ndt	          j        |¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        ndt	          j        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}|                     ||j        ¦  «        \  }}|sedd	d t          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        nd iz  }t          t	          j        |¦  «        ¦  «        ‚|j        }|sxd!dt          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        ndt	          j        |¦  «        dœz  }t          t	          j        |¦  «        ¦  «        ‚d}|                     |j        ¦  «         |j        }|j        }||v}|sèt	          j	        d"|fd#||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        ndt	          j        |¦  «        d$t          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        nd$t	          j        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}|                     |¦  «        }|j        }d}||k    }|sªt	          j	        d|fd%||f¦  «        d&t          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        nd&t	          j        |¦  «        t	          j        |¦  «        dœz  }
dd|
iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}|j        }d}||u }|sªt	          j	        d'|fd(||f¦  «        d&t          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        nd&t	          j        |¦  «        t	          j        |¦  «        dœz  }
dd|
iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt	          j	        d|fd)||f¦  «        d&t          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        nd&t	          j        |¦  «        t	          j        |¦  «        dœz  }
dd|
iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt	          j	        d|fd*||f¦  «        d&t          j        ¦   «         v st	          j        |¦  «        rt	          j        |¦  «        nd&t	          j        |¦  «        t	          j        |¦  «        dœz  }
dd|
iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}dS )+zMTests spawning a secret chamber portal, entering it, and timer auto-collapse.Úplayer_fatedr:   r~   g      ^@g     @U@iX  )ræ   r¯   r�   Úportal_xÚportal_yr�   rž   r,   rŸ   Nrë   rí   Úchamberr£   r¤   r%   r(   )z6%(py2)s
{%(py2)s = %(py0)s.portal_zone_id
} == %(py5)sr4   r&   r'   z-assert %(py2)s
{%(py2)s = %(py0)s.is_active
}rõ   Úenter_ok)zT%(py2)s
{%(py2)s = %(py0)s.zone_id
} == %(py6)s
{%(py6)s = %(py4)s.chamber_zone_id
}rš   r+   r0   r1   )zS%(py2)s
{%(py2)s = %(py0)s.instance_id
} == %(py6)s
{%(py6)s = %(py4)s.chamber_id
}Ú
cleared_okz.assert %(py2)s
{%(py2)s = %(py0)s.is_cleared
}r»   )zb%(py2)s
{%(py2)s = %(py0)s.chamber_id
} not in %(py6)s
{%(py6)s = %(py4)s.active_secret_chambers
}r   r™   Ú
return_locrö   rø   r›   rœ   )r©   Úspawn_secret_chamberrP   rQ   rM   rR   rO   rS   rT   rN   Úportal_zone_idÚ	is_activeÚenter_secret_chamberr†   r­   rF   Úchamber_zone_idrñ   Úcomplete_secret_chamberÚ
is_clearedÚcollapse_secret_chamberÚactive_secret_chambersrª   r«   )ra   r   r¯   rŸ   r  rÁ   r°   rd   rg   r±   re   rc   ri   rf   r  r  Ú	enter_msgrš   rh   rj   rk   r  Ú	clear_msgr  s                           r   Ú1test_secret_chamber_spawn_enter_and_auto_collapsezLTestSecretChamberMechanics.test_secret_chamber_spawn_enter_and_auto_collapseü   si  € à"ˆ	Ø× Ò  Ð,DÑEÔEÐEð !,× @Ò @Ø0ØØ3ØØØð !Añ !
ô !
Ñˆ�˜#ð ˆˆˆˆ�Œ‰Œˆˆ�Œˆw‰Œˆ�Œˆw‰Œˆˆˆ‰ˆ��Œˆ‰Œ‰ŒˆØ"Ð"ˆw˜dÐ"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"ˆw˜dÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆwÑ"Ô"Ð"Õ"Ô"ˆwÑ"Ô"Ð"Ð"Õ"Ô"˜dÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"ØÔ%Ð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ˆwÑAÔAÐAÕAÔAˆwÑ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ØÔ Ð Ð Ð Ð Ð Õ Ô Ñ Ô Ð Ð Õ Ô ˆwÑ Ô Ð Õ Ô ˆwÑ Ô Ð Ð Õ Ô Ð Ñ Ô Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð ð *×>Ò>¸yÈ'ÔJ\Ñ]Ô]Ñˆ�)Øˆˆˆˆ�Œ‰Œˆˆ�Œˆx‰Œˆ�Œˆx‰Œˆˆˆ‰ˆ��Œˆ‰Œ‰ŒˆØ×-Ò-¨iÑ8Ô8ˆØŒ{Ð5˜gÔ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ˆsÑ5Ô5Ð5Õ5Ô5ˆsÑ5Ô5Ð5Ð5Õ5Ô5ˆ{Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5˜gÑ5Ô5Ð5Õ5Ô5˜gÑ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ØŒÐ4 'Ô"4Ð4ˆÐ"4Ò4Ð4Ð4Ð4Õ4Ô4Ð4Ð4Ð4Ð4ˆÐ"4Ð4Ñ4Ô4Ð4Õ4Ô4Ñ4Ô4Ð4Ð4Õ4Ô4ˆsÑ4Ô4Ð4Õ4Ô4ˆsÑ4Ô4Ð4Ð4Õ4Ô4ˆÑ4Ô4Ð4Õ4Ô4Ñ4Ô4Ð4Ð4Õ4Ô4 'Ñ4Ô4Ð4Õ4Ô4 'Ñ4Ô4Ð4Ð4Õ4Ô4Ð"4Ñ4Ô4Ð4Ð4Ñ4Ð4Ð4Ð4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4ð !,× CÒ CÀIÈwÔOaÑ bÔ bÑˆ
�IØÐÐÐÐÕÔÑÔÐÐÕÔˆzÑÔÐÕÔˆzÑÔÐÐÐÑÐÕÕÔÐÑÔÑÔÐØÔ!Ð!Ð!Ð!Ð!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!ˆwÑ!Ô!Ð!Õ!Ô!ˆwÑ!Ô!Ð!Ð!Õ!Ô!Ð!Ñ!Ô!Ð!Ð!Ñ!Ð!Õ!Õ!Ô!Ð!Ñ!Ô!Ñ!Ô!Ð!Ð!Ð!ð 	×+Ò+¨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ˆwÑKÔKÐKÕKÔKˆwÑ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ÐKÐKÐKÐKÐKÑKÐKÕKÕKÔKÐKÑKÔKÑKÔKÐKÐKÐKÐKÐKÐKÐKð !×4Ò4°YÑ?Ô?ˆ
ØÔ!Ð=Ð%=Ð=Ð!Ð%=Ò=Ð=Ð=Ð=Õ=Ô=Ð=Ð=Ð=Ð=Ð!Ð%=Ð=Ñ=Ô=Ð=Õ=Ô=Ñ=Ô=Ð=Ð=Õ=Ô=ˆzÑ=Ô=Ð=Õ=Ô=ˆzÑ=Ô=Ð=Ð=Õ=Ô=Ð!Ñ=Ô=Õ=Ô=Ð%=Ñ=Ô=Ð=Ð=Ñ=Ð=Ð=Ð=Ð=Ð=Ñ=Ð=Õ=Õ=Ô=Ð=Ñ=Ô=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=ØÔ%Ð-¨Ð-Ð%¨Ð-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-Ð%¨Ð-Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô-ˆzÑ-Ô-Ð-Õ-Ô-ˆzÑ-Ô-Ð-Ð-Õ-Ô-Ð%Ñ-Ô-Õ-Ô-¨Ñ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-ØŒ|Ð$˜uÐ$ˆ|˜uÒ$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$ˆ|˜uÐ$Ñ$Ô$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$ˆzÑ$Ô$Ð$Õ$Ô$ˆzÑ$Ô$Ð$Ð$Õ$Ô$ˆ|Ñ$Ô$Õ$Ô$˜uÑ$Ô$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$ØŒ|Ð#˜tÐ#ˆ|˜tÒ#Ð#Ð#Ð#Õ#Ô#Ð#Ð#Ð#Ð#ˆ|˜tÐ#Ñ#Ô#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#ˆzÑ#Ô#Ð#Õ#Ô#ˆzÑ#Ô#Ð#Ð#Õ#Ô#ˆ|Ñ#Ô#Õ#Ô#˜tÑ#Ô#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#Ð#Ð#r   N)r’   r“   r”   r   r  r   r   r   r  r  û   s/   € € € € € ð($ÈZð ($ð ($ð ($ð ($ð ($ð ($r   r  c                   ó   — e Zd Zdedefd„ZdS )Ú'TestQuestAndCombatClosedLoopIntegrationr   r   c                 ó¨  — d}|                      |d¬¦  «         |                     |t          j        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|ddd¬¦  «        \  }	}
}|	sedddt          j        ¦   «         v st	          j        |	¦  «        rt	          j	        |	¦  «        ndiz  }t          t	          j        |¦  «        ¦  «        ‚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}}|                     ||
j        ¦  «         |                     |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¦  «        }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}}|j        }t$          j        }||k    }|sòt	          j        d	|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        d t          j        ¦   «         v st	          j        t$          ¦  «        rt	          j	        t$          ¦  «        nd t	          j	        |¦  «        d!œz  }d"d#|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}|                     |d¦  «        \  }}}|seddd$t          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nd$iz  }t          t	          j        |¦  «        ¦  «        ‚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}}|j        }d&}||k    }|sªt	          j        d	|fd'||f¦  «        d%t          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nd%t	          j	        |¦  «        t	          j	        |¦  «        d(œz  }d)d*|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}|j        }d+}||k    }|sªt	          j        d	|fd,||f¦  «        d%t          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nd%t	          j	        |¦  «        t	          j	        |¦  «        d(œz  }d)d*|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}dS )-zRTests that moving to a secret location or zone updates quest discovery objectives.Úplayer_integratorr  rÎ   r:   g{®Gáz´?)r²   Ú
hp_percent)r¯   Útrigger_typeÚcontextÚquest_hidden_01_huyen_anh_to_sur(   r¡   Ú	triggeredr£   r¤   r%   Nr~   r�   )ræ   r¯   r�   r  r  rž   r,   Úokrë   rí   r  r   r    r§   rê   r¨   Ústate)zM%(py2)s
{%(py2)s = %(py0)s.status
} == %(py6)s
{%(py6)s = %(py4)s.COMPLETED
}r   r+   r0   r1   Úclaim_okÚrewardu   Huyá»…n áº¢nh VÃ´ Song)z-%(py2)s
{%(py2)s = %(py0)s.title
} == %(py5)sr4   r&   r'   rÍ   )z7%(py2)s
{%(py2)s = %(py0)s.meridian_points
} == %(py5)s)Úinitialize_playerÚtrigger_hidden_questr   ÚEVASION_NEAR_DEATHrM   rN   rP   rQ   rR   rO   rS   rT   r  r  r†   Úrecord_discoveryÚget_player_questÚstatusr   Ú	COMPLETEDÚclaim_quest_rewardÚtitleÚmeridian_points)ra   r   r   r¯   r(  rd   rg   r±   re   r)  r  Ú_r°   rê   rb   r*  rh   ri   rj   rk   r+  r,  rc   rf   s                           r   Ú(test_zone_discovery_updates_quest_enginezPTestQuestAndCombatClosedLoopIntegration.test_zone_discovery_updates_quest_engine(  s=  € ð (ˆ	Ø×&Ò& y¸rÐ&ÑBÔBÐBð !×5Ò5ØÝ*Ô=Ø5ÀTÐJÐJð 6ñ 
ô 
ˆ	ð
 >Ð=ˆyÐ=Ò=Ð=Ð=Ð=Õ=Ô=Ð=Ð=Ð=Ð=ˆyÐ=Ð=Ñ=Ô=Ð=Õ=Ô=Ñ=Ô=Ð=Ð=Õ=Ô=ˆyÑ=Ô=Ð=Õ=Ô=ˆyÑ=Ô=Ð=Ð=Õ=Ô=Ð=Ñ=Ô=Ð=Ð=Ñ=Ð=Ð=Ð=Ð=Ð=Ñ=Ð=Õ=Õ=Ô=Ð=Ñ=Ô=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=ð %×9Ò9Ø0ØØ3ØØð :ñ 
ô 
‰ˆˆG�Qð ˆ	ˆ	ˆ	ˆ	�	Œ	‰	Œ	ˆ	ˆ	�	Œ	ˆr‰	Œ	ˆ	�	Œ	ˆr‰	Œ	ˆ	ˆ	ˆ	‰	ˆ	�	�	Œ	ˆ	‰	Œ	‰	Œ	ˆ	Ø"Ð"ˆw˜dÐ"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"ˆw˜dÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆwÑ"Ô"Ð"Õ"Ô"ˆwÑ"Ô"Ð"Ð"Õ"Ô"˜dÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"ð 	×(Ò(¨°GÔ4FÑGÔGÐGð (×8Ò8¸ÐD_Ñ`Ô`ÐØ0ÐDÐ0Ð4DÐDÐDÐDÐDÕDÔDÐDÐDÐDÐDÐ0Ð4DÐDÑDÔDÕDÔDÐ0ÑDÔDÐDÕDÔDÑDÔDÐDÐDÕDÔDÐ4DÑDÔDÐDÕDÔDÐ4DÑ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ð ×-Ò-¨iÐ9ZÑ[Ô[ˆØ Ð ˆu˜DÐ Ð Ð Ð Õ Ô Ð Ð Ð Ð ˆu˜DÐ Ñ Ô Ð Õ Ô Ñ Ô Ð Ð Õ Ô ˆuÑ Ô Ð Õ Ô ˆuÑ Ô Ð Ð Õ Ô ˜DÑ Ô Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð ØŒ|Ð4�{Ô4Ð4ˆ|Ð4Ò4Ð4Ð4Ð4Õ4Ô4Ð4Ð4Ð4Ð4ˆ|Ð4Ð4Ñ4Ô4Ð4Õ4Ô4Ñ4Ô4Ð4Ð4Õ4Ô4ˆuÑ4Ô4Ð4Õ4Ô4ˆuÑ4Ô4Ð4Ð4Õ4Ô4ˆ|Ñ4Ô4Ð4Õ4Ô4Ñ4Ô4Ð4Ð4Õ4Ô4�{Ñ4Ô4Ð4Õ4Ô4�{Ñ4Ô4Ð4Ð4Õ4Ô4Ð4Ñ4Ô4Ð4Ð4Ñ4Ð4Ð4Ð4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4ð +×=Ò=¸iÐIjÑkÔkÑˆ�&˜!Øˆˆˆˆ�Œ‰Œˆˆ�Œˆx‰Œˆ�Œˆx‰Œˆˆˆ‰ˆ��Œˆ‰Œ‰ŒˆØ!Ð!ˆv˜TÐ!Ð!Ð!Ð!Õ!Ô!Ð!Ð!Ð!Ð!ˆv˜TÐ!Ñ!Ô!Ð!Õ!Ô!Ñ!Ô!Ð!Ð!Õ!Ô!ˆvÑ!Ô!Ð!Õ!Ô!ˆvÑ!Ô!Ð!Ð!Õ!Ô!˜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ˆvÑ7Ô7Ð7Õ7Ô7ˆvÑ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ØÔ%Ð*¨Ð*Ð%¨Ò*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð%¨Ð*Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*ˆvÑ*Ô*Ð*Õ*Ô*ˆvÑ*Ô*Ð*Ð*Õ*Ô*Ð%Ñ*Ô*Õ*Ô*¨Ñ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*r   N)r’   r“   r”   r   r   r8  r   r   r   r!  r!  '  s8   € € € € € ð++Ø%ð++Ø5@ð++ð ++ð ++ð ++ð ++ð ++r   r!  )%Ú__doc__ÚbuiltinsrP   Ú_pytest.assertion.rewriteÚ	assertionÚrewriterM   ÚtimeÚpytestÚtypingr   Úserver.world.zone_enginer   r   r   r   r   r	   r
   r   r   r   r   Úserver.world.quest_enginer   r   r   r   Úfixturer   r   r   r–   rÉ   rß   r  r!  r   r   r   ú<module>rD     s]  ðð	ð 	ð € € € € € € € € € € € € €€€€Ø €€€Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð „ð�Zð ð ð ñ „ðð „ð)�kð )ð )ð )ñ „ð)ð;)ð ;)ð ;)ð ;)ð ;)ñ ;)ô ;)ð ;)ð|2+ð 2+ð 2+ð 2+ð 2+ñ 2+ô 2+ð 2+ðj1ð 1ð 1ð 1ð 1ñ 1ô 1ð 1ð4<1ð <1ð <1ð <1ð <1ñ <1ô <1ð <1ð~)$ð )$ð )$ð )$ð )$ñ )$ô )$ð )$ðX,+ð ,+ð ,+ð ,+ð ,+ñ ,+ô ,+ð ,+ð ,+ð ,+r   