§
    ¼>ºjB*  ã                   óô   — 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 ddlmZ  G d„ de¦  «        Z G d„ d	e¦  «        Ze G d
„ d¦  «        ¦   «         Ze G d„ d¦  «        ¦   «         Z G d„ d¦  «        ZdS )u­  
AutoPOE2 - Waystone Auto-Crafting Engine (Doc 43 P2-1)
=====================================================
Tá»± Ä‘á»™ng nÃ¢ng cáº¥p Waystone chÆ°a Ä‘áº¡t Rare (Normal/White Rarity 0 hoáº·c Magic Rarity 1)
thÃ nh Rare Waystone (Rarity 2) báº±ng Orb of Alchemy trÆ°á»›c khi cáº¯m vÃ o Map Device.

TuÃ¢n thá»§ báº¥t biáº¿n kiáº¿n trÃºc:
- INV-CRAFT-WAYSTONE-01: Cáº¤M TUYá»†T Ä�á»�I dÃ¹ng Orb of Alchemy lÃªn Waystone Ä‘Ã£ lÃ  Rare (Rarity >= 2) hoáº·c Unique.
- Fail-Closed on Unknown: KhÃ´ng xÃ¡c Ä‘á»‹nh Ä‘Æ°á»£c Rarity -> Há»§y bá»� ngay láº­p tá»©c, cáº¥m click mÃ¹.
- Cursor Safety Interlock: Gá»­i phÃ­m ESC náº¿u timeout hoáº·c tháº¥t báº¡i Ä‘á»ƒ xáº£ currency trÃªn chuá»™t.
é    )Ú	dataclass)ÚEnum)ÚAnyÚDictÚListÚOptionalÚTupleÚUnion)ÚModifierFilterc                   ó"   — e Zd ZdZdZdZdZdZdS )ÚWaystoneRarityr   é   é   é   éÿÿÿÿN)Ú__name__Ú
__module__Ú__qualname__ÚNORMALÚMAGICÚRAREÚUNIQUEÚUNKNOWN© ó    úBC:\Projects\AutoPOE2\src\assistant_tool\pickit\waystone_crafter.pyr   r      s'   € € € € € Ø€FØ€EØ€DØ€FØ€G€G€Gr   r   c                   ó&   — e Zd ZdZdZdZdZdZdZdS )ÚCraftActionÚ
SKIP_CRAFTÚAPPLY_ALCHEMYÚTRIGGER_ANGEÚABORT_SAFETYÚREROLL_SCOUR_ALCHÚSKIP_DANGEROUSN)	r   r   r   r   r    r!   r"   r#   r$   r   r   r   r   r      s-   € € € € € Ø€JØ#€MØ!€LØ!€LØ+ÐØ%€N€N€Nr   r   c                   ó^   — e Zd ZU eed<   eed<   eed<   eed<   eed<   dZeed<   dZeed	<   d
S )ÚWaystoneItemÚnameÚtierÚrarityÚinventory_colÚinventory_rowr   Úaffix_countÚ Ú	mods_textN)	r   r   r   ÚstrÚ__annotations__Úintr   r,   r.   r   r   r   r&   r&   %   sh   € € € € € € à
€I€I�IØ
€I€I�IØÐÐÑØÐÐÑØÐÐÑØ€K�ÐÐÑØ€IˆsÐÐÑÐÐr   r&   c                   óT   — e Zd ZU eed<   eed<   eed<   eed<   dZeed<   dZ	e
ed<   d	S )
ÚCraftResultÚactionÚsuccessÚinitial_rarityÚfinal_rarityr   Úretriesr-   ÚerrorN)r   r   r   r   r0   Úboolr   r8   r1   r9   r/   r   r   r   r3   r3   0   sZ   € € € € € € àÐÐÑØ€M€M�MØ"Ð"Ð"Ñ"Ø Ð Ð Ñ Ø€GˆSÐÐÑØ€Eˆ3€O€O�O€O€Or   r3   c                   ó  — e Zd ZdZddefd„Zedeee	e         f         de
ee	e         f         fd„¦   «         Z	 	 dd
ededededef
d„Z	 	 	 dd
edededededefd„Zd
ede
eef         fd„Z	 	 dd
edededede
eef         f
d„ZdS )ÚWaystoneAutoCrafteruW   
    Bá»™ quáº£n lÃ½ quy trÃ¬nh nÃ¢ng cáº¥p Waystone báº±ng Orb of Alchemy (P2-1).
    r   Úmax_retriesc                 ó   — || _         d S )N)r=   )Úselfr=   s     r   Ú__init__zWaystoneAutoCrafter.__init__?   s   € Ø&ˆÔÐÐr   ÚmodsÚreturnc                 óž   — t          |t          ¦  «        r|nd                     |¦  «        }t          j        |¦  «        }|j        |j        fS )u`   Kiá»ƒm tra xem Waystone cÃ³ dÃ­nh cÃ¡c mod cáº¥m gÃ¢y tá»­ tráº­n (INV-MAP-NO-BRICK) hay khÃ´ng.ú
)Ú
isinstancer/   Újoinr   Úevaluate_modifiersÚis_brickÚred_mods)ÚclsrA   ÚtxtÚreports       r   Úis_brick_waystonez%WaystoneAutoCrafter.is_brick_waystoneB   sE   € õ ! ¥sÑ+Ô+Ð@ˆdˆd°·²¸4±´ˆÝÔ2°3Ñ7Ô7ˆØŒ ¤Ð/Ð/r   Tr   ÚwaystoneÚalchemy_countÚis_in_safe_areaÚscour_countc                 óš  — |st           j        S |j        t          j        k    rt           j        S t          |dd¦  «        rC|                      |j        ¦  «        \  }}|r$|dk    r|dk    rt           j        S t           j	        S |j        t          j
        t          j        fv rt           j        S |dk    rt           j        S t           j        S )ut   
        Ä�Ã¡nh giÃ¡ hÃ nh Ä‘á»™ng craft dá»±a trÃªn báº¥t biáº¿n INV-CRAFT-WAYSTONE-01 & INV-MAP-NO-BRICK.
        r.   r-   r   )r   r"   r)   r   r   ÚgetattrrM   r.   r#   r$   r   r   r   r!   r    )r?   rN   rO   rP   rQ   rH   Ú_s          r   Úevaluate_craft_actionz)WaystoneAutoCrafter.evaluate_craft_actionI   sÑ   € ð ð 	,ÝÔ+Ð+ð Œ?�nÔ4Ò4Ð4ÝÔ+Ð+õ �8˜[¨"Ñ-Ô-ð 	2Ø×0Ò0°Ô1CÑDÔD‰KˆH�aØð 2Ø ’?�? }°qÒ'8Ð'8Ý&Ô8Ð8Ý"Ô1Ð1ð Œ?�~Ô2µNÔ4IÐJÐJÐJÝÔ)Ð)ð ˜AÒÐÝÔ+Ð+õ Ô(Ð(r   Úsimulate_successc           
      óÈ  — |j         }|                      ||||¬¦  «        }|t          j        k    rt	          |d||dd¬¦  «        S |t          j        k    rt	          |d|t          j        dd¬¦  «        S |t          j        k    rt	          |d||dd¬¦  «        S |t          j	        k    rt	          |d||dd	¬¦  «        S |t          j
        k    rt	          |d||dd
¬¦  «        S d}|}	|| j        k     r|dz  }|rt          j        }	n|| j        k     °|	t          j        k    rt	          t          j        d||	|d¬¦  «        S t	          t          j
        d||	|d|› d�¬¦  «        S )ud   
        MÃ´ phá»�ng chu trÃ¬nh FSM nÃ¢ng cáº¥p Waystone vá»›i cÃ¡c chá»‘t cháº·n an toÃ n.
        )rP   rQ   Tr   r-   ©r4   r5   r6   r7   r8   r9   r   FuS   Waystone dÃ­nh Brick Mod nguy hiá»ƒm (INV-MAP-NO-BRICK). Chuyá»ƒn sang viÃªn khÃ¡c.uG   Háº¿t Orb of Alchemy trong tÃºi Ä‘á»“. KÃ­ch hoáº¡t P2-2 Ange Exchange.uj   Vi pháº¡m Ä‘iá»�u kiá»‡n an toÃ n hoáº·c khÃ´ng xÃ¡c Ä‘á»‹nh Ä‘Æ°á»£c Ä‘á»™ hiáº¿m Waystone (Fail-Closed).u&   NÃ¢ng cáº¥p Waystone tháº¥t báº¡i sau u@    láº§n thá»­. Ä�Ã£ gá»­i phÃ­m ESC há»§y trá»� chuá»™t an toÃ n.)r)   rU   r   r   r3   r#   r   r   r$   r!   r"   r=   r    )
r?   rN   rO   rQ   rP   rV   r6   r4   r8   Úcurrent_raritys
             r   Úexecute_craft_simulationz,WaystoneAutoCrafter.execute_craft_simulationo   s  € ð "œˆØ×+Ò+Ø�m°_ÐR]ð ,ñ 
ô 
ˆð •[Ô+Ò+Ð+ÝØØØ-Ø+ØØðñ ô ð ð •[Ô2Ò2Ð2ÝØØØ-Ý+Ô0ØØðñ ô ð ð •[Ô/Ò/Ð/ÝØØØ-Ø+ØØkðñ ô ð ð •[Ô-Ò-Ð-ÝØØØ-Ø+ØØ_ðñ ô ð ð •[Ô-Ò-Ð-ÝØØØ-Ø+Øð Cðñ ô ð ð ˆØ'ˆØ˜Ô(Ò(Ð(Ø�q‰LˆGØð Ý!/Ô!4�Øð	 ˜Ô(Ò(Ð(ð �^Ô0Ò0Ð0ÝÝ"Ô0ØØ-Ø+ØØðñ ô ð õ Ý"Ô/ØØ-Ø+Øð I¸wð  Ið  Ið  Iðñ ô ð r   c                 óP  — |j         t          j        k    rdS |j         t          j        k    rdS t	          |dd¦  «        r:|                      |j        ¦  «        \  }}|rddd                     |¦  «        › d�fS |j         t          j        t          j	        t          j
        fv rd	S d
S )u°  
        Kiá»ƒm tra tÃ­nh sáºµn sÃ ng & Ä‘á»™ hiáº¿m tá»‘i Æ°u cá»§a Waystone trÆ°á»›c khi náº¡p vÃ o Map Device (Stage 3).
        Quy táº¯c báº¥t biáº¿n:
        - Rarity UNKNOWN: Fail-Closed -> False.
        - Rarity NORMAL: ChÆ°a nÃ¢ng cáº¥p -> False (báº¯t buá»™c craft lÃªn Magic/Rare).
        - Brick Mod (INV-MAP-NO-BRICK): DÃ­nh mod cáº¥m -> False.
        - Rarity MAGIC / RARE / UNIQUE: Ä�áº¡t chuáº©n -> True.
        )Fu7   Fail-Closed: Ä�á»™ hiáº¿m Waystone khÃ´ng xÃ¡c Ä‘á»‹nh.)FuJ   Waystone Normal (Tráº¯ng) chÆ°a Ä‘Æ°á»£c nÃ¢ng cáº¥p Magic/Rare tá»‘i Æ°u.r.   r-   Fu-   Waystone dÃ­nh Brick Mod (INV-MAP-NO-BRICK): z, ú.)TuI   Waystone Ä‘áº¡t Ä‘á»™ hiáº¿m Magic/Rare tá»‘i Æ°u Ä‘á»ƒ náº¡p Map Device.)Fu)   Tráº¡ng thÃ¡i Waystone khÃ´ng há»£p lá»‡.)r)   r   r   r   rS   rM   r.   rF   r   r   r   )r?   rN   rH   rI   s       r   Úis_optimal_for_map_devicez-WaystoneAutoCrafter.is_optimal_for_map_deviceÍ   s¶   € ð Œ?�nÔ4Ò4Ð4ØSÐSØŒ?�nÔ3Ò3Ð3ØfÐfÝ�8˜[¨"Ñ-Ô-ð 	eØ!%×!7Ò!7¸Ô8JÑ!KÔ!KÑˆH�hØð eØÐdÈdÏiÊiÐX`ÑNaÔNaÐdÐdÐdÐdÐdØŒ?�~Ô3µ^Ô5HÍ.ÔJ_Ð`Ð`Ð`ØdÐdØAÐAr   c                 ó8  — |                       ||||¬¦  «        }|t          j        k    r!|t          |d|j        |j        dd¬¦  «        fS |t          j        t          j        fv rŽ|                      ||||d¬¦  «        }t          |j	        |j
        |j        |j        |j        t          |j        |j        t           j        k    rdnd¦  «        |t          j        k    r|j        nd	¬
¦  «        }||fS |t          |d|j        |j        dd|j        › �¬¦  «        fS )uÙ   
        Quy trÃ¬nh chuáº©n hÃ³a Waystone cho Stage 3 Map Device:
        Tá»± Ä‘á»™ng Ä‘Ã¡nh giÃ¡, nÃ¢ng cáº¥p Normal/Magic lÃªn Rare tá»‘i Æ°u,
        hoáº·c Ä‘á»� xuáº¥t reroll/skip náº¿u dÃ­nh Brick mod.
        )rN   rO   rP   rQ   Tr   r-   rX   )rN   rO   rQ   rP   rV   é   r   zSafe Rerolled Mod)r'   r(   r)   r*   r+   r,   r.   Fu$   KhÃ´ng thá»ƒ chuáº©n hÃ³a Waystone: )rU   r   r   r3   r)   r    r#   rZ   r&   r'   r(   r7   r*   r+   Úmaxr,   r   r   r.   Úvalue)r?   rN   rO   rQ   rP   r4   ÚresÚupgradeds           r   Úprepare_optimal_waystonez,WaystoneAutoCrafter.prepare_optimal_waystoneâ   si  € ð ×+Ò+ØØ'Ø+Ø#ð	 ,ñ 
ô 
ˆð •[Ô+Ò+Ð+Ø�[ØØØ'œØ%œ_ØØðñ ô ð ð ð •kÔ/µÔ1NÐOÐOÐOØ×/Ò/Ø!Ø+Ø'Ø /Ø!%ð 0ñ ô ˆCõ $Ø”]Ø”]ØÔ'Ø&Ô4Ø&Ô4Ý Ô 4¸3Ô;KÍ~ÔObÒ;bÐ;b°a°aÐhiÑjÔjØ06½+Ô:WÒ0WÐ0W˜(Ô,Ð,Ð]pðñ ô ˆHð ˜S�=Ð à�ØØØ#œ?Ø!œØØG¸¼ÐGÐGð
ñ 
ô 
ð 
ð 	
r   N)r   )Tr   )r   TT)r   T)r   r   r   Ú__doc__r1   r@   Úclassmethodr
   r/   r   r	   r:   rM   r&   r   rU   r3   rZ   r]   rd   r   r   r   r<   r<   :   sÏ  € € € € € ðð ð'ð ' Cð 'ð 'ð 'ð 'ð ð0 U¨3°°S´	¨>Ô%:ð 0¸uÀTÈ4ÐPSÌ9À_Ô?Uð 0ð 0ð 0ñ „[ð0ð !%Øð$)ð $)àð$)ð ð$)ð ð	$)ð
 ð$)ð 
ð$)ð $)ð $)ð $)ðT Ø $Ø!%ð\ð \àð\ð ð\ð ð	\ð
 ð\ð ð\ð 
ð\ð \ð \ð \ð|B°,ð BÀ5ÈÈsÈÔCSð Bð Bð Bð Bð2 Ø $ð5
ð 5
àð5
ð ð5
ð ð	5
ð
 ð5
ð 
ˆ|˜[Ð(Ô	)ð5
ð 5
ð 5
ð 5
ð 5
ð 5
r   r<   N)re   Údataclassesr   Úenumr   Útypingr   r   r   r   r	   r
   Ú"src.assistant_tool.modifier_filterr   r   r   r&   r3   r<   r   r   r   ú<module>rk      so  ðð
ð 
ð "Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :à =Ð =Ð =Ð =Ð =Ð =ðð ð ð ð �Tñ ô ð ð&ð &ð &ð &ð &�$ñ &ô &ð &ð ðð ð ð ð ñ ô ñ „ðð ðð ð ð ð ñ ô ñ „ðð]
ð ]
ð ]
ð ]
ð ]
ñ ]
ô ]
ð ]
ð ]
ð ]
r   