§
    ú«½jù/  ã                  óÎ   — d Z ddlmZ ddlZddlmc mZ ddl	Z	ddl
Z
ddlZddlmZmZ ddlZddlmZmZmZmZmZmZ ddlmZ ddlmZmZmZmZmZ ddlm Z   G d	„ d
¦  «        Z!dS )aó  
Adversarial Stress Testing & Empirical Verification Suite:
Monster Pack Affixes, Leader Auras, Radial Placement & Coordinated AI (Milestone 3).

Verifies:
1. Affix scaling across levels 1 to 100: T1-T15 distribution, stat multiplier boundaries, no NaNs/negatives.
2. Deterministic seed reproduction: identical packs for same seed, distinct for different seeds.
3. Extreme minion counts (10-20): radial placement 1.2m <= r <= 3.5m, no overlapping coordinates.
4. Aura buff propagation (<= 14.0m) and instant decay (14.01m / 14.1m / leader death / overkill).
5. Coordinated pursuit alerting: single minion alert alerts all living pack members; dead/leashing uncorrupted.
6. Client-side Node.js pack populator, aura threshold (6.5m), and safe haven gating.
é    )ÚannotationsN)ÚListÚTuple)ÚMonsterRankÚMonsterAIStateÚPackAuraTypeÚMonsterAffixCategoryÚMonsterRuntimeStateÚMonsterPack)ÚMonsterProceduralEngine)Úget_tier_for_levelÚroll_monster_affixesÚapply_affixes_to_statsÚMONSTER_AFFIX_CATALOGÚ
TIER_SPECS)ÚMonsterAIEnginec                  óJ   — e Zd ZdZdd„Zdd„Zdd„Zdd„Zdd„Zdd	„Z	dd
„Z
dS )Ú"TestPackAffixesAndAurasAdversarialzGEmpirical adversarial test suite for Milestone 3 pack and aura systems.ÚreturnÚNonec                ó  — t          dd¦  «        D ]ô}t          |¦  «        }d}||k    }d}||k    }|r|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  }t          j        d|› d	|› �¦  «        d
z   d|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}x}x}}ŒõdD �]É}t          j        t          j        t          j        t          j        fD �]–}	t          d¦  «        D �]‚}
t!          ||	|
dz  |z   ¬¦  «        }|D �]ï}d}|j        }||k    }d}||k    }|r|s¿t          j        d||fd|||f¦  «        t          j        |¦  «        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}x}x}}|j                             ¦   «         D �]í\  }}g }t(          j        } ||¦  «        }|}|r
d}||k    }|}|�s±ddt          j        ¦   «         v st          j        t(          ¦  «        rt          j        t(          ¦  «        ndt          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }|                     |¦  «         |r‹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          j        |d ¦  «        i z  }t          j        d!|j        › �¦  «        d"z   d#|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}x}x}x}x}}�Œï�Œñt3          d$d%d&|¦  «        \  }}}g }t(          j        } ||¦  «        }|}|r
d}||k    }|}|�s”ddt          j        ¦   «         v st          j        t(          ¦  «        rt          j        t(          ¦  «        ndt          j        |¦  «        d't          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd't          j        |¦  «        dœz  }|                     |¦  «         |r‹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          j        |d ¦  «        i z  }d(d#|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}x}x}x}x}}g }t(          j        } ||¦  «        }|}|r
d}||k    }|}|�s”ddt          j        ¦   «         v st          j        t(          ¦  «        rt          j        t(          ¦  «        ndt          j        |¦  «        d)t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd)t          j        |¦  «        dœz  }|                     |¦  «         |r‹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          j        |d ¦  «        i z  }d(d#|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}x}x}x}x}}g }t(          j        } ||¦  «        }|}|r
d}||k    }|}|�s”ddt          j        ¦   «         v st          j        t(          ¦  «        rt          j        t(          ¦  «        ndt          j        |¦  «        d*t          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd*t          j        |¦  «        dœz  }|                     |¦  «         |r‹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          j        |d ¦  «        i z  }d(d#|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}x}x}x}x}}�Œ„�Œ˜�ŒËd+D �](}t          |¦  «        }d}||k    }d}||k    }|r|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}x}}t!          |t          j        d.¦  «        }t3          d/d&d0|¦  «        \  } }!}"g }d }#| |#k    }|}|rd }|!|k    }|}|r
d }$|"|$k    }%|%}|�sæt          j        d|fd1| |#f¦  «        d2t          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        nd2t          j        |#¦  «        d3œz  }&d4d5|&iz  }|                     |¦  «         |�rt          j        d|fd|!|f¦  «        d6t          j        ¦   «         v st          j        |!¦  «        rt          j        |!¦  «        nd6t          j        |¦  «        dœz  }dd|iz  }|                     |¦  «         |r‹t          j        d|%fd7|"|$f¦  «        d8t          j        ¦   «         v st          j        |"¦  «        rt          j        |"¦  «        nd8t          j        |$¦  «        d9œz  }'d:d;|'iz  }(|                     |(¦  «         t          j        |d ¦  «        i z  })d<d=|)iz  }*t          t          j
        |*¦  «        ¦  «        ‚dx}x}x}x}#x}x}x}%}$�Œ*dS )>zWVerifies affix scaling, tier boundaries, and positive finite stats across levels 1-100.é   ée   é   ©ú<=r   ©z%(py1)s <= %(py4)sz%(py4)s <= %(py6)sÚtier©Úpy1Úpy4Úpy6zLevel z produced invalid tier ú
