§
    Aù©jP   ã                   óz  — U d Z ddlmZmZ ddlmZ ddlmZmZm	Z	  G d„ de¦  «        Z
e G d„ d¦  «        ¦   «         Ze G d	„ d
¦  «        ¦   «         Z ede
j        dddd¦  «         ede
j        dddd¦  «         ede
j        dddd¦  «         ede
j        dddd¦  «        g ede
j        dddd¦  «         ede
j        dddd¦  «         ede
j        dddd ¦  «         ed!e
j        dddd"¦  «        g ed#e
j        dddd$¦  «         ed%e
j        dddd&¦  «         ed'e
j        d(ddd)¦  «         ed*e
j        dddd+¦  «        g ed,e
j        dddd-¦  «         ed.e
j        dddd/¦  «         ed0e
j        dddd1¦  «         ed2e
j        dddd3¦  «        gd4œZeeee         f         ed5<    G d6„ d7¦  «        Zd8S )9u¾   
Há»‡ Thá»‘ng Tá»± Ä�á»™ng Há»�c & Gáº¯n Ngá»�c Ká»¹ NÄƒng (POE2 Gem Socket & Auto-Combo Manager)
Quáº£n lÃ½ Uncut Skill Gems, Uncut Support Gems vÃ  thiáº¿t láº­p Combo theo meta Leveling.
é    )Ú	dataclassÚfield)ÚEnum)ÚDictÚListÚOptionalc                   ó   — e Zd ZdZdZdZdS )ÚGemCategoryÚACTIVE_SKILLÚSUPPORT_GEMÚ
SPIRIT_GEMN)Ú__name__Ú
__module__Ú__qualname__r   r   r   © ó    ú6C:\Projects\AutoPOE2\src\assistant_tool\gem_manager.pyr
   r
      s   € € € € € Ø!€LØ€KØ€J€J€Jr   r
   c                   óL   — e Zd ZU eed<   eed<   eed<   eed<   eed<   eed<   dS )ÚGemRecommendationÚgem_nameÚcategoryÚ
tier_levelÚ
weapon_setÚroleÚdescriptionN)r   r   r   ÚstrÚ__annotations__r
   Úintr   r   r   r   r      sN   € € € € € € à€M€M�MØÐÐÑØ€O€O�OØ€O€O�OØ
