§
    §G¾jà\  ã                  óv   — d Z ddlmZ ddlmZ ddlmZmZmZm	Z	m
Z
mZmZ erddlmZ dd
„Zdd„Zdd„Zdd„ZdS )z™
FreeExile Canonical Zone, Dungeon, and Secret Chamber Catalog.
Decoupled static data definitions for all standard maps, instances, and secret chambers.
é    )Úannotations)ÚTYPE_CHECKING)ÚZoneTypeÚZoneEnvironmentÚZoneDefinitionÚWaypointÚ
ZonePortalÚDungeonTemplateÚSecretChamberTemplate)Ú
ZoneEngineÚenginer   ÚreturnÚNonec                ó`   — t          | ¦  «         t          | ¦  «         t          | ¦  «         dS )zTPopulates a ZoneEngine instance with canonical zones, dungeons, and secret chambers.N)Ú_register_zonesÚ_register_dungeonsÚ_register_secret_chambers©r   s    ú2C:\Projects\FreeExile\server\world\zone_catalog.pyÚ&register_canonical_zones_and_templatesr      s2   € å�FÑÔÐÝ�vÑÔÐÝ˜fÑ%Ô%Ð%Ð%Ð%ó    c                ó–  — |                       t          d�i dd“dd“dt          j        “dt          j        “dd“d	d
“dd“dd“dd“dd“dd“dd“dd“ddt          dddddd¬¦  «        i“dt          ddddddddd¬¦	  «	        t          d d!ddd"d#d$d$d%¬¦	  «	        t          d&d'dddd(d)d)d*¬¦	  «	        t          d+d,dd"dd-ddd¬¦	  «	        d.œ“d/g d0¢“Ž¦  «         |                       t          d�i dd-“dd1“dt          j        “dt          j        “dd“d	d
“dd“dd“dd“dd“dd-“dd“dd“d2d3“dd4t          d4d5d-ddd¬¦  «        i“dd6t          d6d7d-dd8dd9dd¬¦	  «	        i“d/g “Ž¦  «         |                       t          d�i dd“dd:“dt          j        “dt          j        “dd“d	d;“dd<“dd<“dd“dd“dd“dd“dd“dd=t          d=d>dd)d)¬?¦  «        i“dt          d@dAdddBddCdd¬¦	  «	        t          dDdEddFdFd#d$d$d%¬¦	  «	        dGœ“d/dHdIg“Ž¦  «         |                       t          d#dJt          j        t          j	        d%dKdLdLd$d$ddddMt          dMdNd#dOdO¬?¦  «        it          dPdQd#dRdRddSdSd¬¦	  «	        t          dTdUd#dVdVd(d)d)d*¬¦	  «	        dWœ¬X¦  «        ¦  «         |                       t          d�i dd(“ddY“dt          j        “dt          j
        “dd*“d	dK“ddZ“ddZ“dd)“dd)“dd“dd“dd“dd[t          d[d\d(dFdF¬?¦  «        i“dd]t          d]d^d(d_d_d`dadadb¬¦	  «	        i“d/dcg“Ž¦  «         |                       t          d`ddt          j        t          j        dbdKdededadaddddft          dfdgd`dada¬?¦  «        idht          dhdid`djdjdkdldldm¬¦	  «	        i¬X¦  «        ¦  «         |                       t          dkdnt          j        t          j        dmdKdododldlddddpt          dpdqdkdrdr¬?¦  «        idst          dsdtdkdududvdOdOdw¬¦	  «	        i¬X¦  «        ¦  «         |                       t          dvdxt          j        t          j        dwdKdydydOdOddddzt          dzd{dvd|d|¬?¦  «        id}t          d}d~dvddd€d�d�d‚¬¦	  «	        i¬X¦  «        ¦  «         |                       t          d€dƒt          j        t          j        d‚dKd„d„d�d�dddd…t          d…d†d€d_d_¬?¦  «        id‡t          d‡dˆd€d‰d‰dŠd‹d‹dŒ¬¦	  «	        i¬X¦  «        ¦  «         |                       t          dŠd�t          j        t          j        dŒdKdŽdŽd‹d‹dddd�t          d�d�dŠdd¬?¦  «        id‘t          d‘d’dŠd“d“d”drdrd•¬¦	  «	        i¬X¦  «        ¦  «         |                       t          d”d–t          j        t          j        d•dKd—d—drdrdddd˜t          d˜d™d”dšdš¬?¦  «        id›t          d›dœd”drdFdddd¬¦	  «	        i¬X¦  «        ¦  «         d S )žNÚzone_idÚzone_boundless_sanctuaryÚnameu   Doanh Tráº¡i Báº¿n LÆ°u Ä�Ã yÚ	zone_typeÚenvironmentÚ	min_levelé   Úmax_playersiˆ  Úbounds_widthg      ‰@Úbounds_heightÚdefault_spawn_xg        Údefault_spawn_yÚrespawn_zone_idÚ	respawn_xÚ	respawn_yÚ	waypointsÚwp_sanctuary_centralu)   Trá»¥ Ä�Ã¡ Tháº§n HÃ nh: Báº¿n LÆ°u Ä�Ã yT)Úwaypoint_idr   r   ÚxÚyÚis_unlocked_by_defaultÚportalsÚportal_sanctuary_to_tang_kiemu*   Cá»•ng TÃ¢y: Ä�áº¿n Bá»� Ä�Ã¡ TÃ n XÆ°Æ¡ngg     ÀwÀÚzone_tang_kiem_nhaig      I@)	Ú	portal_idr   Úsource_zone_idÚsource_xÚsource_yÚtarget_zone_idÚtarget_xÚtarget_yr   Ú!portal_sanctuary_to_ancient_swordu.   Cá»•ng Báº¯c: Ä�áº¿n Ä�áº§m Láº§y Thá»‘i Rá»¯ag     Àw@Úzone_ancient_sword_barrowg      Y@é   Úportal_sanctuary_to_sandstormu'   Cá»•ng Nam: Ä�áº¿n Sa Cá»‘t Hoang Máº¡cÚzone_boundless_sandstormg     Àb@é   Úportal_sanctuary_to_hideoutu&   Lá»‘i VÃ o: TiÃªn Phá»§ Ä�á»™ng ThiÃªnÚzone_player_hideout)r/   r8   r;   r>   Únpc_ids)Únpc_bach_hieu_sinhÚnpc_van_gioi_thuong_nhanÚnpc_thiet_tuong_au_da_tuÚnpc_chan_vo_truyen_thuau$   TiÃªn Phá»§ Ä�á»™ng ThiÃªn (Hideout)Ú	max_leveléd   Úwp_hideout_centralu3   Trá»¥ Ä�Ã¡ Tháº§n HÃ nh: TiÃªn Phá»§ Ä�á»™ng ThiÃªnÚportal_hideout_to_sanctuaryu'   Lá»‘i Ra: Doanh Tráº¡i Báº¿n LÆ°u Ä�Ã yg     àuÀg     €v@u   Bá»� Ä�Ã¡ TÃ n XÆ°Æ¡ngi¸  g     @Ÿ@Úwp_tang_kiem_cliffu2   Trá»¥ XÆ°Æ¡ng Tháº§n HÃ nh: Bá»� Ä�Ã¡ TÃ n XÆ°Æ¡ng)r*   r   r   r+   r,   Úportal_tang_kiem_to_sanctuaryu   Lá»‘i Vá»�: Báº¿n LÆ°u Ä�Ã yg      4@g     €vÀÚ!portal_tang_kiem_to_ancient_swordu*   Lá»‘i MÃ²n: VÃ o Ä�áº§m Láº§y Thá»‘i Rá»¯ag      |@)rJ   rK   Únpc_doc_co_tan_kiemÚnpc_tieu_dau_lao_mau   Ä�áº§m Láº§y Thá»‘i Rá»¯aiÐ  g     À¢@Úwp_ancient_sword_barrowu2   Trá»¥ Ä�Ã¡ Tháº§n HÃ nh: Ä�áº§m Láº§y Thá»‘i Rá»¯ag     Àr@Ú!portal_ancient_sword_to_tang_kiemu-   Lá»‘i CÅ©: Trá»Ÿ Láº¡i Bá»� Ä�Ã¡ TÃ n XÆ°Æ¡ngg      T@g     àz@Ú!portal_ancient_sword_to_sandstormu+   Lá»‘i BÄƒng GiÃ³: VÃ o Sa Cá»‘t Hoang Máº¡cg     0�@)rO   rP   )r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r.   u   Sa Cá»‘t Hoang Máº¡cg     p§@Úwp_sandstorm_oasisu.   Trá»¥ Cá»‘t Tháº§n HÃ nh: á»�c Ä�áº£o Sa Cá»‘tÚportal_sandstorm_to_blood_scaleu/   Lá»‘i BÄƒng Qua: Ä�áº¿n Pháº¿ TÃ­ch Xáº» Thá»‹tg     à…@Úzone_blood_scale_ruinsg      i@é   Únpc_sa_mac_du_thanu   Pháº¿ TÃ­ch Xáº» Thá»‹tg      ©@Úwp_blood_scale_entranceu?   Trá»¥ Cá»‘t Tháº§n HÃ nh: Tiá»�n Ä�á»“n Pháº¿ TÃ­ch Xáº» Thá»‹tÚ#portal_blood_scale_to_five_elementsu-   Lá»‘i RÃ¡ch Ä�Ã¡: Ä�áº¿n Táº¿ Ä�Ã n Man Hoangg     p‡@Úzone_five_elements_altarg     @o@é(   u   Táº¿ Ä�Ã n Man Hoangg      ¬@Úwp_five_elements_coreu-   Trá»¥ Ä�Ã¡ Tháº§n HÃ nh: Táº¿ Ä�Ã n Man Hoangg     @@Ú portal_five_elements_to_ice_pondu3   Lá»‘i Hang Láº¡nh: Ä�áº¿n Vá»±c Ä�áº§m BÄƒng Ä�á»™cg     �Š@Úzone_abyssal_ice_pondé2   u   Vá»±c Ä�áº§m BÄƒng Ä�á»™cg     @¯@Úwp_abyssal_ice_shoreu8   Trá»¥ BÄƒng Tháº§n HÃ nh: Bá»� Vá»±c Ä�áº§m BÄƒng Ä�á»™cg     À‚@Ú portal_ice_pond_to_infinite_riftu8   Khe Ná»©t Ä�Ã¡y Vá»±c: Ä�áº¿n Vá»±c Ä�Ã³i Nuá»‘t Chá»­ngg     °�@Úzone_infinite_blood_riftg     àu@é<   u   Vá»±c Ä�Ã³i Nuá»‘t Chá»­ngg     0±@Úwp_infinite_blood_riftu6   Trá»¥ XÆ°Æ¡ng Tháº§n HÃ nh: Vá»±c Ä�Ã³i Nuá»‘t Chá»­ngÚ#portal_infinite_rift_to_lava_cavernu2   Háº§m Nham Tháº¡ch: Ä�áº¿n Miá»‡ng Lá»­a Nung MÃ¡ug     h�@Úzone_purgatory_lava_caverng      y@éF   u   Miá»‡ng Lá»­a Nung MÃ¡ug     À²@Úwp_lava_cavern_crateru0   Trá»¥ Nham Tháº§n HÃ nh: Miá»‡ng Lá»­a Nung MÃ¡uÚportal_lava_to_celestialu>   Báº­c Ä�Ã¡ Huyáº¿t Láº¡c: LÃªn Bá»‡ Thá»� Quá»· Ä�oáº¡t Má»‡nhg     ø‘@Úzone_boundless_celestial_palaceéU   u   Bá»‡ Thá»� Quá»· Ä�oáº¡t Má»‡nhg     ˆ³@Úwp_celestial_peaku8   Trá»¥ Cá»• Tháº§n HÃ nh: Bá»‡ Thá»� Quá»· Ä�oáº¡t Má»‡nhg     @�@Úportal_celestial_to_sanctuaryu3   Cá»­a Háº§m LÆ°u Ä�Ã y: Trá»Ÿ Vá»� Báº¿n LÆ°u Ä�Ã y© )Úadd_zoner   r   Ú	SANCTUARYr   ÚNORMALr   r	   Ú
OPEN_WORLDÚMIASMA_TOXICÚ	SANDSTORMÚVOID_CORRUPTIONÚFREEZING_CHILLÚSCORCHING_HEATr   s    r   r   r      s„  € à
‡O‚OÝð L	
ð L	
ð L	
Ø.Ð.ðL	
à0Ð0ðL	
õ Ô(Ð(ðL	
õ (Ô.Ð.ð	L	
ð
 �aðL	
ð ˜ðL	
ð ˜ðL	
ð  ˜%ðL	
ð  ˜CðL	
ð  ˜CðL	
ð 7Ð6ðL	
ð �cðL	
ð �cðL	
ð '­Ø 6ØDØ6ØØØ+/ð)ñ )ô )ð	ð 	ðL	
õ2 2<Ø=ØEØ#=Ø#Ø Ø#8Ø!Ø!Øð
2ñ 
2ô 
2õ 6@ØAØIØ#=Ø Ø"Ø#>Ø"Ø"Øð
6ñ 
6ô 
6õ 2<Ø=ØBØ#=Ø Ø#Ø#=Ø"Ø"Ø ð
2ñ 
2ô 
2õ 0:Ø;ØAØ#=Ø"Ø Ø#8Ø Ø Øð
0ñ 
0ô 
0ðE-ð -ð -ð1L	
ðLð ð ð ðML	
ñNô Nð Nðb ‡O‚OÝð '	
ð '	
ð '	
Ø)Ð)ð'	
à7Ð7ð'	
õ Ô(Ð(ð'	
õ (Ô.Ð.ð	'	
ð
 �að'	
ð ˜ð'	
ð ˜ð'	
ð  ˜%ð'	
ð  ˜Cð'	
ð  ˜Cð'	
ð 2Ð1ð'	
ð �cð'	
ð �cð'	
ð �cð'	
ð  %¥hØ 4ØNØ1ØØØ+/ð'ñ 'ô 'ð	ð 	ð'	
ð4 .­zØ;ØBØ#8Ø Ø#Ø#=Ø"Ø Øð
0ñ 
0ô 
0ðð ð3'	
ðL �BðM'	
ñ)ô )ð )ðX ‡O‚OÝð 3	
ð 3	
ð 3	
Ø)Ð)ð3	
à)Ð)ð3	
õ Ô)Ð)ð3	
õ (Ô.Ð.ð	3	
ð
 �að3	
ð ˜ð3	
ð  ˜ð3	
ð !˜&ð3	
ð !˜Dð3	
ð !˜Dð3	
ð 7Ð6ð3	
ð �cð3	
ð �cð3	
ð %¥hØ 4ØMØ1ØØð'ñ 'ô 'ðð ð3	
õ0 2<Ø=Ø7Ø#8Ø!Ø!Ø#=Ø#Ø Øð
2ñ 
2ô 
2õ 6@ØAØEØ#8Ø"Ø"Ø#>Ø"Ø"Øð
6ñ 
6ô 
6ðð ð ð/3	
ð` &Ø%ðð ð_3	
ñ5ô 5ð 5ðp ‡O‚OÝØ/Ø,ÝÔ)Ý'Ô4ØØØØ Ø!Ø!Ø6ØØà)­8Ø 9ØMØ7ØØð,ñ ,ô ,ðõ 6@ØAØHØ#>Ø!Ø!Ø#8Ø"Ø"Øð
6ñ 
6ô 
6õ 6@ØAØFØ#>Ø"Ø"Ø#=Ø"Ø"Ø ð
6ñ 
6ô 
6ðð ð//	
ñ /	
ô /	
ñ1ô 1ð 1ðh ‡O‚OÝð '	
ð '	
ð '	
Ø.Ð.ð'	
à'Ð'ð'	
õ Ô)Ð)ð'	
õ (Ô1Ð1ð	'	
ð
 �bð'	
ð ˜ð'	
ð  ˜ð'	
ð !˜&ð'	
ð "˜Eð'	
ð "˜Eð'	
ð 7Ð6ð'	
ð �cð'	
ð �cð'	
ð %¥hØ 4ØIØ6ØØð'ñ 'ô 'ðð ð'	
ð0 2µ:Ø?ØJØ#=Ø"Ø"Ø#;Ø"Ø"Ø ð
4ñ 
4ô 
4ðð ð/'	
ðJ %ðð ðI'	
ñ)ô )ð )ðX ‡O‚OÝØ,Ø*ÝÔ)Ý'Ô7ØØØØ Ø!Ø!Ø6ØØà)­8Ø 9ØZØ4ØØð,ñ ,ô ,ðð 6µzØCØHØ#;Ø"Ø"Ø#=Ø"Ø"Ø ð
8ñ 
8ô 
8ðð/$	
ñ $	
ô $	
ñ&ô &ð &ðR ‡O‚OÝØ.Ø'ÝÔ)Ý'Ô.ØØØØ Ø!Ø!Ø6ØØà'­Ø 7ØHØ6ØØð*ñ *ô *ðð 3µJØ@ØNØ#=Ø"Ø"Ø#:Ø"Ø"Ø ð
5ñ 
5ô 
5ðð/$	
ñ $	
ô $	
ñ&ô &ð &ðR ‡O‚OÝØ+Ø,ÝÔ)Ý'Ô6ØØØØ Ø!Ø!Ø6ØØà&­Ø 6ØSØ3ØØð)ñ )ô )ðð 3µJØ@ØSØ#:Ø"Ø"Ø#=Ø"Ø"Ø ð
5ñ 
5ô 
5ðð/$	
ñ $	
ô $	
ñ&ô &ð &ðR ‡O‚OÝØ.Ø-ÝÔ)Ý'Ô6ØØØØ Ø!Ø!Ø6ØØà(­(Ø 8ØQØ6ØØð+ñ +ô +ðð 6µzØCØMØ#=Ø#Ø#Ø#?Ø"Ø"Ø ð
8ñ 
8ô 
8ðð/$	
ñ $	
ô $	
ñ&ô &ð &ðR ‡O‚OÝØ0Ø*ÝÔ)Ý'Ô6ØØØØ Ø!Ø!Ø6ØØà'­Ø 7ØKØ8ØØð*ñ *ô *ðð +­JØ8ØYØ#?Ø#Ø#Ø#DØ"Ø"Ø ð
-ñ 
-ô 
-ðð/$	
ñ $	
ô $	
ñ&ô &ð &ðR ‡O‚OÝØ5Ø2ÝÔ)Ý'Ô7ØØØØ Ø!Ø!Ø6ØØà#¥XØ 3ØSØ=ØØð&ñ &ô &ðð 0µØ=ØNØ#DØ"Ø"Ø#=Ø Ø Øð
2ñ 
2ô 
2ðð/$	
ñ $	
ô $	
ñ&ô &ð &ð &ð &r   c                óÀ   — t          ddddddddd	¬
¦	  «	        | j        d<   t          dddddddd¬¦  «        | j        d<   t          ddddddd¬¦  «        | j        d<   d S )NÚinst_phong_ma_co_tranu#   Háº§m Ngá»¥c Phong ThÃº (50 Táº§ng)rT   r]   é   i  é   Ú"quest_norm_05_khai_mo_van_gioi_cacÚboss_world_abyssal_dragon_king)	Útemplate_idr   r   Ú
max_layersÚmax_party_sizeÚtime_limit_secÚrevive_livesÚrequired_quest_idÚboss_monster_idÚinst_bi_canh_hu_khongu+   CÃµi Tuyá»‡t Ä�á»‹a HÆ° KhÃ´ng (100 Táº§ng)ra   rF   i  r   Úboss_flame_demon_lord)r|   r   r   r}   r~   r   r€   r‚   Úinst_van_gioi_thi_luyenu.   Ä�áº¥u TrÆ°á»�ng Sinh Tá»­ Man Tá»™c (3 VÃ²ng)é   é   éX  )r|   r   r   r}   r~   r   r€   )r
   Údungeon_templatesr   s    r   r   r   *  s­   € Ý8GØ+Ø2ØØØØØØ>Ø8ð