>assert %(py8)sÚpy8N)r   é
   é   é2   éF   éU   éd   é   r*   )ÚlevelÚrankÚseed)z,%(py1)s <= %(py6)s
{%(py6)s = %(py4)s.tier
}z,%(py6)s
{%(py6)s = %(py4)s.tier
} <= %(py8)sÚaff)r    r!   r"   r$   úassert %(py10)sÚpy10ç        zC%(py7)s
{%(py7)s = %(py4)s
{%(py4)s = %(py2)s.isfinite
}(%(py5)s)
}ÚmathÚmult_val)Úpy2r!   Úpy5Úpy7©ú>)z%(py9)s > %(py12)s)Úpy9Úpy12z%(py14)sÚpy14r   zBad mult in z
>assert %(py17)sÚpy17g     @�@g      Y@ç      I@Úhpzassert %(py17)sÚdmgÚarm)r   éûÿÿÿé–   Útúassert %(py8)sé*   ç     @@g      4@)z%(py2)s > %(py5)sÚh)r5   r6   z%(py7)sr7   Úd)z%(py16)s > %(py19)sÚa)Úpy16Úpy19z%(py21)sÚpy21zassert %(py24)sÚpy24)Úranger   Ú
@pytest_arÚ_call_reprcompareÚ	_safereprÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ_format_assertmsgÚAssertionErrorÚ_format_explanationr   ÚCOMMONÚMAGICÚRAREÚBOSSr   r   Ústat_multipliersÚitemsr3   ÚisfiniteÚappendÚ_format_boolopÚaffix_idr   )+ÚselfÚlvlr   Ú@py_assert0Ú@py_assert2Ú@py_assert5Ú@py_assert3Ú@py_format7Ú@py_format9r-   r.   Úaffixesr/   Ú@py_assert7Ú@py_format11Úmult_keyr4   Ú@py_assert1Ú@py_assert6Ú@py_assert11Ú@py_assert10Ú@py_format8Ú@py_format13Ú@py_format15Ú@py_format16Ú@py_format18r?   r@   rA   Úboundary_lvlrD   ÚaffsrH   rI   rJ   Ú@py_assert4Ú@py_assert18Ú@py_assert17Ú@py_format6Ú@py_format20Ú@py_format22Ú@py_format23Ú@py_format25s+                                              úWC:\Projects\FreeExile\tests\security_fuzzing\test_pack_affixes_and_auras_adversarial.pyÚ7test_affix_scaling_levels_1_to_100_no_nans_or_negativeszZTestPackAffixesAndAurasAdversarial.test_affix_scaling_levels_1_to_100_no_nans_or_negatives+   s;  € å˜˜C‘=”=ð 	Pð 	PˆCÝ% cÑ*Ô*ˆDØÐO�1˜’?ÐO ÐO˜ ’?ÐOÐOÐOÐOÐOÕOÔOÐOÐOÐOÐOÐO�1˜ ÐOÑOÔOÕOÔO�1ÑOÔOÐOÕOÔOÑOÔOÐOÐOÕOÔO˜ÑOÔOÐOÕOÔO˜ÑOÔOÐOÐOÕOÔO ÑOÔOÐOÐOÑOÐOÕOÔOÐ$O¨SÐ$OÐ$OÈÐ$OÐ$OÑOÔOÐOÑOÐOÐOÐOÑOÐOÕOÕOÔOÐOÑOÔOÑOÔOÐOÐOÐOÐOÐOÐOÐOÐOÐOÐOà/ð 	<ñ 	<ˆCÝ$Ô+­[Ô->ÅÔ@PÕR]ÔRbÐcð 
<ñ 
<�Ý! !™HœHð 	<ñ 	<�DÝ2¸À4ÈdÐUXÉjÐ[^ÑN^Ð_Ñ_Ô_�GØ&ð mñ m˜Ø Ð2 C¤HÐ2˜q HÒ2Ð2°Ð2 H°Ò2Ð2Ð2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2Ð2˜q H°Ð2Ñ2Ô2Õ2Ô2˜qÑ2Ô2Ð2Õ2Ô2Ñ2Ô2Ð2Ð2Õ2Ô2 CÑ2Ô2Ð2Õ2Ô2 CÑ2Ô2Ð2Ð2Õ2Ô2 HÑ2Ô2Õ2Ô2°Ñ2Ô2Ð2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ø25Ô2F×2LÒ2LÑ2NÔ2Nð mñ mÑ.˜H hØlÐl¥4¤=Ðl = =°Ñ#:Ô#:ÐlÐ#:ÐlÐ#:ÐlÈ#Ðl¸xÈ#º~ÐlÐlÐlÐlÑlÐlÐlÕlÔlÑlÔlÐlÐlÕlÔl¥4ÑlÔlÐlÕlÔl¥4ÑlÔlÐlÐlÕlÔl =ÑlÔlÐlÕlÔlÑlÔlÐlÐlÕlÔl°ÑlÔlÐlÕlÔl°ÑlÔlÐlÐlÕlÔlÐ#:ÑlÔlÐlÐlÑlÐlÐl×lÒlÐlÑlÔlÐlÐ#:ÐlÕlÔlÐlÐlÐlÐl¸xÈ#ÐlÑlÔlÐlÕlÔlÑlÔlÐlÐlÕlÔl¸xÑlÔlÐlÕlÔl¸xÑlÔlÐlÐlÕlÔlÈ#ÑlÔlÐlÐlÑlÐlÐlÐlÐlÐlÑlÐlÐl×lÒlÐlÑlÔlÐlÕlÔlÐlÐlÑlÔlÐlÑlÐlÕlÔlÐOlÐ^aÔ^jÐOlÐOlÑlÔlÐlÑlÐlÐlÐlÑlÐlÕlÕlÔlÐlÑlÔlÑlÔlÐlÐlÐlÐlÐlÐlÐlÐlÐlÐlÐlÐlÐlÑlñmå#9¸&À%ÈÈwÑ#WÔ#W‘L�B˜˜SØ9Ð9�4œ=Ð9˜=˜=¨Ñ,Ô,Ð9Ð,Ð9Ð,Ð9°cÐ9°°c²Ð9Ð9Ð9Ð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¨Ñ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Ð9Ð9Ð9Ð9°°cÐ9Ñ9Ô9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9°Ñ9Ô9Ð9Õ9Ô9°Ñ9Ô9Ð9Ð9Õ9Ô9°cÑ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Ð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Ð9Ø;Ð;�4œ=Ð;˜=˜=¨Ñ-Ô-Ð;Ð-Ð;Ð-Ð;¸Ð;°#¸²)Ð;Ð;Ð;Ð;Ñ;Ð;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô;�4Ñ;Ô;Ð;Õ;Ô;�4Ñ;Ô;Ð;Ð;Õ;Ô;˜=Ñ;Ô;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô;¨Ñ;Ô;Ð;Õ;Ô;¨Ñ;Ô;Ð;Ð;Õ;Ô;Ð-Ñ;Ô;Ð;Ð;Ñ;Ð;Ð;×;Ò;Ð;Ñ;Ô;Ð;Ð-Ð;Õ;Ô;Ð;Ð;Ð;Ð;°#¸Ð;Ñ;Ô;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô;°#Ñ;Ô;Ð;Õ;Ô;°#Ñ;Ô;Ð;Ð;Õ;Ô;¸Ñ;Ô;Ð;Ð;Ñ;Ð;Ð;Ð;Ð;Ð;Ñ;Ð;Ð;×;Ò;Ð;Ñ;Ô;Ð;Õ;Ô;Ð;Ð;Ñ;Ô;Ð;Ñ;Ð;Ð;Ð;Ð;Ð;Ñ;Ð;Õ;Õ;Ô;Ð;Ñ;Ô;Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ø;Ð;�4œ=Ð;˜=˜=¨Ñ-Ô-Ð;Ð-Ð;Ð-Ð;¸Ð;°#¸²)Ð;Ð;Ð;Ð;Ñ;Ð;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô;�4Ñ;Ô;Ð;Õ;Ô;�4Ñ;Ô;Ð;Ð;Õ;Ô;˜=Ñ;Ô;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô;¨Ñ;Ô;Ð;Õ;Ô;¨Ñ;Ô;Ð;Ð;Õ;Ô;Ð-Ñ;Ô;Ð;Ð;Ñ;Ð;Ð;×;Ò;Ð;Ñ;Ô;Ð;Ð-Ð;Õ;Ô;Ð;Ð;Ð;Ð;°#¸Ð;Ñ;Ô;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô;°#Ñ;Ô;Ð;Õ;Ô;°#Ñ;Ô;Ð;Ð;Õ;Ô;¸Ñ;Ô;Ð;Ð;Ñ;Ð;Ð;Ð;Ð;Ð;Ñ;Ð;Ð;×;Ò;Ð;Ñ;Ô;Ð;Õ;Ô;Ð;Ð;Ñ;Ô;Ð;Ñ;Ð;Ð;Ð;Ð;Ð;Ñ;Ð;Õ;Õ;Ô;Ð;Ñ;Ô;Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ñ;ñ	<ñ
<ð )ð 	-ñ 	-ˆLÝ" <Ñ0Ô0ˆAØÐ�1˜’<Ð˜RÐ˜˜R’<ÐÐÐÐÐÕÔÐÐÐÐÐ�1˜˜RÐÑÔÕÔ�1ÑÔÐÕÔÑÔÐÐÕÔ˜ÑÔÐÕÔ˜ÑÔÐÐÕÔ˜RÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐÐÐÝ'¨µkÔ6FÈÑKÔKˆDÝ,¨U°D¸$ÀÑEÔE‰GˆAˆq�!Ø,Ð,�qÐ,�1�q’5Ð,Ð,Ð,Ð,Ð, Ð,˜Q šUÐ,Ð,Ð,Ð,Ð,¨1Ð, q¨1¢uÐ,Ð,Ð,Ð,Ñ,Õ,Ô,Ð,Ð,Ð,Ð,�1�qÐ,Ñ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,�1Ñ,Ô,Ð,Õ,Ô,�1Ñ,Ô,Ð,Ð,Õ,Ô,�qÑ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Ð,×,Ò,Ð,Ñ,Ô,Ð,Ð,Ñ,Õ,Ô,Ð,Ð,Ð,Ð,˜Q Ð,Ñ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,˜QÑ,Ô,Ð,Õ,Ô,˜QÑ,Ô,Ð,Ð,Õ,Ô, Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Ð,×,Ò,Ð,Ñ,Ô,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð, q¨1Ð,Ñ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô, qÑ,Ô,Ð,Õ,Ô, qÑ,Ô,Ð,Ð,Õ,Ô,¨1Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Ð,×,Ò,Ð,Ñ,Ô,Ð,Õ,Ô,Ð,Ð,Ñ,Ô,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ñ,ð	-ð 	-ó    c                óH  — t          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        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d	x}x}}t          d
d¦  «        D �]X}t          |         }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        |¦  «        dœz  }t          j        d|› d�¦  «        dz   d|iz  }t          t          j	        |¦  «        ¦  «        ‚d	x}x}}d„ |D ¦   «         }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        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d	x}x}}�ŒZt          d„ t          D ¦   «         ¦  «        }	t          d„ t          D ¦   «         ¦  «        }
|	d         }|
d         }||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d	x}x}}|	d         }|
d         }||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d	x}x}}|	d         }|
d         }||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d	x}x}}g }|	d         }d}||k    }|}|r|
d         }d
}||k    }|}|�st          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        d œz  }d!d|iz  }|                     |¦  «         |r`t          j        d|fd"||f¦  «        t          j        |¦  «        t          j        |¦  «        d#œz  }d$d%|iz  }|                     |¦  «         t          j        |d&¦  «        i z  }d'd(|iz  }t          t          j	        |¦  «        ¦  «        ‚d	x}x}x}x}x}x}x}}d	S ))zWVerifies catalog completeness and monotonic progression from T1 (Apex) to T15 (Novice).r   ©ú==)z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sÚlenr   ©Úpy0r    Úpy3r"   rE   r$   Nr   é   é   rk   zTier z missing affix categoriesr#   c                ó   — h | ]	}|j         ’Œ
S © )Úcategory)Ú.0rJ   s     r‚   ú	<setcomp>z[TestPackAffixesAndAurasAdversarial.test_catalog_affixes_and_monotonicity.<locals>.<setcomp>L   s   € Ð6Ð6Ð6¨˜!œ*Ð6Ð6Ð6r„   Ú
categoriesc              3  ó2   K  — | ]}|d          dk    ¯|V — ŒdS )r   r   Nr�   ©r‘   Úss     r‚   ú	<genexpr>z[TestPackAffixesAndAurasAdversarial.test_catalog_affixes_and_monotonicity.<locals>.<genexpr>P   s*   è è € Ð?Ð?˜Q°°&´	¸Q²°�q°°°°Ð?Ð?r„   c              3  ó2   K  — | ]}|d          dk    ¯|V — ŒdS )r   r   Nr�   r•   s     r‚   r—   z[TestPackAffixesAndAurasAdversarial.test_catalog_affixes_and_monotonicity.<locals>.<genexpr>Q   s*   è è € ÐAÐA˜a°°6´¸b²°˜°°°°ÐAÐAr„   Úhp_mr8   )z%(py1)s > %(py4)s©r    r!   úassert %(py6)sr"   Údmg_mÚarm_mÚmin_lvlr)   )z%(py3)s == %(py6)s)r‹   r"   z%(py8)s)z%(py11)s == %(py14)s)Úpy11r<   z%(py16)srK   r   zassert %(py19)srL   )rˆ   r   rP   rQ   rS   rT   rU   rR   rW   rX   rO   rV   Únextr   r`   ra   )rc   rf   rg   rz   ri   rj   rD   rk   r“   Út1_specÚt15_specre   rh   Ú@py_format5ro   rr   Ú@py_assert13Ú@py_assert12ru   Ú@py_format17rw   r~   s                         r‚   Ú%test_catalog_affixes_and_monotonicityzHTestPackAffixesAndAurasAdversarial.test_catalog_affixes_and_monotonicityF   s®  € åÕ(Ñ)Ô)Ð/¨RÐ/Ð)¨RÒ/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/Ð)¨RÐ/Ñ/Ô/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/�sÑ/Ô/Ð/Õ/Ô/�sÑ/Ô/Ð/Ð/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/Õ(Ñ/Ô/Ð/Õ/Ô/Õ(Ñ/Ô/Ð/Ð/Õ/Ô/Ð)Ñ/Ô/Õ/Ô/¨RÑ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ý�q˜"‘”ð 	(ñ 	(ˆAÝ+¨AÔ.ˆGÝ�w‘<”<ÐJ 1ÐJ�< 1Ò$ÐJÐJÑJÕJÔJÐJÐJÐJÐJ�< 1ÐJÑJÔJÐJÕJÔJÑJÔJÐJÐJÕJÔJ•3ÑJÔJÐJÕJÔJ•3ÑJÔJÐJÐJÐJÕJÔJÑJÔJÐJÐJÕJÔJ�wÑJÔJÐJÕJÔJ�wÑJÔJÐJÐJÕJÔJ�<ÑJÔJÕJÔJ 1ÑJÔJÐJÐJÑJÐJÕJÔJÐ&J¨aÐ&JÐ&JÐ&JÑJÔJÐJÑJÐJÐJÐJÑJÐJÕJÕJÔJÐJÑJÔJÑJÔJÐJÐJÐJÐJÐJÐJÐJØ6Ð6¨gÐ6Ñ6Ô6ˆJÝ�z‘?”?Ð' aÐ'�? aÒ'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'�? aÐ'Ñ'Ô'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'•3Ñ'Ô'Ð'Õ'Ô'•3Ñ'Ô'Ð'Ð'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'�zÑ'Ô'Ð'Õ'Ô'�zÑ'Ô'Ð'Ð'Õ'Ô'�?Ñ'Ô'Õ'Ô' aÑ'Ô'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ñ'õ Ð?Ð?¥*Ð?Ñ?Ô?Ñ?Ô?ˆÝÐAÐA¥:ÐAÑAÔAÑAÔAˆØ�vŒÐ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Ø�wÔÐ3 (¨7Ô"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Ð3Ñ3Ð3Ð3Ð3Ð3Ð3Ñ3Ð3Õ3Õ3Ô3Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ø�wÔÐ3 (¨7Ô"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Ð3Ñ3Ð3Ð3Ð3Ð3Ð3Ñ3Ð3Õ3Õ3Ô3Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3ØDÐDˆw�yÔ!ÐD RÐDÐ! RÒ'ÐDÐDÐDÐDÐD¨H°YÔ,?ÐDÀ1ÐDÐ,?À1Ò,DÐDÐDÐDÐDÑDÕDÔDÐDÐDÐDÐDÐ! RÐDÑDÔDÕDÔDÐ!ÑDÔDÕDÔD RÑ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Ð,?À1ÐDÑDÔDÕDÔDÐ,?ÑDÔDÕDÔDÀ1Ñ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Ð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ÐDÐDÐDÐDÐDÐDÐDr„   c                ó*  ‡!— t          ¦   «         Š!dD �	]=}‰!                     ddddd|d¦  «        }‰!                     ddddd|d¦  «        }|j        }|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	        |¦  «        t	          j	        |¦  «        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}x}x}}|j        }|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	        |¦  «        t	          j	        |¦  «        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}x}x}}|j        }t          |¦  «        }|j        }t          |¦  «        }||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	        |¦  «        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	        |¦  «        dœz  }
dd|
iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}x}x}}t          |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        }|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}}�Œ‰!                     ||¬¦  «        }‰!                     ||¬¦  «        }t          ||¦  «        D �]C\  }}g }|j        }|j        }||k    }|}|r|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  }	|                     |	¦  «         |rÜ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	          j        |d'¦  «        i z  }d(d)|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}x}x}x}x}x}}�ŒE�	Œ?ˆ!fd*„t-          d+¦  «        D ¦   «         } 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	        |¦  «        d0œz  }t	          j        d1¦  «        d2z   d|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}dS )3zXVerifies identical reproduction for identical seeds and diversity across distinct seeds.)rF   i	  iA4  Úp_detÚzone_tang_kiem_nhaié(   g      $@r+   r†   )zŒ%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.leader
}.monster_id
} == %(py10)s
{%(py10)s = %(py8)s
{%(py8)s = %(py6)s.leader
}.monster_id
}Úp1Úp2)rŠ   r5   r!   r"   r$   r1   zassert %(py12)sr;   N)zŽ%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.leader
}.leader_aura
} == %(py10)s
{%(py10)s = %(py8)s
{%(py8)s = %(py6)s.leader
}.leader_aura
})zŒ%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.minions
})
} == %(py12)s
{%(py12)s = %(py7)s(%(py10)s
{%(py10)s = %(py8)s.minions
})
}rˆ   )rŠ   r    r‹   r6   r7   r$   r1   r;   zassert %(py14)sr<   )zR%(py2)s
{%(py2)s = %(py0)s.monster_id
} == %(py6)s
{%(py6)s = %(py4)s.monster_id
}Úm1Úm2)rŠ   r5   r!   r"   rE   r$   )zJ%(py2)s
{%(py2)s = %(py0)s.max_hp
} == %(py6)s
{%(py6)s = %(py4)s.max_hp
}©r.   )zP%(py4)s
{%(py4)s = %(py2)s.current_x
} == %(py8)s
{%(py8)s = %(py6)s.current_x
}Ús1Ús2)r5   r!   r"   r$   z%(py10)sr1   )zV%(py14)s
{%(py14)s = %(py12)s.current_y
} == %(py18)s
{%(py18)s = %(py16)s.current_y
})r;   r<   rK   Úpy18z%(py20)sÚpy20r   zassert %(py23)sÚpy23c                óZ   •— h | ]'}‰                      d dddd|d¦  «        j        j        ’Œ(S )Úprª   é   r   é   )Úgenerate_packÚleaderÚ
monster_id)r‘   r–   Úengines     €r‚   r’   zfTestPackAffixesAndAurasAdversarial.test_deterministic_seed_reproduction_and_entropy.<locals>.<setcomp>j   s<   ø€ ÐyÐyÐyÐjk�6×'Ò'¨Ð-BÀBÈÈ1ÈaÐQRÑSÔSÔZÔeÐyÐyÐyr„   r¸   é   r8   )z/%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} > %(py6)sÚleadersr‰   z,Insufficient seed entropy in pack generationr#   )r   rº   r»   r¼   rP   rQ   rS   rT   rU   rR   rW   rX   Úleader_auraÚminionsrˆ   ÚzipÚmax_hpÚcreate_pack_runtime_statesÚ	current_xÚ	current_yr`   ra   rO   rV   )"rc   r.   r¬   r­   ro   rh   rl   Ú@py_assert9rg   rm   rt   rf   rz   rq   rp   ru   r®   r¯   ri   rj   Úst1Úst2r±   r²   re   r¤   r|   Ú@py_assert15Ú@py_format19Ú@py_format21r   Ú@py_format24r¿   r½   s"                                    @r‚   Ú0test_deterministic_seed_reproduction_and_entropyzSTestPackAffixesAndAurasAdversarial.test_deterministic_seed_reproduction_and_entropyW   ss  ø€ å(Ñ*Ô*ˆØ$ð 	Uñ 	UˆDØ×%Ò% gÐ/DÀbÈ$ÐPTÐVZÐ\]Ñ^Ô^ˆBØ×%Ò% gÐ/DÀbÈ$ÐPTÐVZÐ\]Ñ^Ô^ˆBØ”9Ð?�9Ô'Ð?¨2¬9Ð?¨9Ô+?Ð?Ð'Ð+?Ò?Ð?Ð?Ñ?Õ?Ô?Ð?Ð?Ð?Ð?Ð'Ð+?Ð?Ñ?Ô?Ð?Õ?Ô?Ñ?Ô?Ð?Ð?Õ?Ô?�2Ñ?Ô?Ð?Õ?Ô?�2Ñ?Ô?Ð?Ð?Õ?Ô?�9Ñ?Ô?Õ?Ô?Ð'Ñ?Ô?Ð?Õ?Ô?Ñ?Ô?Ð?Ð?Õ?Ô?¨2Ñ?Ô?Ð?Õ?Ô?¨2Ñ?Ô?Ð?Ð?Õ?Ô?¨9Ñ?Ô?Õ?Ô?Ð+?Ñ?Ô?Ð?Ð?Ñ?Ð?Ð?Ð?Ð?Ð?Ñ?Ð?Õ?Õ?Ô?Ð?Ñ?Ô?Ñ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ø”9ÐA�9Ô(ÐA¨B¬IÐA¨IÔ,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�2ÑAÔAÐAÕAÔA�2ÑAÔAÐAÐAÕAÔA�9ÑAÔAÕAÔAÐ(ÑAÔAÐAÕAÔAÑAÔAÐAÐAÕAÔA¨BÑAÔAÐAÕAÔA¨BÑAÔAÐAÐAÕAÔA¨IÑ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Ø”zÐ5•3�z‘?”?Ð5¨"¬*Ð5¥c¨*¡o¤oÐ5�? oÒ5Ð5Ð5Ñ5Õ5Ô5Ð5Ð5Ð5Ð5�? oÐ5Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5•3Ñ5Ô5Ð5Õ5Ô5•3Ñ5Ô5Ð5Ð5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5�rÑ5Ô5Ð5Õ5Ô5�rÑ5Ô5Ð5Ð5Õ5Ô5�zÑ5Ô5Õ5Ô5�?Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5¥cÑ5Ô5Ð5Õ5Ô5¥cÑ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 oÑ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Ý˜bœj¨"¬*Ñ5Ô5ð .ñ .‘��BØ”}Ð5¨¬Ð5�}¨Ò5Ð5Ð5Ð5Õ5Ô5Ð5Ð5Ð5Ð5�}¨Ð5Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5�rÑ5Ô5Ð5Õ5Ô5�rÑ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Ø”yÐ- B¤IÐ-�y IÒ-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-�y IÐ-Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô-�rÑ-Ô-Ð-Õ-Ô-�rÑ-Ô-Ð-Ð-Õ-Ô-�yÑ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô- BÑ-Ô-Ð-Õ-Ô- BÑ-Ô-Ð-Ð-Õ-Ô- IÑ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ñ-à×3Ò3°B¸TÐ3ÑBÔBˆCØ×3Ò3°B¸TÐ3ÑBÔBˆCÝ˜c 3™-œ-ð Uñ U‘��BØTÐT�r”|ÐT r¤|ÐT�| |Ò3ÐTÐTÐTÐTÐT¸¼ÐTÈÌÐT¸ÈÒ8TÐTÐTÐTÐTÑTÕTÔTÐTÐTÐTÐT�| |ÐTÑTÔTÐTÕTÔTÑTÔTÐTÐTÕTÔT�rÑTÔTÐTÕTÔT�rÑTÔTÐTÐTÕTÔT�|ÑTÔTÐTÕTÔTÑTÔTÐTÐTÕTÔT rÑTÔTÐTÕTÔT rÑ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Ð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Ñ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ñUð zÐyÐyÐyÕotÐuwÑoxÔoxÐyÑyÔyˆÝ�7‰|Œ|ÐP˜bÐPˆ|˜bÒ ÐPÐPÑPÕPÔPÐPÐPÐPÐPˆ|˜bÐPÑPÔPÐPÕPÔPÑPÔPÐPÐPÕPÔP�sÑPÔPÐPÕPÔP�sÑPÔPÐPÐPÐPÕPÔPÑPÔPÐPÐPÕPÔP�7ÑPÔPÐPÕPÔP�7ÑPÔPÐPÐPÕPÔPˆ|ÑPÔPÕPÔP˜bÑPÔPÐPÐPÑPÐPÕPÔPÐ"PÑPÔPÐPÑPÐPÐPÐPÑPÐPÕPÕPÔPÐPÑPÔPÑPÔPÐPÐPÐPÐPÐPÐPÐPÐPÐPr„   c                ó  — t          ¦   «         }dD �]ñ}dD �]ê}|                     ddddd||¦  «        }|                     ||¬¦  «        }|d         }|d	d
…         }t          |¦  «        }||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	        |¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nddœz  }
dd|
iz  }t          t	          j        |¦  «        ¦  «        ‚d
x}}	|D �]}t          j        |j        |j        z
  |j        |j        z
  ¦  «        }d}||k    }d}||k    }|r|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  }t	          j        d|d›d�¦  «        dz   d|iz  }t          t	          j        |¦  «        ¦  «        ‚d