€I€I�IØÐÐÑÐÐr   r   c                   óŽ   — e Zd ZU dZeed<   eed<   dZeed<   dZeed<    e	e
¬¦  «        Zee         ed<   d	Zeed
<   dZeed<   dS )ÚPoe2ActiveSkillLoadoutuT   MÃ´ hÃ¬nh ká»¹ nÄƒng chá»§ Ä‘á»™ng gáº¯n trong báº£ng Gem Menu (PhÃ­m G) cá»§a POE2.ÚnameÚkey_bindingé   r   Úlevel)Údefault_factoryÚsupport_gemsÚMAIN_DPSr   Ú r   N)r   r   r   Ú__doc__r   r   r   r   r$   r   Úlistr&   r   r   r   r   r   r   r    r       s‹   € € € € € € à^Ð^Ø
€I€I�IØÐÐÑØ€J�ÐÐÑØ€Eˆ3€N€N�NØ#˜e°DÐ9Ñ9Ô9€L�$�s”)Ð9Ð9Ñ9Ø€Dˆ#ÐÐÑØ€K�ÐÐÑÐÐr   r    ÚCleaver#   r'   u/   Ká»¹ nÄƒng quÃ©t dá»�n báº§y quÃ¡i cáº¥p tháº¥pÚSunderé   ÚPRIMERu5   GÃ¢y choÃ¡ng vÃ  tÃ­ch lÅ©y thanh Stagger cá»±c nhanhÚBoneshatteré   ÚSTAGGER_FINISHERu:   Ä�Ã²n dá»©t Ä‘iá»ƒm bá»™c phÃ¡ khi quÃ¡i bá»‹ Stagger 100%zBrutality SupportÚSUPPORTu,   TÄƒng máº¡nh sÃ¡t thÆ°Æ¡ng váº­t lÃ½ thuáº§nÚSparku/   Tia sÃ©t dá»�n dáº¹p map rá»™ng xuyÃªn tÆ°á»�ngz
Frost Wallé   u;   Cáº£n quÃ¡i vÃ  tÃ­ch tá»¥ hiá»‡u á»©ng Ä�Ã³ng BÄƒng FreezezLightning Conduitu1   Xáº£ sÃ©t há»§y diá»‡t khi má»¥c tiÃªu bá»‹ ShockzFaster Castingu   TÄƒng tá»‘c Ä‘á»™ niá»‡m phÃ©pz
Rapid Shotu&   Báº¯n ná»� liÃªn thanh tá»‘c Ä‘á»™ caoz	Cryo Ammou?   BÄƒng Ä‘áº¡n Ä‘Ã³ng bÄƒng lÃ m cháº­m toÃ n bá»™ quÃ¡i Ã¡p sÃ¡tzArmor Piercing Finisheré   u)   XuyÃªn giÃ¡p káº¿t liá»…u Boss gá»¥c ngÃ£zMultiple Projectilesu   Báº¯n tá»�a nhiá»�u mÅ©i tÃªnúWhirling AssaultuG   Ká»¹ nÄƒng xoay quÃ©t dá»�n map vÃ  dá»“n hit cáº­n chiáº¿n liÃªn tá»¥cúHollow FormuN   Ká»¹ nÄƒng ThÄƒng hoa Spirit triá»‡u há»“i áº£o áº£nh mÃ´ phá»�ng Ä‘Ã²n Ä‘Ã¡nhúHollow Focusu@   ChuÃ´ng tÃ¢m linh khuáº¿ch Ä‘áº¡i diá»‡n tÃ­ch vÃ  dá»“n StaggerúMartial Tempou:   TÄƒng máº¡nh tá»‘c Ä‘á»™ ra chiÃªu vÃ  chuá»—i liÃªn hoÃ n)ÚWARRIOR_MELEEÚSORCERESS_SPELLÚMERCENARY_CROSSBOWÚMONK_MARTIAL_ARTISTÚSTARTER_PROFILESc                   óØ   — e Zd ZdZddefd„Zd„ Zdefd„Zded	ed
e	fd„Z
ded
ee         fd„Zded
ee         fd„Zdeded
e	fd„Zddede	d
ee         fd„Zdefd„Zdefd„Zd
efd„ZdS )Ú
GemManageruÔ   
    Quáº£n lÃ½ ngá»�c ká»¹ nÄƒng vÃ  ngá»�c há»— trá»£ theo cÆ¡ cháº¿ POE2 (Báº£ng Gem phÃ­m G).
    KhÃ³a báº¥t biáº¿n INV-NO-AUTO-EQUIP-IN-COMBAT: KhÃ´ng tá»± tiá»‡n trÃ¡o Ä‘á»•i Ä‘á»“/gem khi Ä‘ang farm.
    r=   Úbuild_archetypec                 ó¼   — || _         t                               |t          d         ¦  «        | _        g | _        g | _        i | _        |                      ¦   «          d S )Nr=   )rA   r>   ÚgetÚprofileÚengraved_gemsÚsocketed_gemsÚactive_skillsÚ_init_default_loadout)ÚselfrA   s     r   Ú__init__zGemManager.__init__J   sX   € Ø.ˆÔÝ'×+Ò+¨OÕ=MÐNcÔ=dÑeÔeˆŒØ(*ˆÔØ(*ˆÔØ@BˆÔØ×"Ò"Ñ$Ô$Ð$Ð$Ð$r   c           
      ób  — | j         dk    r£|                      t          ddddddg¬¦  «        ¦  «         |                      t          d	d
