§
    ÎŽ»jY  ã                   óX   — d Z ddlmZmZmZ ddlmZmZ ddlm	Z	m
Z
  G d„ d¦  «        ZdS )uà   
Savage Salvage & Deconstruction Engine for FreeExile.
Guarantees a permanent hard price floor for grinders by converting any discarded
equipment into Bloodstone Dust (Bá»¥i Huyáº¿t Cá»‘t) and assembling Primal Bloodstones.
é    )ÚDictÚAnyÚTuple)ÚSalvageYieldÚSavageCurrencyType)ÚGearItemÚ
ItemRarityc            
       óT   — e Zd ZdZd
d„Zdedefd„Z	 ddedede	eeef         fd	„Z
dS )ÚSalvageEngineé   ÚreturnNc                 ó0   — d| _         d| _        d| _        d S )Nr   )Útotal_items_salvagedÚtotal_dust_producedÚtotal_bloodstones_assembled)Úselfs    ú6C:\Projects\FreeExile\server\economy\salvage_engine.pyÚ__init__zSalvageEngine.__init__   s    € Ø$%ˆÔ!Ø#$ˆÔ Ø+,ˆÔ(Ð(Ð(ó    Úitemc                 óv  — d}i }|j         t          j        k    rd}n±|j         t          j        k    rdt	          |j        ¦  «        z   }n„|j         t          j        k    r+dt	          |j        ¦  «        dz  z   }|j        dk    rd|d<   nD|j         t          j        k    r/dt	          |j        ¦  «        dz  z   }d|d	<   |j        d
k    rd|d<   |j        dk    rt          |dz  ¦  «        }n|j        dk    rt          |dz  ¦  «        }|| j
        z  }|| j
        z  }t          ||||j        |j        ¬¦  «        S )zš
        Calculates dust shards and currency fragments from deconstructing gear.
        Formula scales with rarity, item level, and affix count.
        é   é   é   é   éK   ÚMANH_CO_COT_ANé   é   ÚMANH_U_MINH_COT_DINHéP   éU   g      ø?g      ô?)Údust_shardsÚprimal_bloodstones_assembledÚbonus_fragmentsÚ	item_uuidÚ	item_name)Úrarityr	   Ú	PHAM_PHAMÚ	LINH_PHAMÚlenÚaffixesÚCUC_PHAMÚ
item_levelÚ
THAN_THOAIÚintÚSHARDS_PER_BLOODSTONEr   r&   r'   )r   r   Úbase_shardsr%   Úfull_bloodstonesÚremainder_shardss         r   Úcalculate_yieldzSalvageEngine.calculate_yield   sa  € ð
 ˆØ*,ˆàŒ;�*Ô.Ò.Ð.ØˆKˆKØŒ[�JÔ0Ò0Ð0Ø�c $¤,Ñ/Ô/Ñ/ˆKˆKØŒ[�JÔ/Ò/Ð/Ø¥ D¤LÑ 1Ô 1°AÑ 5Ñ6ˆKØŒ "Ò$Ð$Ø45�Ð 0Ñ1øØŒ[�JÔ1Ò1Ð1Ø¥ D¤LÑ 1Ô 1°AÑ 5Ñ6ˆKØ67ˆOÐ2Ñ3ØŒ "Ò$Ð$Ø45�Ð 0Ñ1ð Œ?˜bÒ Ð Ý˜k¨CÑ/Ñ0Ô0ˆKˆKØŒ_ Ò"Ð"Ý˜k¨DÑ0Ñ1Ô1ˆKà&¨$Ô*DÑDÐØ&¨Ô)CÑCÐåØ#Ø)9Ø+Ø”nØ”nð
ñ 
ô 
ð 	
r   r   Úcurrent_player_dustc                 óÜ   — |                       |¦  «        }||j        z   }|| j        z  }|| j        z  }| xj        dz  c_        | xj        |j        z  c_        | xj        |z  c_        |||fS )z‘
        Executes salvage and updates player currency inventory.
        Returns: (yield_info, updated_player_dust, bloodstones_awarded)
        r   )r5   r#   r1   r   r   r   )r   r   r6   ÚresÚnew_total_dustÚawarded_bloodstonesÚremaining_dusts          r   Úprocess_salvagezSalvageEngine.process_salvage;   s‹   € ð ×"Ò" 4Ñ(Ô(ˆØ,¨s¬Ñ>ˆØ,°Ô0JÑJÐØ'¨$Ô*DÑDˆàÐ!Ô! QÑ&Ð!Ô!ØÐ Ô  C¤OÑ3Ð Ô ØÐ(Ô(Ð,?Ñ?Ð(Ô(à�NÐ$7Ð7Ð7r   )r   N)r   )Ú__name__Ú
__module__Ú__qualname__r1   r   r   r   r5   r0   r   r<   © r   r   r   r      s—   € € € € € ØÐð-ð -ð -ð -ð
%
 Hð %
°ð %
ð %
ð %
ð %
ðT $%ð8ð 8àð8ð !ð8ð 
ˆ|˜S #Ð%Ô	&ð	8ð 8ð 8ð 8ð 8ð 8r   r   N)Ú__doc__Útypingr   r   r   Úserver.economy.economy_typesr   r   Ú#server.world.primal_stones_craftingr   r	   r   r@   r   r   ú<module>rE      s›   ððð ð $Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DðA8ð A8ð A8ð A8ð A8ñ A8ô A8ð A8ð A8ð A8r   