x}x}x}}�Œt#          t          |¦  «        ¦  «        D �]4}t#          |d	z   t          |¦  «        ¦  «        D �]}t          j        ||         j        ||         j        z
  ||         j        ||         j        z
  ¦  «        }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  }t	          j        d#|› d$|› d%|d&›d'�¦  «        d(z   d)|iz  }
t          t	          j        |
¦  «        ¦  «        ‚d
x}}�Œ�Œ6�Œì�Œód
S )*zWVerifies radial placement 1.2m <= r <= 3.5m and collision prevention for 10-20 minions.)r%   r   r¾   )r   éÊ   i/  i”  Úp_extrª   r¸   r>   r°   r   r   Nr†   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py5)srˆ   Úminion_statesÚcount)rŠ   r    r‹   r6   zassert %(py7)sr7   g333333ó?g      @r   r   Úrr   zMinion radius z.3fzm outside [1.2m, 3.5m]r#   r$   gš™™™™™©?r8   )z%(py0)s > %(py3)srI   )rŠ   r‹   zMinions z and z overlap at distance z.4fÚmz
>assert %(py5)sr6   )r   rº   rÄ   rˆ   rP   rQ   rS   rT   rU   rR   rW   rX   r3   ÚhypotrÅ   rÆ   rV   rO   )rc   r½   rÓ   r.   ÚpackÚstatesÚ	leader_strÒ   rf   rz   r}   rs   Úm_strÔ   re   rg   rh   ri   rj   ÚiÚjrI   ro   Ú@py_format4s                           r‚   Ú/test_extreme_minion_counts_and_radial_placementzRTestPackAffixesAndAurasAdversarial.test_extreme_minion_counts_and_radial_placementm   s´  € å(Ñ*Ô*ˆØ!ð 	]ñ 	]ˆEØ,ð ]ñ ]�Ø×+Ò+¨GÐ5JÈBÐPTÐVZÐ\`ÐbgÑhÔh�Ø×:Ò:¸4ÀdÐ:ÑKÔK�Ø" 1œI�	Ø & q r r¤
�Ý˜=Ñ)Ô)Ð2Ð)¨UÒ2Ð2Ð2Ñ2Õ2Ô2Ð2Ð2Ð2Ð2Ð)¨UÐ2Ñ2Ô2Ð2Õ2Ô2Ñ2Ô2Ð2Ð2Õ2Ô2•sÑ2Ô2Ð2Õ2Ô2•sÑ2Ô2Ð2Ð2Ð2Õ2Ô2Ñ2Ô2Ð2Ð2Õ2Ô2˜=Ñ2Ô2Ð2Õ2Ô2˜=Ñ2Ô2Ð2Ð2Õ2Ô2Ð)Ñ2Ô2Ð2Õ2Ô2Ñ2Ô2Ð2Ð2Õ2Ô2¨UÑ2Ô2Ð2Õ2Ô2¨UÑ2Ô2Ð2Ð2Ð2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2ð *ð ]ñ ]�DÝœ
 4¤>°IÔ4GÑ#GÈÌÐZcÔZmÑImÑnÔn�AØÐ\˜4 1Ò,Ð\¨Ð\ 1¨Ò,Ð\Ð\Ð\Ð\Ð\Õ\Ô\Ð\Ð\Ð\Ð\Ð\˜4 1¨Ð\Ñ\Ô\Õ\Ô\˜4Ñ\Ô\Ð\Õ\Ô\Ñ\Ô\Ð\Ð\Õ\Ô\ 1Ñ\Ô\Ð\Õ\Ô\ 1Ñ\Ô\Ð\Ð\Õ\Ô\¨Ñ\Ô\Ð\Ð\Ñ\Ð\Õ\Ô\Ð.\¸qÐ.\Ð.\Ð.\Ð.\Ñ\Ô\Ð\Ñ\Ð\Ð\Ð\Ñ\Ð\Õ\Õ\Ô\Ð\Ñ\Ô\Ñ\Ô\Ð\Ð\Ð\Ð\Ð\Ð\Ð\Ð\Ð\Ñ\õ �s =Ñ1Ô1Ñ2Ô2ð ]ñ ]�AÝ" 1 q¡5­#¨mÑ*<Ô*<Ñ=Ô=ð ]ñ ]˜Ý œJØ)¨!Ô,Ô6¸ÀqÔ9IÔ9SÑSØ)¨!Ô,Ô6¸ÀqÔ9IÔ9SÑSñô ˜ð $(Ð\˜q 4šxÐ\Ð\Ð\Õ\Ô\Ð\Ð\Ð\Ð\˜q 4Ð\Ñ\Ô\Ð\Õ\Ô\Ñ\Ô\Ð\Ð\Õ\Ô\˜qÑ\Ô\Ð\Õ\Ô\˜qÑ\Ô\Ð\Ð\Õ\Ô\ 4Ñ\Ô\Ð\Ð\Ñ\Ð\Õ\Ô\Ð)\°AÐ)\Ð)\¸AÐ)\Ð)\ÐTUÐ)\Ð)\Ð)\Ð)\Ñ\Ô\Ð\Ñ\Ð\Ð\Ð\Ñ\Ð\Õ\Õ\Ô\Ð\Ñ\Ô\Ñ\Ô\Ð\Ð\Ð\Ð\Ð\Ñ\ñ]ñ]ñ]ð	]ð 	]r„   c           	     óz  — t          ¦   «         }t          ¦   «         }|                     ddddddd¦  «        }|                     |¦  «        }|d         |d         }}d	\  |_        |_        |                     |d
d¬¦  «         |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  }t          j        d¦  «        dz   d|iz  }t!          t          j        |¦  «        ¦  «        ‚dx}x}x}
}	d|_        |                     |d
d¬¦  «         |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  }t          j        d¦  «        dz   d|iz  }t!          t          j        |¦  «        ¦  «        ‚dx}x}x}
}	d|_        |                     |d
d¬¦  «         |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  }t          j        d¦  «        dz   d|iz  }t!          t          j        |¦  «        ¦  «        ‚dx}x}x}
}	d|_        |                     |d
d¬¦  «         |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}
}	d|_        |                     |d
d¬¦  «         g }|j        }t          |¦  «        }
d}|
|k    }|}|r |j        }t          |¦  «        }d}||k    }|}|�s4t          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  }|                     |¦  «         |rù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          j        |d¦  «        i z  }d'd(|iz  }t!          t          j        |¦  «        ¦  «        ‚dx}x}x}x}
x}x}x}x}x}}d)|_        |                     |d
d¬¦  «         |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        |_        t.          j        |_        |                     |d
d¬¦  «         |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}
}	dS )*zYVerifies aura propagation at <=14.0m, decay at >14.0m, and instant clear on leader death.Úp_aurarª   r¸   r2   i+  é   r   r   )g      ,@r2   )rG   rG   çL7‰A`å ?©Ú
player_posÚdtr8   )zQ%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.active_buffs
})
} > %(py8)srˆ   Úminion)rŠ   r    r‹   r6   r$   zBuff not applied at 14.0mz
>assert %(py10)sr1   Ngš™™™™,@r†   )zR%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.active_buffs
})
} == %(py8)szBuff did not decay at 14.05mg333333,@zBuff did not decay at 14.10mg      @r0   )zS%(py7)s
{%(py7)s = %(py2)s(%(py5)s
{%(py5)s = %(py3)s.active_buffs
})
} == %(py10)s)r5   r‹   r6   r7   r1   z%(py12)sr;   )zY%(py19)s
{%(py19)s = %(py14)s(%(py17)s
{%(py17)s = %(py15)s.active_buffs
})
} == %(py22)sr»   )r<   Úpy15r=   rL   Úpy22z%(py24)srN   zassert %(py27)sÚpy27g      IÀ)r   r   rº   rÄ   rÅ   rÆ   Úupdate_packÚactive_buffsrˆ   rP   rQ   rS   rT   rU   rR   rV   rW   rX   Ú
current_hpr`   ra   ÚmonsterrÃ   r   ÚDEADÚai_state)rc   r½   Úair×   rØ   r»   ræ   rf   rz   rl   rp   rj   rm   ro   rÇ   Ú@py_assert8re   Ú@py_assert16r{   Ú@py_assert21Ú@py_assert20rt   r€   r�   Ú@py_format26Ú@py_format28s                             r‚   Ú.test_aura_buff_decay_stress_distance_and_deathzQTestPackAffixesAndAurasAdversarial.test_aura_buff_decay_stress_distance_and_death†   sã  € å(Ñ*Ô*ˆÝÑÔˆØ×#Ò# HÐ.CÀRÈÈcÐSVÐXYÑZÔZˆØ×2Ò2°4Ñ8Ô8ˆØ œ F¨1¤I�ˆð .7Ñ*ˆÔ˜&Ô*Ø
�Š�v¨.¸UˆÑCÔCÐCØÔ&ÐH�sÐ&Ñ'Ô'ÐH¨!ÐHÐ'¨!Ò+ÐHÐHÑHÕHÔHÐHÐHÐHÐHÐ'¨!ÐHÑHÔHÐHÕHÔHÑHÔHÐHÐHÕHÔH�sÑHÔHÐHÕHÔH�sÑHÔHÐHÐHÐHÕHÔHÑHÔHÐHÐHÕHÔH�6ÑHÔHÐHÕHÔH�6ÑHÔHÐHÐHÕHÔHÐ&ÑHÔHÕHÔHÐ'ÑHÔHÕHÔH¨!ÑHÔHÐHÐHÑHÐHÕHÔHÐ-HÑHÔHÐHÑHÐHÐHÐHÑHÐHÕHÕHÔHÐHÑHÔHÑHÔHÐHÐHÐHÐHÐHÐHÐHÐHÐHà ˆÔØ
�Š�v¨.¸UˆÑCÔCÐCØÔ&ÐL�sÐ&Ñ'Ô'ÐL¨1ÐLÐ'¨1Ò,ÐLÐLÑLÕLÔLÐLÐLÐLÐLÐ'¨1ÐLÑLÔLÐLÕLÔLÑLÔLÐLÐLÕLÔL�sÑLÔLÐLÕLÔL�sÑLÔLÐLÐLÐLÕLÔLÑLÔLÐLÐLÕLÔL�6ÑLÔLÐLÕLÔL�6ÑLÔLÐLÐLÕLÔLÐ&ÑLÔLÕLÔLÐ'ÑLÔLÕLÔL¨1ÑLÔLÐLÐLÑLÐLÕLÔLÐ.LÑLÔLÐLÑLÐLÐLÐLÑLÐLÕLÕLÔLÐLÑLÔLÑLÔLÐLÐLÐLÐLÐLÐLÐLÐLÐLà ˆÔØ
�Š�v¨.¸UˆÑCÔCÐCØÔ&ÐL�sÐ&Ñ'Ô'ÐL¨1ÐLÐ'¨1Ò,ÐLÐLÑLÕLÔLÐLÐLÐLÐLÐ'¨1ÐLÑLÔLÐLÕLÔLÑLÔLÐLÐLÕLÔL�sÑLÔLÐLÕLÔL�sÑLÔLÐLÐLÐLÕLÔLÑLÔLÐLÐLÕLÔL�6ÑLÔLÐLÕLÔL�6ÑLÔLÐLÐLÕLÔLÐ&ÑLÔLÕLÔLÐ'ÑLÔLÕLÔL¨1ÑLÔLÐLÐLÑLÐLÕLÔLÐ.LÑLÔLÐLÑLÐLÐLÐLÑLÐLÕLÕLÔLÐLÑLÔLÑLÔLÐLÐLÐLÐLÐLÐLÐLÐLÐLð ˆÔØ
�Š�v¨.¸UˆÑCÔCÐCØÔ&Ð+�sÐ&Ñ'Ô'Ð+¨!Ð+Ð'¨!Ò+Ð+Ð+Ñ+Õ+Ô+Ð+Ð+Ð+Ð+Ð'¨!Ð+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+�sÑ+Ô+Ð+Õ+Ô+�sÑ+Ô+Ð+Ð+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+�6Ñ+Ô+Ð+Õ+Ô+�6Ñ+Ô+Ð+Ð+Õ+Ô+Ð&Ñ+Ô+Õ+Ô+Ð'Ñ+Ô+Õ+Ô+¨!Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+àˆÔØ
�Š�v¨.¸UˆÑCÔCÐCØNÐN�6Ô&ÐN�sÐ&Ñ'Ô'ÐN¨1ÐNÐ'¨1Ò,ÐNÐNÐNÐNÐN°VÔ5HÐNµÐ5HÑ1IÔ1IÐNÈQÐNÐ1IÈQÒ1NÐNÐNÐNÐNÑNÕNÔNÐNÐNÐNÐNÐ'¨1ÐNÑNÔNÐNÕNÔNÑNÔNÐNÐNÕNÔN�sÑNÔNÐNÕNÔN�sÑNÔNÐNÐNÐNÕNÔNÑNÔNÐNÐNÕNÔN�6ÑNÔNÐNÕNÔN�6ÑNÔNÐNÐNÕNÔNÐ&ÑNÔNÕNÔNÐ'ÑNÔNÕNÔN¨1ÑNÔNÐNÐNÑNÐNÐNÐNÐNÐNÑNÐNÐN×NÒNÐNÑNÔNÐNÐNÐNÕNÔNÐNÐNÐNÐNÐ1IÈQÐNÑNÔNÐNÕNÔNÑNÔNÐNÐNÕNÔNµÑNÔNÐNÕNÔNµÑNÔNÐNÐNÐNÕNÔNÑNÔNÐNÐNÕNÔN°VÑNÔNÐNÕNÔN°VÑNÔNÐNÐNÕNÔNÐ5HÑNÔNÕNÔNÐ1IÑNÔNÕNÔNÈQÑNÔNÐNÐNÑNÐNÐNÐNÐNÐNÑNÐNÐN×NÒNÐNÑNÔNÐNÕNÔNÐNÐNÑNÔNÐNÑNÐNÐNÐNÐNÐNÑNÐNÕNÕNÔNÐNÑNÔNÑNÔNÐNÐNÐNÐNÐNÐNÐNÐNÐNÐNÐNÐNÐNÐNÐNÐNÐNÐNÐNÐNÐNà!ˆÔØ
�Š�v¨.¸UˆÑCÔCÐCØÔ&Ð,�sÐ&Ñ'Ô'Ð,¨1Ð,Ð'¨1Ò,Ð,Ð,Ñ,Õ,Ô,Ð,Ð,Ð,Ð,Ð'¨1Ð,Ñ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,�sÑ,Ô,Ð,Õ,Ô,�sÑ,Ô,Ð,Ð,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,�6Ñ,Ô,Ð,Õ,Ô,�6Ñ,Ô,Ð,Ð,Õ,Ô,Ð&Ñ,Ô,Õ,Ô,Ð'Ñ,Ô,Õ,Ô,¨1Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,à"œNÔ1ˆÔÝ(Ô-ˆŒØ
�Š�v¨.¸UˆÑCÔCÐCØÔ&Ð,�sÐ&Ñ'Ô'Ð,¨1Ð,Ð'¨1Ò,Ð,Ð,Ñ,Õ,Ô,Ð,Ð,Ð,Ð,Ð'¨1Ð,Ñ,Ô,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,�sÑ,Ô,Ð,Õ,Ô,�sÑ,Ô,Ð,Ð,Ð,Õ,Ô,Ñ,Ô,Ð,Ð,Õ,Ô,�6Ñ,Ô,Ð,Õ,Ô,�6Ñ,Ô,Ð,Ð,Õ,Ô,Ð&Ñ,Ô,Õ,Ô,Ð'Ñ,Ô,Õ,Ô,¨1Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,r„   c           	     ó†  — t          ¦   «         }t          ¦   «         }|                     ddddddd¦  «        }|                     |¦  «        }|D ]}t          j        |_        Œt          j        |d         _        d|d         _        t          j	        |d         _        |d         j
        d	z   |d         _        |d
         }|j        dz   |j        f}|                     ||d¬¦  «         |d         }|j        }	t          j        }
|	|
k    }|sÜt          j        d|fd|	|
f¦  «        t          j        |¦  «        t          j        |	¦  «        dt%          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |
¦  «        dœz  }t          j        d¦  «        dz   d|iz  }t-          t          j        |¦  «        ¦  «        ‚dx}x}	x}}
|d         }|j        }	t          j        }
|	|
k    }|sÜt          j        d|fd|	|
f¦  «        t          j        |¦  «        t          j        |	¦  «        dt%          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |
¦  «        dœz  }t          j        d¦  «        dz   d|iz  }t-          t          j        |¦  «        ¦  «        ‚dx}x}	x}}
|d         }|j        }	t          j        }
|	|
k    }|sÜt          j        d|fd|	|
f¦  «        t          j        |¦  «        t          j        |	¦  «        dt%          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |
¦  «        dœz  }t          j        d¦  «        dz   d|iz  }t-          t          j        |¦  «        ¦  «        ‚dx}x}	x}}
|d
         }|j        }	t          j        t          j        f}|	|v }|st          j        d|fd|	|f¦  «        t          j        |¦  «        t          j        |	¦  «        t          j        |¦  «        dœz  }dd|iz  }t-          t          j        |¦  «        ¦  «        ‚dx}x}	x}}|d         }|j        }	t          j        }
|	|
k    }|sÜt          j        d|fd |	|
f¦  «        t          j        |¦  «        t          j        |	¦  «        dt%          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |
¦  «        dœz  }t          j        d!¦  «        dz   d|iz  }t-          t          j        |¦  «        ¦  «        ‚dx}x}	x}}
|d         }|j        }	t          j	        }
|	|
k    }|sÜt          j        d|fd"|	|
f¦  «        t          j        |¦  «        t          j        |	¦  «        dt%          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |
¦  «        dœz  }t          j        d#¦  «        dz   d|iz  }t-          t          j        |¦  «        ¦  «        ‚dx}x}	x}}
dS )$z\Verifies alerting 1 minion alerts all alive pack members while preserving dead/leash states.Úp_coordrª   r&   r2   ix  r�   rá   r¹   g       @r+   g      à?râ   rã   r   r†   )zM%(py3)s
{%(py3)s = %(py1)s.ai_state
} == %(py7)s
{%(py7)s = %(py5)s.PURSUIT
}r   )r    r‹   r6   r7   zLeader failed to alertz
>assert %(py9)sr:   Nr   zMinion 1 failed to alerté   zMinion 4 failed to alert)Úin)z0%(py3)s
{%(py3)s = %(py1)s.ai_state
} in %(py6)s)r    r‹   r"   rE   r$   )zJ%(py3)s
{%(py3)s = %(py1)s.ai_state
} == %(py7)s
{%(py7)s = %(py5)s.DEAD
}z Dead minion resurrected by alert)zR%(py3)s
{%(py3)s = %(py1)s.ai_state
} == %(py7)s
{%(py7)s = %(py5)s.LEASH_RETURN
}zLeashing minion aborted leash)r   r   rº   rÄ   r   ÚIDLErï   rî   rì   ÚLEASH_RETURNÚspawn_xrÅ   rÆ   rê   ÚPURSUITrP   rQ   rR   rS   rT   rU   rV   rW   rX   ÚATTACK)rc   r½   rð   r×   rØ   r–   Útarget_mÚplayer_nearre   rf   rp   rz   rs   Ú@py_format10rg   ri   rj   s                    r‚   Ú&test_coordinated_pack_pursuit_alertingzITestPackAffixesAndAurasAdversarial.test_coordinated_pack_pursuit_alerting­   s*  € å(Ñ*Ô*ˆÝÑÔˆØ×#Ò# IÐ/DÀbÈ#ÈsÐTWÐYZÑ[Ô[ˆØ×2Ò2°4Ñ8Ô8ˆØð 	-ð 	-ˆAÝ'Ô,ˆAŒJˆJõ ,Ô0ˆˆqŒ	ÔØ"ˆˆqŒ	ÔÝ+Ô8ˆˆqŒ	ÔØ$ QœiÔ/°#Ñ5ˆˆqŒ	Ôð ˜!”9ˆØÔ)¨CÑ/°Ô1CÐDˆØ
�Š�v¨+¸%ˆÑ@Ô@Ð@à�aŒyÐUˆyÔ!ÐU¥^Ô%;ÐUÐ!Ð%;Ò;ÐUÐUÐUÕUÔUÐUÐUÐUÐUÐ!Ð%;ÐUÑUÔUÕUÔUˆyÑUÔUÕUÔUÐ!ÑUÔUÐUÕUÔUÑUÔUÐUÐUÕUÔU¥^ÑUÔUÐUÕUÔU¥^ÑUÔUÐUÐUÕUÔUÐ%;ÑUÔUÐUÐUÑUÐUÕUÔUÐ=UÑUÔUÐUÑUÐUÐUÐUÑUÐUÕUÕUÔUÐUÑUÔUÑUÔUÐUÐUÐUÐUÐUÐUÐUÐUÐUØ�aŒyÐWˆyÔ!ÐW¥^Ô%;ÐWÐ!Ð%;Ò;ÐWÐWÐWÕWÔWÐWÐWÐWÐWÐ!Ð%;ÐWÑWÔWÕWÔWˆyÑWÔWÕWÔWÐ!ÑWÔWÐWÕWÔWÑWÔWÐWÐWÕWÔW¥^ÑWÔWÐWÕWÔW¥^ÑWÔWÐWÐWÕWÔWÐ%;ÑWÔWÐWÐWÑWÐWÕWÔWÐ=WÑWÔWÐWÑWÐWÐWÐWÑWÐWÕWÕWÔWÐWÑWÔWÑWÔWÐWÐWÐWÐWÐWÐWÐWÐWÐWØ�aŒyÐWˆyÔ!ÐW¥^Ô%;ÐWÐ!Ð%;Ò;ÐWÐWÐWÕWÔWÐWÐWÐWÐWÐ!Ð%;ÐWÑWÔWÕWÔWˆyÑWÔWÕWÔWÐ!ÑWÔWÐWÕWÔWÑWÔWÐWÐWÕWÔW¥^ÑWÔWÐWÕWÔW¥^ÑWÔWÐWÐWÕWÔWÐ%;ÑWÔWÐWÐWÑWÐWÕWÔWÐ=WÑWÔWÐWÑWÐWÐWÐWÑWÐWÕWÕWÔWÐWÑWÔWÑWÔWÐWÐWÐWÐWÐWÐWÐWÐWÐWØ�aŒyÐTˆyÔ!ÐT¥nÔ&<½nÔ>SÐ%TÐTÐ!Ð%TÐTÐTÐTÐTÕTÔTÐTÐTÐTÐTÐ!Ð%TÐTÑTÔTÕTÔTˆyÑ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Ø�aŒyÐ\ˆyÔ!Ð\¥^Ô%8Ð\Ð!Ð%8Ò8Ð\Ð\Ð\Õ\Ô\Ð\Ð\Ð\Ð\Ð!Ð%8Ð\Ñ\Ô\Õ\Ô\ˆyÑ\Ô\Õ\Ô\Ð!Ñ\Ô\Ð\Õ\Ô\Ñ\Ô\Ð\Ð\Õ\Ô\¥^Ñ\Ô\Ð\Õ\Ô\¥^Ñ\Ô\Ð\Ð\Õ\Ô\Ð%8Ñ\Ô\Ð\Ð\Ñ\Ð\Õ\Ô\Ð:\Ñ\Ô\Ð\Ñ\Ð\Ð\Ð\Ñ\Ð\Õ\Õ\Ô\Ð\Ñ\Ô\Ñ\Ô\Ð\Ð\Ð\Ð\Ð\Ð\Ð\Ð\Ð\Ø�aŒyÐaˆyÔ!Ða¥^Ô%@ÐaÐ!Ð%@Ò@ÐaÐaÐaÕaÔaÐaÐaÐaÐaÐ!Ð%@ÐaÑaÔaÕaÔaˆyÑ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ÐBaÑ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Ðar„   c                óœ  — d}t          j        ddd|gddd¬¦  «        }t          j        |j                             ¦   «         ¦  «        }|d         }d}||u }|slt          j        d|fd	||f¦  «        t          j        |¦  «        t          j        |¦  «        d
œz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚dx}x}}dS )zdExecutes Node.js harness to empirically test client pack spawning, 6.5m aura, and safe haven gating.aµ  
        import { populateZonePacks, updateMonsterPackAI } from './client/webapp/js/engine/monster_pack_system.js';
        let idCounter = 1;
        const mockCreate = (cfg) => ({ id: cfg.id || 'm_' + idCounter++, hp: cfg.maxHp || 1000, ...cfg, hasAggro: false, activeAura: null });

        // Safe Haven Check: 0 packs
        const safePacks = populateZonePacks('zone_player_hideout', mockCreate);
        if (safePacks.length !== 0) throw new Error('Safe haven populated hostile packs!');

        // Wilderness Check: populated packs
        const wildEntities = populateZonePacks('zone_tang_kiem_nhai', mockCreate);
        if (wildEntities.length < 5) throw new Error('Wilderness failed to populate packs');
        const leader = wildEntities.find(e => e.isPackLeader);
        const minion = wildEntities.find(e => !e.isPackLeader && e.packId === leader.packId);
        if (!leader || !minion) throw new Error('Missing leader or minion');

        // Aura proximity check (threshold <= 6.5m)
        minion.wx = leader.wx + 5.0; minion.wy = leader.wy;
        updateMonsterPackAI(wildEntities, 0.033);
        if (!minion.activeAura) throw new Error('Minion missing active aura within 6.5m');

        minion.wx = leader.wx + 8.0;
        updateMonsterPackAI(wildEntities, 0.033);
        if (minion.activeAura !== null) throw new Error('Minion aura did not decay at 8.0m');

        // Leader death check
        minion.wx = leader.wx + 3.0;
        leader.hp = 0;
        updateMonsterPackAI(wildEntities, 0.033);
        if (minion.activeAura !== null) throw new Error('Minion aura did not decay on leader death');

        // Coordinated alerting check
        leader.hp = 1000;
        minion.hasAggro = true;
        updateMonsterPackAI(wildEntities, 0.033);
        if (!leader.hasAggro) throw new Error('Leader did not receive coordinated aggro from minion');

        console.log(JSON.stringify({ success: true, count: wildEntities.length }));
        Únodez--input-type=modulez-eT)Úcapture_outputÚtextÚcheckÚsuccess)Úis)z%(py1)s is %(py4)srš   r›   r"   N)Ú
subprocessÚrunÚjsonÚloadsÚstdoutÚstriprP   rQ   rR   rW   rX   )	rc   Únode_scriptÚresÚdatare   rh   rf   r£   ri   s	            r‚   Ú.test_client_monster_pack_system_node_empiricalzQTestPackAffixesAndAurasAdversarial.test_client_monster_pack_system_node_empiricalÈ   sù   € ð&ˆõN Œn˜fÐ&;¸TÀ;ÐOÐ`dÐkoÐw{Ð|Ñ|Ô|ˆÝŒz˜#œ*×*Ò*Ñ,Ô,Ñ-Ô-ˆØ�IŒÐ& $Ð&ˆ $Ð&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&ˆ $Ð&Ñ&Ô&Õ&Ô&ˆÑ&Ô&Õ&Ô& $Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&r„   N)r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rƒ   r§   rÎ   rÞ   r÷   r  r  r�   r„   r‚   r   r   (   s·   € € € € € ØQÐQð-ð -ð -ð -ð6Eð Eð Eð Eð"Qð Qð Qð Qð,]ð ]ð ]ð ]ð2%-ð %-ð %-ð %-ðNbð bð bð bð6+'ð +'ð +'ð +'ð +'ð +'r„   r   )"r  Ú
__future__r   ÚbuiltinsrS   Ú_pytest.assertion.rewriteÚ	assertionÚrewriterP   r  r3   r  Útypingr   r   ÚpytestÚserver.world.monster_typesr   r   r   r	   r
   r   Ú&server.world.monster_procedural_enginer   Ú"server.world.monster_affix_catalogr   r   r   r   r   Úserver.world.monster_ai_enginer   r   r�   r„   r‚   ú<module>r%     sw  ððð ð #Ð "Ð "Ð "Ð "Ð "Ø  € € € € € € € € € € € € €€€€Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð Ð Ð Ø €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð KÐ JÐ JÐ JÐ JÐ Jðð ð ð ð ð ð ð ð ð ð ð ð ð ð ;Ð :Ð :Ð :Ð :Ð :ðK'ð K'ð K'ð K'ð K'ñ K'ô K'ð K'ð K'ð K'r„   