dddg¬¦  «        ¦  «         |                      t          dddddg¬¦  «        ¦  «         |                      t          dddddg¬¦  «        ¦  «         dS dS )u;   Khá»Ÿi táº¡o cáº¥u hÃ¬nh ká»¹ nÄƒng chuáº©n theo Archetype.r=   r6   ÚQr#   r'   r9   zFaster Attacks)r!   r"   r   r   r&   r7   ÚRMBr.   zSpirit Reservationr8   ÚRr1   zConcentrated EffectzTempest BellÚTÚ	BURST_AOEzAdded Lightning DamageN)rA   Úbind_active_skillr    ©rI   s    r   rH   z GemManager._init_default_loadoutR   s  € àÔÐ#8Ò8Ð8Ø×"Ò"Õ#9Ø'°SÀQÈZØ-Ð/?Ð@ð$ñ $ô $ñ ô ð ð ×"Ò"Õ#9Ø"°À!È(Ø2Ð3ð$ñ $ô $ñ ô ð ð ×"Ò"Õ#9Ø#°ÀÐI[Ø3Ð4ð$ñ $ô $ñ ô ð ð ×"Ò"Õ#9Ø#°ÀÈØ6Ð7ð$ñ $ô $ñ ô ð ð ð ð 9Ð8r   Úskillc                 ó$   — || j         |j        <   dS )uN   Gáº¯n má»™t ká»¹ nÄƒng chá»§ Ä‘á»™ng vÃ o báº£ng ká»¹ nÄƒng cá»§a nhÃ¢n váº­t.N)rG   r!   )rI   rS   s     r   rQ   zGemManager.bind_active_skillf   s   € à).ˆÔ˜5œ:Ñ&Ð&Ð&r   Úactive_skill_nameÚsupport_gem_nameÚreturnc                 ó¬   — || j         v rJ| j         |         }||j        vr4t          |j        ¦  «        dk     r|j                             |¦  «         dS dS )uQ   Gáº¯n thÃªm ngá»�c há»— trá»£ vÃ o ká»¹ nÄƒng chá»§ Ä‘á»™ng (Tá»‘i Ä‘a 5 ngá»�c).é   TF)rG   r&   ÚlenÚappend)rI   rU   rV   rS   s       r   Úlink_support_gemzGemManager.link_support_gemj   sd   € à Ô 2Ð2Ð2ØÔ&Ð'8Ô9ˆEØ uÔ'9Ð9Ð9½cÀ%ÔBTÑ>UÔ>UÐXYÒ>YÐ>YØÔ"×)Ò)Ð*:Ñ;Ô;Ð;Ø�tØˆur   Úkeyc                 ó¨   — |                      ¦   «         }| j                             ¦   «         D ]#}|j                              ¦   «         |k    r|c S Œ$dS )uG   TÃ¬m ká»¹ nÄƒng chá»§ Ä‘á»™ng Ä‘Æ°á»£c gÃ¡n cho phÃ­m báº¥m cá»¥ thá»ƒ.N)ÚupperrG   Úvaluesr"   )rI   r]   Ú	key_upperrS   s       r   Úget_skill_by_keyzGemManager.get_skill_by_keys   sZ   € à—I’I‘K”Kˆ	ØÔ'×.Ò.Ñ0Ô0ð 	ð 	ˆEØÔ ×&Ò&Ñ(Ô(¨IÒ5Ð5Ø���ð 6àˆtr   r   c                 óN   ‡— ˆfd„| j                              ¦   «         D ¦   «         S )uN   Láº¥y danh sÃ¡ch cÃ¡c ká»¹ nÄƒng tÆ°Æ¡ng thÃ­ch vá»›i Weapon Set (1 hoáº·c 2).c                 ó@   •— g | ]}|j         d k    s|j         ‰k    ¯|‘ŒS )r   )r   )Ú.0Úsr   s     €r   ú
<listcomp>z8GemManager.get_skills_for_weapon_set.<locals>.<listcomp>}   s2   ø€ ÐjÐjÐj�a¸!¼,È!Ò:KÐ:KÈqÌ|Ð_iÒOiÐOi�ÐOiÐOiÐOir   )rG   r`   )rI   r   s    `r   Úget_skills_for_weapon_setz$GemManager.get_skills_for_weapon_set{   s,   ø€ àjÐjÐjÐj˜4Ô-×4Ò4Ñ6Ô6ÐjÑjÔjÐjr   Ú
skill_nameÚcurrent_weapon_setc                 óT   — || j         v r| j         |         j        }|dk    p||k    S dS )ua   Kiá»ƒm tra ká»¹ nÄƒng cÃ³ sá»­ dá»¥ng Ä‘Æ°á»£c vá»›i bá»™ vÅ© khÃ­ Ä‘ang kÃ­ch hoáº¡t hay khÃ´ng.r   F)rG   r   )rI   ri   rj   Úreq_sets       r   Úis_skill_availablezGemManager.is_skill_available   s:   € à˜Ô+Ð+Ð+ØÔ(¨Ô4Ô?ˆGØ˜q’LÐD gÐ1CÒ&CÐDØˆur   FÚuncut_gem_levelÚ
is_supportc                 óž   — |rt           j        nt           j        }| j        D ]*}|j        |k    r|j        |k    r|j        | j        vr|c S Œ+dS )u;   Ä�á»� xuáº¥t ká»¹ nÄƒng nÃªn kháº¯c tá»« Uncut Gem rÆ¡i ra.N)r
   r   r   rD   r   r   r   rE   )rI   rn   ro   ÚcatÚrecs        r   Úrecommend_engravingzGemManager.recommend_engraving†   s`   € à)3ÐQ�kÔ%Ð%½Ô9QˆØ”<ð 	ð 	ˆCØŒ|˜sÒ"Ð" s¤~¸Ò'HÐ'HØ”< tÔ'9Ð9Ð9Ø�J�J�JøØˆtr   r   c                 óP   — || j         vr| j                              |¦  «         dS dS )u   Ghi nháº­n gem Ä‘Ã£ kháº¯c.N)rE   r[   ©rI   r   s     r   Úrecord_engravedzGemManager.record_engraved�   ó5   € à˜4Ô-Ð-Ð-ØÔ×%Ò% hÑ/Ô/Ð/Ð/Ð/ð .Ð-r   c                 óP   — || j         vr| j                              |¦  «         dS dS )u1   Ghi nháº­n gem Ä‘Ã£ gáº¯n vÃ o báº£ng ká»¹ nÄƒng.N)rF   r[   ru   s     r   Úrecord_socketedzGemManager.record_socketed”   rw   r   c           
      ó”   — d| j         › dt          | j        ¦  «        › dt          | j        ¦  «        › dt          | j        ¦  «        › �S )NzBuild: z | Active Skills: z | Engraved: z | Socketed: )rA   rZ   rG   rE   rF   rR   s    r   Úget_status_summaryzGemManager.get_status_summary™   s‚   € ð g˜Ô-ð  gð  gÅÀTÔEWÑAXÔAXð  gð  gÕgjÐkoÔk}Ñg~Ôg~ð  gð  gõ  NQð  RVô  Rdñ  Neô  Neð  gð  gð  	gr   N)r=   )F)r   r   r   r)   r   rJ   rH   r    rQ   Úboolr\   r   rb   r   r   rh   rm   r   rs   rv   ry   r{   r   r   r   r@   r@   D   sŸ  € € € € € ðð ð
%ð %¨ð %ð %ð %ð %ðð ð ð(/Ð'=ð /ð /ð /ð /ð°#ð Èð ÐQUð ð ð ð ð Cð ¨HÐ5KÔ,Lð ð ð ð ðk°Cð k¸DÐAWÔ<Xð kð kð kð kð¨Sð Àcð Èdð ð ð ð ðð °3ð ÀDð ÐU]Ð^oÔUpð ð ð ð ð0¨ð 0ð 0ð 0ð 0ð
0¨ð 0ð 0ð 0ð 0ð
g Cð gð gð gð gð gð gr   r@   N)r)   Údataclassesr   r   Úenumr   Útypingr   r   r   r
   r   r    r   r   r>   r   r   r@   r   r   r   ú<module>r€      sÎ  ððð ð ð
 )Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'ðð ð ð ð �$ñ ô ð ð ðð ð ð ð ñ ô ñ „ðð ðð ð ð ð ñ ô ñ „ðð 	Ð˜( KÔ$<¸aÀÀJð  QBñ  	Cô  	CØÐ˜( KÔ$<¸aÀÀHð  OFñ  	Gô  	GØÐ˜-¨Ô)AÀ1ÀaÐI[ð  ^Zñ  	[ô  	[ØÐÐ-¨{Ô/FÈÈ1Èið  ZHñ  	Iô  	Ið	ð 	Ð˜' ;Ô#;¸QÀÀ:ð  PAñ  	Bô  	BØÐ˜,¨Ô(@À!ÀQÈð  SPñ  	Qô  	QØÐÐ-¨{Ô/GÈÈAÐOað  dWñ  	Xô  	XØÐÐ*¨KÔ,CÀQÈÈ9ÐVvÑwÔwð	ð 	Ð˜,¨Ô(@À!ÀQÈ
ÐT|Ñ}Ô}ØÐ˜+ {Ô'?ÀÀAÀxð  RSñ  	Tô  	TØÐÐ3°[Ô5MÈqÐRSÐUgð  jUñ  	Vô  	VØÐÐ0°+Ô2IÈ1ÈaÐQZÐ\{Ñ|Ô|ð	ð 	ÐÐ,¨kÔ.FÈÈ1Èjð  [dñ  	eô  	eØÐ˜-¨Ô)AÀ1ÀaÈð  Tdñ  	eô  	eØÐ˜.¨+Ô*BÀAÀqÐJ\ð  _añ  	bô  	bØÐ˜/¨;Ô+BÀAÀqÈ)ð  VRñ  	Sô  	Sð	ð'8ð 8Ð �$�s˜DÐ!2Ô3Ð3Ô4ð ð ñ ð8Vgð Vgð Vgð Vgð Vgñ Vgô Vgð Vgð Vgð Vgr   