9ñ 
9ô 
9€FÔÐ4Ñ5õ 9HØ+Ø:ØØØØØØ/ð	9ñ 	9ô 	9€FÔÐ4Ñ5õ ;JØ-Ø=ØØØØØð;ñ ;ô ;€FÔÐ6Ñ7Ð7Ð7r   c                óî   — t          dddddd¬¦  «        | j        d<   t          dd	d
ddd¬¦  «        | j        d<   t          dddddd¬¦  «        | j        d<   t          dddddd¬¦  «        | j        d<   d S )NÚsecret_huyen_anh_to_suu    BÃ­ Tháº¥t ThÃ¢n PhÃ¡p XÃ  áº¢nhrS   Úloc_secret_phantom_shrinerˆ   u’   Lá»‘i vÃ o bÃ­ tháº¥t kháº¯c há»�a bá»™ phÃ¡p XÃ  áº¢nh xuáº¥t hiá»‡n trong khe ná»©t Ä‘Ã¡ sau khi luá»“n lÃ¡ch nÃ© Ä‘Ã²n tháº­p tá»­ nháº¥t sinh.)r|   r   Úparent_zone_idÚtarget_objective_idÚlifespan_secÚdescriptionÚsecret_tan_bi_than_tuongu!   Háº§m Má»™ Chiáº¿n Binh Man Tá»™cr<   Úaction_decipher_ancient_stelei„  ug   Háº§m má»™ Ä‘Ã¡ cá»• chÃ´n vÃ¹i dÆ°á»›i bia xÆ°Æ¡ng lá»™ diá»‡n sau cuá»“ng phong bÃ£o cÃ¡t cÃ n quÃ©t.Úsecret_ngu_hanh_tran_nhanu    Máº¯t Tráº­n ThÃº Tá»• Man HoangrX   Úloc_five_elements_altaruq   Cá»­a hang ngáº§m má»Ÿ ra khi cáº£ nÄƒm cá»™t táº¿ kháº¯c hÃ¬nh thÃº tá»• Ä‘Æ°á»£c Ä‘Ã¡nh thá»©c Ä‘á»“ng Ä‘iá»‡u.Úsecret_tang_kiem_kiem_chungu"   Há»‘c Ä�Ã¡ Rá»­a Ä�ao OÃ¡n Huyáº¿tr0   Úaction_cleanse_rusted_bladeu‡   BÃ­ Ä‘áº¡o ngáº§m rá»‰ mÃ¡u trong vÃ¡ch Ä‘Ã¡ dáº«n Ä‘áº¿n nÆ¡i chÃ´n cáº¥t nhá»¯ng lÆ°á»¡i Ä‘ao sáº¯t rá»‰ nhiá»…m oÃ¡n khÃ­ man dáº¡i.)r   Úsecret_chamber_templatesr   s    r   r   r   M  så   € Ý@UØ,Ø/Ø/Ø7Øð iðAñ Aô A€FÔ#Ð$<Ñ=õ CXØ.Ø0Ø1Ø;ØØ}ðCñ Cô C€FÔ#Ð$>Ñ?õ DYØ/Ø/Ø1Ø5Øð HðDñ Dô D€FÔ#Ð$?Ñ@õ F[Ø1Ø1Ø,Ø9Øð ^ðFñ Fô F€FÔ#Ð$AÑBÐBÐBr   N)r   r   r   r   )Ú__doc__Ú
__future__r   Útypingr   Úserver.world.zone_typesr   r   r   r   r	   r
   r   Úserver.world.zone_enginer   r   r   r   r   rl   r   r   ú<module>r�      s  ððð ð
 #Ð "Ð "Ð "Ð "Ð "Ø  Ð  Ð  Ð  Ð  Ð  ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð 4Ø3Ð3Ð3Ð3Ð3Ð3ð&ð &ð &ð &ðJð Jð Jð JðZ ð  ð  ð  ðF#ð #ð #ð #ð #ð #r   