§
    x¿jx0  ã                  ó  — 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mZmZmZmZmZ e
j        dd„¦   «         Z G d„ d	¦  «        Z G d
„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        ZdS )z‰
Tier 1 E2E Tests: Party Lifecycle, Nearby Radius Math, EXP Scaling,
Loot Scaling, 3 Allocation Modes, and Dynamic Monster Scaling (R1).
é    )ÚannotationsN)ÚGroundLootDropÚLootAllocationModeÚPartyMemberStateÚPartyScalingCalculatorÚPartyServiceÚreturnr   c                 ó   — t          ¦   «         S )N)r   © ó    úLC:\Projects\FreeExile\tests\e2e_social_party\test_tier1_party_and_scaling.pyÚ	party_svcr      s   € å‰>Œ>Ðr   c                  óB   — 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S )ÚTestTier1PartyLifecyclezeFeature 1: 6-Player Party Lifecycle (Create, Invite, Accept, Decline, Promote, Leave, Kick, Disband).r   r   r	   ÚNonec                óÚ  — |                      ddd¦  «        }|j        }d}||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œz  }dd	|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}}|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}|j
        }||v }|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}}|j
        d         }|j        }d}||k    }|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 S )NÚp1Ú	LeaderOneé   ©ú==©z1%(py2)s
{%(py2)s = %(py0)s.leader_id
} == %(py5)sÚp©Úpy0Úpy2Úpy5úassert %(py7)sÚpy7é   ©zM%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.members
})
} == %(py8)sÚlen©r   Úpy1Úpy3r   Úpy8úassert %(py10)sÚpy10©Úin©z/%(py1)s in %(py5)s
{%(py5)s = %(py3)s.members
}©r$   r%   r   )z-%(py3)s
{%(py3)s = %(py1)s.level
} == %(py6)s©r$   r%   Úpy6úassert %(py8)sr&   )Úcreate_partyÚ	leader_idÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚmembersr"   Úlevel)Úselfr   r   Ú@py_assert1Ú@py_assert4Ú@py_assert3Ú@py_format6Ú@py_format8Ú@py_assert2Ú@py_assert7Ú@py_assert6Ú@py_format9Ú@py_format11Ú@py_assert0Ú@py_assert5Ú@py_format7s                   r   Ú$test_party_create_initializes_leaderz<TestTier1PartyLifecycle.test_party_create_initializes_leader   sÕ  € Ø×"Ò" 4¨°bÑ9Ô9ˆØŒ{Ð"˜dÐ"ˆ{˜dÒ"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"ˆ{˜dÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆqÑ"Ô"Ð"Õ"Ô"ˆqÑ"Ô"Ð"Ð"Õ"Ô"ˆ{Ñ"Ô"Õ"Ô"˜dÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ø”9Ð"�s�9‰~Œ~Ð" Ð"ˆ~ Ò"Ð"Ð"Ñ"Õ"Ô"Ð"Ð"Ð"Ð"ˆ~ Ð"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"�sÑ"Ô"Ð"Õ"Ô"�sÑ"Ô"Ð"Ð"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"�1Ñ"Ô"Ð"Õ"Ô"�1Ñ"Ô"Ð"Ð"Õ"Ô"�9Ñ"Ô"Õ"Ô"ˆ~Ñ"Ô"Õ"Ô" Ñ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"ØÐ �q”yÐ ˆt�yÐ Ð Ð Ð Õ Ô Ð Ð Ð Ð ˆt�yÐ Ñ Ô Õ Ô ˆtÑ Ô Ð Õ Ô Ñ Ô Ð Ð Õ Ô �qÑ Ô Ð Õ Ô �qÑ Ô Ð Ð Õ Ô �yÑ Ô Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð Ð Ð ØŒy˜ŒÐ*ˆÔ$Ð*¨Ð*Ð$¨Ò*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð$¨Ð*Ñ*Ô*Õ*Ô*ˆÑ*Ô*Õ*Ô*Ð$Ñ*Ô*Õ*Ô*¨Ñ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*r   c                ó  — |                      ddd¦  «        }|                     |j        dd¦  «        }d}||u }|s—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          t          j
        |¦  «        ¦  «        ‚d x}}|                     |j        ddd¦  «        }d}||u }|s—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          t          j
        |¦  «        ¦  «        ‚d x}}|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}|j        }	||	v }|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}}	d S )Nr   r   r   Úp2T©Úis©z%(py0)s is %(py3)sÚinvited©r   r%   úassert %(py5)sr   Ú	MemberTwoé   Úacceptedé   r   r!   r"   r   r#   r'   r(   r)   r+   r,   r   r   )r0   Úinvite_playerÚparty_idr2   r3   r4   r5   r6   r7   r8   r9   Úaccept_inviter:   r"   )r<   r   r   rP   rB   r=   Ú@py_format4r@   rU   r>   rC   rD   rE   rF   rG   rA   s                   r   Ú!test_party_invite_and_accept_flowz9TestTier1PartyLifecycle.test_party_invite_and_accept_flow!   sé  € Ø×"Ò" 4¨°bÑ9Ô9ˆØ×)Ò)¨!¬*°d¸DÑAÔAˆØÐˆw˜$ˆÐÐÐÕÔÐÐÐÐˆw˜$ÐÑÔÐÕÔÑÔÐÐÕÔˆwÑÔÐÕÔˆwÑÔÐÐÕÔ˜$ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØ×*Ò*¨1¬:°t¸[È"ÑMÔMˆØÐˆx˜4ÐÐÐÐÕÔÐÐÐÐˆx˜4ÐÑÔÐÕÔÑÔÐÐÕÔˆxÑÔÐÕÔˆxÑÔÐÐÕÔ˜4ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØ”9Ð"�s�9‰~Œ~Ð" Ð"ˆ~ Ò"Ð"Ð"Ñ"Õ"Ô"Ð"Ð"Ð"Ð"ˆ~ Ð"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"�sÑ"Ô"Ð"Õ"Ô"�sÑ"Ô"Ð"Ð"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"�1Ñ"Ô"Ð"Õ"Ô"�1Ñ"Ô"Ð"Ð"Õ"Ô"�9Ñ"Ô"Õ"Ô"ˆ~Ñ"Ô"Õ"Ô" Ñ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"ØÐ �q”yÐ ˆt�yÐ Ð Ð Ð Õ Ô Ð Ð Ð Ð ˆt�yÐ Ñ Ô Õ Ô ˆtÑ Ô Ð Õ Ô Ñ Ô Ð Ð Õ Ô �qÑ Ô Ð Õ Ô �qÑ Ô Ð Ð Õ Ô �yÑ Ô Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð Ð Ð Ð Ð r   c                óH  — |                      ddd¦  «        }|                     |j        dd¦  «         |                     |j        d¦  «        }d}||u }|s—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          t	          j        |¦  «        ¦  «        ‚d x}}|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        }d}
d}d} |||
||¦  «        }d}||u }|�sGt	          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	        |¦  «        t	          j	        |
¦  «        t	          j	        |¦  «        t	          j	        |¦  «        t	          j	        |¦  «        t	          j	        |¦  «        dœ	z  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}x}x}
x}x}x}x}}d S )Nr   r   r   rL   TrM   rO   ÚdeclinedrQ   rR   r   r    r   r!   r"   r   r#   r'   r(   rS   rT   F)z�%(py13)s
{%(py13)s = %(py2)s
{%(py2)s = %(py0)s.accept_invite
}(%(py5)s
{%(py5)s = %(py3)s.party_id
}, %(py7)s, %(py9)s, %(py11)s)
} is %(py16)sr   )	r   r   r%   r   r   Úpy9Úpy11Úpy13Úpy16zassert %(py18)sÚpy18)r0   rW   rX   Údecline_inviter2   r3   r4   r5   r6   r7   r8   r9   r:   r"   rY   )r<   r   r   r]   rB   r=   rZ   r@   r>   rC   rD   rE   rF   Ú@py_assert8Ú@py_assert10Ú@py_assert12Ú@py_assert15Ú@py_assert14Ú@py_format17Ú@py_format19s                       r   Ú"test_party_invite_and_decline_flowz:TestTier1PartyLifecycle.test_party_invite_and_decline_flow*   sõ  € Ø×"Ò" 4¨°bÑ9Ô9ˆØ×Ò ¤
¨D°$Ñ7Ô7Ð7Ø×+Ò+¨A¬J¸Ñ=Ô=ˆØÐˆx˜4ÐÐÐÐÕÔÐÐÐÐˆx˜4ÐÑÔÐÕÔÑÔÐÐÕÔˆxÑÔÐÕÔˆxÑÔÐÐÕÔ˜4ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØ”9Ð"�s�9‰~Œ~Ð" Ð"ˆ~ Ò"Ð"Ð"Ñ"Õ"Ô"Ð"Ð"Ð"Ð"ˆ~ Ð"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"�sÑ"Ô"Ð"Õ"Ô"�sÑ"Ô"Ð"Ð"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"�1Ñ"Ô"Ð"Õ"Ô"�1Ñ"Ô"Ð"Ð"Õ"Ô"�9Ñ"Ô"Õ"Ô"ˆ~Ñ"Ô"Õ"Ô" Ñ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"àÔ&ÐR q¤zÐR°4ÐR¸ÐRÀbÐRÐ&Ð& z°4¸ÀbÑIÔIÐRÈUÐRÐIÈUÐRÐRÐRÑRÕRÔRÐRÐRÐRÐRÐIÈUÐRÑRÔRÐRÕRÔRÑRÔRÐRÐRÕRÔRˆyÑRÔRÐRÕRÔRˆyÑRÔRÐRÐRÕRÔRÐ&ÑRÔRÐRÕRÔRÑRÔRÐRÐRÕRÔR qÑRÔRÐRÕRÔR qÑRÔRÐRÐRÕRÔR zÑRÔRÕRÔR°4ÑRÔRÕRÔR¸ÑRÔRÕRÔRÀbÑRÔRÕRÔRÐIÑRÔRÕRÔRÈUÑRÔRÐRÐRÑRÐRÐRÐRÐRÐRÑRÐRÕRÕRÔRÐRÑRÔRÑRÔRÐRÐRÐRÐRÐRÐRÐRÐRÐRÐRÐRÐRÐRÐRÐRÐRÐRÐRÐRr   c                ó¦  — |                      ddd¦  «        }|                     |j        dd¦  «         |                     |j        ddd¦  «         |                     |j        dd¦  «        }d}||u }|s—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          t          j        |¦  «        ¦  «        ‚d x}}|j        }d}||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œz  }dd|iz  }
t          t          j        |
¦  «        ¦  «        ‚d x}x}	}d S )Nr   r   r   rL   rS   rT   TrM   rO   ÚpromotedrQ   rR   r   r   r   r   r   r   r   )r0   rW   rX   rY   Úpromote_leaderr2   r3   r4   r5   r6   r7   r8   r9   r1   )r<   r   r   rm   rB   r=   rZ   r@   r>   r?   rA   s              r   Útest_party_promote_leaderz1TestTier1PartyLifecycle.test_party_promote_leader3   s  € Ø×"Ò" 4¨°bÑ9Ô9ˆØ×Ò ¤
¨D°$Ñ7Ô7Ð7Ø×Ò ¤
¨D°+¸rÑBÔBÐBØ×+Ò+¨A¬J¸¸dÑCÔCˆØÐˆx˜4ÐÐÐÐÕÔÐÐÐÐˆx˜4ÐÑÔÐÕÔÑÔÐÐÕÔˆxÑÔÐÕÔˆxÑÔÐÐÕÔ˜4ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØŒ{Ð"˜dÐ"ˆ{˜dÒ"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"ˆ{˜dÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆqÑ"Ô"Ð"Õ"Ô"ˆqÑ"Ô"Ð"Ð"Õ"Ô"ˆ{Ñ"Ô"Õ"Ô"˜dÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"r   c                óô  — |                      ddd¦  «        }|                     |j        dd¦  «         |                     |j        ddd¦  «         |                     d¦  «        }d }||u}|s—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          t          j        |¦  «        ¦  «        ‚d x}}|j        }d}||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œz  }dd|iz  }
t          t          j        |
¦  «        ¦  «        ‚d x}x}	}|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 )Nr   r   r   rL   rS   rT   )úis not)z%(py0)s is not %(py3)sÚ	remainingrQ   rR   r   r   r   r   r   r   r    r!   r"   r#   r'   r(   )r0   rW   rX   rY   Úleave_partyr2   r3   r4   r5   r6   r7   r8   r9   r1   r:   r"   )r<   r   r   rr   rB   r=   rZ   r@   r>   r?   rA   rC   rD   rE   rF   s                  r   Ú!test_party_leave_and_auto_promotez9TestTier1PartyLifecycle.test_party_leave_and_auto_promote;   sI  € Ø×"Ò" 4¨°bÑ9Ô9ˆØ×Ò ¤
¨D°$Ñ7Ô7Ð7Ø×Ò ¤
¨D°+¸rÑBÔBÐBØ×)Ò)¨$Ñ/Ô/ˆ	Ø $Ð$ˆy Ð$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$ˆy Ð$Ñ$Ô$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$ˆyÑ$Ô$Ð$Õ$Ô$ˆyÑ$Ô$Ð$Ð$Õ$Ô$ Ñ$Ô$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$ØÔ"Ð* dÐ*Ð" dÒ*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð" dÐ*Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*ˆyÑ*Ô*Ð*Õ*Ô*ˆyÑ*Ô*Ð*Ð*Õ*Ô*Ð"Ñ*Ô*Õ*Ô* dÑ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ØÔ$Ð*�sÐ$Ñ%Ô%Ð*¨Ð*Ð%¨Ò*Ð*Ð*Ñ*Õ*Ô*Ð*Ð*Ð*Ð*Ð%¨Ð*Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*�sÑ*Ô*Ð*Õ*Ô*�sÑ*Ô*Ð*Ð*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*�9Ñ*Ô*Ð*Õ*Ô*�9Ñ*Ô*Ð*Ð*Õ*Ô*Ð$Ñ*Ô*Õ*Ô*Ð%Ñ*Ô*Õ*Ô*¨Ñ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*r   c                ó"  — |                      ddd¦  «        }|                     |j        dd¦  «         |                     |j        ddd¦  «         |                     |j        dd¦  «        }d}||u }|s—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          t          j        |¦  «        ¦  «        ‚d x}}d}|j        }	||	v}|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}}	|                     |j        d¦  «        }d}||u }|s—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          t          j        |¦  «        ¦  «        ‚d x}}|j        }|j        }||v}|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}}d S )Nr   r   r   rL   rS   rT   TrM   rO   ÚkickedrQ   rR   r   )únot in)z3%(py1)s not in %(py5)s
{%(py5)s = %(py3)s.members
}r   r,   r   r   Ú	disbanded)zQ%(py2)s
{%(py2)s = %(py0)s.party_id
} not in %(py6)s
{%(py6)s = %(py4)s.parties
}r   )r   r   Úpy4r.   r/   r&   )r0   rW   rX   rY   Úkick_memberr2   r3   r4   r5   r6   r7   r8   r9   r:   Údisband_partyÚparties)r<   r   r   rv   rB   r=   rZ   r@   rG   r>   rA   rx   rH   r?   rI   rE   s                   r   Útest_party_kick_and_disbandz3TestTier1PartyLifecycle.test_party_kick_and_disbandD   s  € Ø×"Ò" 4¨°bÑ9Ô9ˆØ×Ò ¤
¨D°$Ñ7Ô7Ð7Ø×Ò ¤
¨D°+¸rÑBÔBÐBØ×&Ò& q¤z°4¸Ñ>Ô>ˆØÐˆv˜ˆ~ÐÐÐÕÔÐÐÐÐˆv˜ÐÑÔÐÕÔÑÔÐÐÕÔˆvÑÔÐÕÔˆvÑÔÐÐÕÔ˜ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐ$˜1œ9Ð$ˆt˜9Ð$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$ˆt˜9Ð$Ñ$Ô$Õ$Ô$ˆtÑ$Ô$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$˜1Ñ$Ô$Ð$Õ$Ô$˜1Ñ$Ô$Ð$Ð$Õ$Ô$˜9Ñ$Ô$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ø×+Ò+¨A¬J¸Ñ=Ô=ˆ	Ø Ð ˆy˜DÐ Ð Ð Ð Õ Ô Ð Ð Ð Ð ˆy˜DÐ Ñ Ô Ð Õ Ô Ñ Ô Ð Ð Õ Ô ˆyÑ Ô Ð Õ Ô ˆyÑ Ô Ð Ð Õ Ô ˜DÑ Ô Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð ØŒzÐ2 Ô!2Ð2ˆzÐ!2Ð2Ð2Ð2Ð2Õ2Ô2Ð2Ð2Ð2Ð2ˆzÐ!2Ð2Ñ2Ô2Ð2Õ2Ô2Ñ2Ô2Ð2Ð2Õ2Ô2ˆqÑ2Ô2Ð2Õ2Ô2ˆqÑ2Ô2Ð2Ð2Õ2Ô2ˆzÑ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Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2r   N©r   r   r	   r   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__rJ   r[   rk   ro   rt   r}   r   r   r   r   r      s–   € € € € € ØoÐoð+ð +ð +ð +ð!ð !ð !ð !ðSð Sð Sð Sð#ð #ð #ð #ð+ð +ð +ð +ð	3ð 	3ð 	3ð 	3ð 	3ð 	3r   r   c                  ó:   — e Zd ZdZdd„Zdd„Zdd„Zdd	„Zdd
„ZdS )ÚTestTier1NearbyRadiusMathzHFeature 2: Nearby Radius Math (15.0m threshold, same zone, instance_id).r   r   r	   r   c                ó’  — |                      ddddd¦  «        }|                     |j        dd¦  «         |                     |j        ddddd¦  «         d\  |j        d         _        |j        d         _        d	\  |j        d         _        |j        d         _        |                     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}}d S )Nr   ÚLeaderé   Ú	zone_wildÚinst_1rL   ÚBuddy©ç        rŒ   )ç      $@g      @ç      .@©ÚradiusrV   r   ©z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sr"   Únearby©r   r$   r%   r.   r/   r&   ©r0   rW   rX   rY   r:   ÚxÚyÚget_nearby_membersr"   r2   r3   r4   r5   r6   r7   r8   r9   ©	r<   r   r   r’   rB   rH   r>   rI   rE   s	            r   Ú'test_nearby_radius_under_fifteen_meterszATestTier1NearbyRadiusMath.test_nearby_radius_under_fifteen_metersS   óÈ  € Ø×"Ò" 4¨°2°{ÀHÑMÔMˆØ×Ò ¤
¨D°$Ñ7Ô7Ð7Ø×Ò ¤
¨D°'¸2¸{ÈHÑUÔUÐUØ/7Ñ,ˆŒ	�$ŒÔ˜1œ9 Tœ?Ô,Ø/8Ñ,ˆŒ	�$ŒÔ˜1œ9 Tœ?Ô,Ø×-Ò-¨d¸4Ð-Ñ@Ô@ˆÝ�6‰{Œ{Ð˜aÐˆ{˜aÒÐÐÐÕÔÐÐÐÐˆ{˜aÐÑÔÐÕÔÑÔÐÐÕÔ�sÑÔÐÕÔ�sÑÔÐÐÐÕÔÑÔÐÐÕÔ�6ÑÔÐÕÔ�6ÑÔÐÐÕÔˆ{ÑÔÕÔ˜aÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐÐÐr   c                ó’  — |                      ddddd¦  «        }|                     |j        dd¦  «         |                     |j        ddddd¦  «         d\  |j        d         _        |j        d         _        d	\  |j        d         _        |j        d         _        |                     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}}d S )Nr   r†   r‡   rˆ   r‰   rL   rŠ   r‹   )g      "@g      (@rŽ   r�   rV   r   r‘   r"   r’   r“   r/   r&   r”   r˜   s	            r   Ú'test_nearby_radius_exact_fifteen_meterszATestTier1NearbyRadiusMath.test_nearby_radius_exact_fifteen_meters\   rš   r   c                óÒ  — |                      ddddd¦  «        }|                     |j        dd¦  «         |                     |j        ddddd¦  «         d\  |j        d         _        |j        d         _        d	\  |j        d         _        |j        d         _        |                     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}}|d         }	|	j        }d}||k    }|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 S )Nr   r†   r‡   rˆ   r‰   rL   rŠ   r‹   )g…ëQ¸.@rŒ   rŽ   r�   r    r   r‘   r"   r’   r“   r/   r&   r   )z1%(py3)s
{%(py3)s = %(py1)s.player_id
} == %(py6)sr-   )r0   rW   rX   rY   r:   r•   r–   r—   r"   r2   r3   r4   r5   r6   r7   r8   r9   Ú	player_id)
r<   r   r   r’   rB   rH   r>   rI   rE   rG   s
             r   Ú(test_nearby_radius_beyond_fifteen_meterszBTestTier1NearbyRadiusMath.test_nearby_radius_beyond_fifteen_meterse   sŒ  € Ø×"Ò" 4¨°2°{ÀHÑMÔMˆØ×Ò ¤
¨D°$Ñ7Ô7Ð7Ø×Ò ¤
¨D°'¸2¸{ÈHÑUÔUÐUØ/7Ñ,ˆŒ	�$ŒÔ˜1œ9 Tœ?Ô,Ø/9Ñ,ˆŒ	�$ŒÔ˜1œ9 Tœ?Ô,Ø×-Ò-¨d¸4Ð-Ñ@Ô@ˆÝ�6‰{Œ{Ð˜aÐˆ{˜aÒÐÐÐÕÔÐÐÐÐˆ{˜aÐÑÔÐÕÔÑÔÐÐÕÔ�sÑÔÐÕÔ�sÑÔÐÐÐÕÔÑÔÐÐÕÔ�6ÑÔÐÕÔ�6ÑÔÐÐÕÔˆ{ÑÔÕÔ˜aÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØ�aŒyÐ*ˆyÔ"Ð* dÐ*Ð" dÒ*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð" dÐ*Ñ*Ô*Õ*Ô*ˆyÑ*Ô*Õ*Ô*Ð"Ñ*Ô*Õ*Ô* dÑ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*r   c                ó’  — |                      ddddd¦  «        }|                     |j        dd¦  «         |                     |j        ddddd¦  «         d	\  |j        d         _        |j        d         _        d	\  |j        d         _        |j        d         _        |                     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}}d S )Nr   r†   r‡   Úzone_wild_1r‰   rL   rŠ   Úzone_wild_2r‹   rŽ   r�   r    r   r‘   r"   r’   r“   r/   r&   r”   r˜   s	            r   Ú+test_nearby_radius_different_zones_excludedzETestTier1NearbyRadiusMath.test_nearby_radius_different_zones_excludedo   sÈ  € Ø×"Ò" 4¨°2°}ÀhÑOÔOˆØ×Ò ¤
¨D°$Ñ7Ô7Ð7Ø×Ò ¤
¨D°'¸2¸}ÈhÑWÔWÐWØ/7Ñ,ˆŒ	�$ŒÔ˜1œ9 Tœ?Ô,Ø/7Ñ,ˆŒ	�$ŒÔ˜1œ9 Tœ?Ô,Ø×-Ò-¨d¸4Ð-Ñ@Ô@ˆÝ�6‰{Œ{Ð˜aÐˆ{˜aÒÐÐÐÕÔÐÐÐÐˆ{˜aÐÑÔÐÕÔÑÔÐÐÕÔ�sÑÔÐÕÔ�sÑÔÐÐÐÕÔÑÔÐÐÕÔ�6ÑÔÐÕÔ�6ÑÔÐÐÕÔˆ{ÑÔÕÔ˜aÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐÐÐr   c                ó’  — |                      ddddd¦  «        }|                     |j        dd¦  «         |                     |j        ddddd¦  «         d	\  |j        d         _        |j        d         _        d	\  |j        d         _        |j        d         _        |                     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}}d S )Nr   r†   r‡   rˆ   r‰   rL   rŠ   Úinst_2r‹   rŽ   r�   r    r   r‘   r"   r’   r“   r/   r&   r”   r˜   s	            r   Ú/test_nearby_radius_different_instances_excludedzITestTier1NearbyRadiusMath.test_nearby_radius_different_instances_excludedx   sÈ  € Ø×"Ò" 4¨°2°{ÀHÑMÔMˆØ×Ò ¤
¨D°$Ñ7Ô7Ð7Ø×Ò ¤
¨D°'¸2¸{ÈHÑUÔUÐUØ/7Ñ,ˆŒ	�$ŒÔ˜1œ9 Tœ?Ô,Ø/7Ñ,ˆŒ	�$ŒÔ˜1œ9 Tœ?Ô,Ø×-Ò-¨d¸4Ð-Ñ@Ô@ˆÝ�6‰{Œ{Ð˜aÐˆ{˜aÒÐÐÐÕÔÐÐÐÐˆ{˜aÐÑÔÐÕÔÑÔÐÐÕÔ�sÑÔÐÕÔ�sÑÔÐÐÐÕÔÑÔÐÐÕÔ�6ÑÔÐÕÔ�6ÑÔÐÐÕÔˆ{ÑÔÕÔ˜aÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐÐÐr   Nr~   )	r   r€   r�   r‚   r™   rœ   rŸ   r£   r¦   r   r   r   r„   r„   P   s~   € € € € € ØRÐRð ð  ð  ð  ð ð  ð  ð  ð+ð +ð +ð +ð ð  ð  ð  ð ð  ð  ð  ð  ð  r   r„   c                  ó:   — e Zd ZdZd
d„Zd
d„Zd
d„Zd
d„Zd
d„Zd	S )ÚTestTier1ExpPartyScalingzYFeature 3: EXP Party Scaling (+30% total pool per extra member, (Lvl+10)^2.71 weighting).r	   r   c           	     ód  — t          ddddddd¦  «        g}t          j        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 S )Nr   ÚSoloé2   Úz1Úi1rŒ   éè  r   ©z%(py1)s == %(py4)s©r$   ry   úassert %(py6)sr.   ©r   r   Úcalculate_party_expr2   r3   r7   r8   r9   ©r<   ÚmÚexp_resrG   r?   rB   Ú@py_format5rI   s           r   Útest_exp_scaling_solo_baselinez7TestTier1ExpPartyScaling.test_exp_scaling_solo_baseline…   sÛ   € Ý˜d F¨B°°d¸CÀÑEÔEÐFˆÝ(Ô<¸TÀ1ÑEÔEˆØ�tŒ}Ð$ Ð$ˆ} Ò$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$ˆ} Ð$Ñ$Ô$Õ$Ô$ˆ}Ñ$Ô$Õ$Ô$ Ñ$Ô$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$r   c           
     ó”  — t          ddddddd¦  «        t          ddddddd¦  «        g}t          j        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 S )Nr   ÚAr«   r¬   r­   rŒ   rL   ÚBr®   iŠ  r   r¯   r°   r±   r.   r²   r´   s           r   Ú"test_exp_scaling_two_equal_membersz;TestTier1ExpPartyScaling.test_exp_scaling_two_equal_membersŠ   s›  € å˜T 3¨¨D°$¸¸SÑAÔAÝ˜T 3¨¨D°$¸¸SÑAÔAð
ˆõ
 )Ô<¸TÀ1ÑEÔEˆØ�tŒ}Ð# Ð#ˆ} Ò#Ð#Ð#Ð#Õ#Ô#Ð#Ð#Ð#Ð#ˆ} Ð#Ñ#Ô#Õ#Ô#ˆ}Ñ#Ô#Õ#Ô# Ñ#Ô#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#Ø�tŒ}Ð# Ð#ˆ} Ò#Ð#Ð#Ð#Õ#Ô#Ð#Ð#Ð#Ð#ˆ} Ð#Ñ#Ô#Õ#Ô#ˆ}Ñ#Ô#Õ#Ô# Ñ#Ô#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#Ð#Ð#r   c                ó˜  — d„ t          dd¦  «        D ¦   «         }t          j        d|¦  «        }t          dd¦  «        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 S )Nc                óD   — g | ]}t          d |› �d|› �ddddd¦  «        ‘ŒS )r   ÚMé<   r¬   r­   rŒ   )r   )Ú.0Úis     r   ú
<listcomp>zOTestTier1ExpPartyScaling.test_exp_scaling_six_equal_members.<locals>.<listcomp>•   s9   € Ð_Ð_Ð_ÈaÕ˜g !˜g˜g w¨1 w w°°D¸$ÀÀSÑIÔIÐ_Ð_Ð_r   r    é   r®   r   i   r   r¯   r°   r±   r.   )Úranger   r³   r2   r3   r7   r8   r9   )	r<   rµ   r¶   rÂ   rG   r?   rB   r·   rI   s	            r   Ú"test_exp_scaling_six_equal_membersz;TestTier1ExpPartyScaling.test_exp_scaling_six_equal_members”   s  € Ø_Ð_ÕSXÐYZÐ\]ÑS^ÔS^Ð_Ñ_Ô_ˆå(Ô<¸TÀ1ÑEÔEˆÝ�q˜!‘”ð 	+ð 	+ˆAØ˜7˜q˜7˜7Ô#Ð* sÐ*Ð# sÒ*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð# sÐ*Ñ*Ô*Õ*Ô*Ð#Ñ*Ô*Õ*Ô* sÑ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ð	+ð 	+r   c           
     óÔ  — t          ddddddd¦  «        t          ddd	dddd¦  «        g}t          j        d
|¦  «        }|d         }|d         }d}||z  }||k    }|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}x}}d S )NÚlowÚLowLevelé   r¬   r­   rŒ   ÚhighÚ	HighLeveléP   r®   é
   )ú>)z%(py1)s > (%(py4)s * %(py6)s))r$   ry   r.   zassert %(py9)sr^   r²   )
r<   rµ   r¶   rG   r?   rH   rC   rB   rA   Ú@py_format10s
             r   Ú test_exp_scaling_level_weightingz9TestTier1ExpPartyScaling.test_exp_scaling_level_weighting›   s%  € å˜U J°°D¸$ÀÀSÑIÔIÝ˜V [°"°d¸DÀ#ÀsÑKÔKð
ˆõ )Ô<¸TÀ1ÑEÔEˆØ�vŒÐ4 ¨¤Ð4°"Ð4 °"Ñ!4Ð4ˆÐ!4Ò4Ð4Ð4Ð4Õ4Ô4Ð4Ð4Ð4Ð4ˆÐ!4Ð4Ñ4Ô4Õ4Ô4ˆÑ4Ô4Õ4Ô4 Ñ4Ô4Õ4Ô4°"Ñ4Ô4Ð4Ð4Ñ4Ð4Ð4Ð4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4r   c           	     óD  — t           j        }d}g } |||¦  «        }i }||k    }|sít          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}x}x}x}x}}d S )Nr®   r   )zc%(py8)s
{%(py8)s = %(py2)s
{%(py2)s = %(py0)s.calculate_party_exp
}(%(py4)s, %(py6)s)
} == %(py11)sr   ©r   r   ry   r.   r&   r_   úassert %(py13)sr`   )
r   r³   r2   r3   r4   r5   r6   r7   r8   r9   )	r<   r=   r?   rH   rC   re   Ú@py_assert9Ú@py_format12Ú@py_format14s	            r   Ú%test_exp_scaling_zero_members_handledz>TestTier1ExpPartyScaling.test_exp_scaling_zero_members_handled¦   sE  € Ý%Ô9ÐI¸$ÐIÀÐIÐ9Ð9¸$ÀÑCÔCÐIÀrÐIÐCÀrÒIÐIÐIÐIÕIÔIÐIÐIÐIÐIÐCÀrÐIÑIÔIÐIÕIÔIÑIÔIÐIÐIÕIÔIÕ%ÑIÔIÐIÕIÔIÕ%ÑIÔIÐIÐIÕIÔIÐ9ÑIÔIÕIÔI¸$ÑIÔIÕIÔIÀÑIÔIÕIÔIÐCÑIÔIÕIÔIÀrÑIÔIÐIÐIÑIÐIÐIÐIÐIÐIÑIÐIÕIÕIÔIÐIÑIÔIÑIÔIÐIÐIÐIÐIÐIÐIÐIÐIÐIÐIÐIÐIÐIÐIÐIr   N©r	   r   )	r   r€   r�   r‚   r¸   r¼   rÆ   rÑ   rØ   r   r   r   r¨   r¨   ‚   s„   € € € € € ØcÐcð%ð %ð %ð %ð
$ð $ð $ð $ð+ð +ð +ð +ð	5ð 	5ð 	5ð 	5ðJð Jð Jð Jð Jð Jr   r¨   c                  ó:   — e Zd ZdZd
d„Zd
d„Zd
d„Zd
d„Zd
d„Zd	S )Ú"TestTier1LootQuantityRarityScalingz]Feature 4: Loot Quantity & Rarity Scaling (+50% Item/Curr Qty, +30% Rarity per extra member).r	   r   c                óf  — t          j        d¦  «        \  }}}t          j        }d} |||¦  «        }|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        |¦  «        t          j        |¦  «        dœz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}t          j        }d} |||¦  «        }|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        |¦  «        t          j        |¦  «        dœz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}t          j        }d} |||¦  «        }|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        |¦  «        t          j        |¦  «        dœz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}d S )	Nr    ç      ð?úRassert %(py7)s
{%(py7)s = %(py2)s
{%(py2)s = %(py0)s.isclose
}(%(py3)s, %(py5)s)
}ÚmathÚitem_qty©r   r   r%   r   r   Úcurr_qtyÚrarity©r   Úcalculate_loot_multipliersrß   Úiscloser4   r5   r2   r6   r7   r8   r9   ©r<   rà   râ   rã   r=   r>   rD   rA   s           r   Ú"test_loot_scaling_solo_multiplierszETestTier1LootQuantityRarityScaling.test_loot_scaling_solo_multipliers­   s  € Ý%;Ô%VÐWXÑ%YÔ%YÑ"ˆ�(˜FÝŒ|Ð* cÐ*ˆ|ˆ|˜H cÑ*Ô*Ð*Ð*Ð*Ð*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*�tÑ*Ô*Ð*Õ*Ô*�tÑ*Ô*Ð*Ð*Õ*Ô*ˆ|Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*˜HÑ*Ô*Ð*Õ*Ô*˜HÑ*Ô*Ð*Ð*Õ*Ô* cÑ*Ô*Õ*Ô*Ð*Ñ*Ô*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ÝŒ|Ð* cÐ*ˆ|ˆ|˜H cÑ*Ô*Ð*Ð*Ð*Ð*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*�tÑ*Ô*Ð*Õ*Ô*�tÑ*Ô*Ð*Ð*Õ*Ô*ˆ|Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*˜HÑ*Ô*Ð*Õ*Ô*˜HÑ*Ô*Ð*Ð*Õ*Ô* cÑ*Ô*Õ*Ô*Ð*Ñ*Ô*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ÝŒ|Ð( CÐ(ˆ|ˆ|˜F CÑ(Ô(Ð(Ð(Ð(Ð(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(�tÑ(Ô(Ð(Õ(Ô(�tÑ(Ô(Ð(Ð(Õ(Ô(ˆ|Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(˜FÑ(Ô(Ð(Õ(Ô(˜FÑ(Ô(Ð(Ð(Õ(Ô( CÑ(Ô(Õ(Ô(Ð(Ñ(Ô(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(r   c                óf  — t          j        d¦  «        \  }}}t          j        }d} |||¦  «        }|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        |¦  «        t          j        |¦  «        dœz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}t          j        }d} |||¦  «        }|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        |¦  «        t          j        |¦  «        dœz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}t          j        }d} |||¦  «        }|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        |¦  «        t          j        |¦  «        dœz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}d S )
NrV   ç      ø?rÞ   rß   rà   rá   râ   gÍÌÌÌÌÌô?rã   rä   rç   s           r   Útest_loot_scaling_two_playersz@TestTier1LootQuantityRarityScaling.test_loot_scaling_two_players³   s  € Ý%;Ô%VÐWXÑ%YÔ%YÑ"ˆ�(˜FÝŒ|Ð+ dÐ+ˆ|ˆ|˜H dÑ+Ô+Ð+Ð+Ð+Ð+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+�tÑ+Ô+Ð+Õ+Ô+�tÑ+Ô+Ð+Ð+Õ+Ô+ˆ|Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+˜HÑ+Ô+Ð+Õ+Ô+˜HÑ+Ô+Ð+Ð+Õ+Ô+ dÑ+Ô+Õ+Ô+Ð+Ñ+Ô+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ÝŒ|Ð+ dÐ+ˆ|ˆ|˜H dÑ+Ô+Ð+Ð+Ð+Ð+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+�tÑ+Ô+Ð+Õ+Ô+�tÑ+Ô+Ð+Ð+Õ+Ô+ˆ|Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+˜HÑ+Ô+Ð+Õ+Ô+˜HÑ+Ô+Ð+Ð+Õ+Ô+ dÑ+Ô+Õ+Ô+Ð+Ñ+Ô+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ÝŒ|Ð) DÐ)ˆ|ˆ|˜F DÑ)Ô)Ð)Ð)Ð)Ð)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)�tÑ)Ô)Ð)Õ)Ô)�tÑ)Ô)Ð)Ð)Õ)Ô)ˆ|Ñ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)˜FÑ)Ô)Ð)Õ)Ô)˜FÑ)Ô)Ð)Ð)Õ)Ô) DÑ)Ô)Õ)Ô)Ð)Ñ)Ô)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)r   c                óf  — t          j        d¦  «        \  }}}t          j        }d} |||¦  «        }|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        |¦  «        t          j        |¦  «        dœz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}t          j        }d} |||¦  «        }|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        |¦  «        t          j        |¦  «        dœz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}t          j        }d} |||¦  «        }|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        |¦  «        t          j        |¦  «        dœz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}d S )
Né   ç      @rÞ   rß   rà   rá   râ   g      @rã   rä   rç   s           r   Útest_loot_scaling_six_playersz@TestTier1LootQuantityRarityScaling.test_loot_scaling_six_players¹   s  € Ý%;Ô%VÐWXÑ%YÔ%YÑ"ˆ�(˜FåŒ|Ð+ dÐ+ˆ|ˆ|˜H dÑ+Ô+Ð+Ð+Ð+Ð+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+�tÑ+Ô+Ð+Õ+Ô+�tÑ+Ô+Ð+Ð+Õ+Ô+ˆ|Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+˜HÑ+Ô+Ð+Õ+Ô+˜HÑ+Ô+Ð+Ð+Õ+Ô+ dÑ+Ô+Õ+Ô+Ð+Ñ+Ô+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ÝŒ|Ð+ dÐ+ˆ|ˆ|˜H dÑ+Ô+Ð+Ð+Ð+Ð+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+�tÑ+Ô+Ð+Õ+Ô+�tÑ+Ô+Ð+Ð+Õ+Ô+ˆ|Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+˜HÑ+Ô+Ð+Õ+Ô+˜HÑ+Ô+Ð+Ð+Õ+Ô+ dÑ+Ô+Õ+Ô+Ð+Ñ+Ô+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ÝŒ|Ð) DÐ)ˆ|ˆ|˜F DÑ)Ô)Ð)Ð)Ð)Ð)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)�tÑ)Ô)Ð)Õ)Ô)�tÑ)Ô)Ð)Ð)Õ)Ô)ˆ|Ñ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)˜FÑ)Ô)Ð)Õ)Ô)˜FÑ)Ô)Ð)Ð)Õ)Ô) DÑ)Ô)Õ)Ô)Ð)Ñ)Ô)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)r   c           
     ój  — t          dd¦  «        D �] }t          j        |¦  «        \  }}}t          j        |dz   ¦  «        \  }}}t          j        }||z
  }	d}
 ||	|
¦  «        }|�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dt          j        ¦   «         v st          j        |¦  «        rt          j	        |¦  «        ndt          j	        |
¦  «        t          j	        |¦  «        dœz  }t          t          j        |¦  «        ¦  «        ‚d x}x}	x}
}t          j        }||z
  }	d}
 ||	|
¦  «        }|�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	d
t          j        ¦   «         v st          j        |¦  «        rt          j	        |¦  «        nd
t          j	        |
¦  «        t          j	        |¦  «        dœz  }t          t          j        |¦  «        ¦  «        ‚d x}x}	x}
}t          j        }||z
  }	d}
 ||	|
¦  «        }|�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dt          j        ¦   «         v st          j        |¦  «        rt          j	        |¦  «        ndt          j	        |
¦  «        t          j	        |¦  «        dœz  }t          t          j        |¦  «        ¦  «        ‚d x}x}	x}
}�Œ"d S )Nr    rí   g      à?z^assert %(py9)s
{%(py9)s = %(py2)s
{%(py2)s = %(py0)s.isclose
}((%(py3)s - %(py4)s), %(py7)s)
}rß   Úi2r­   )r   r   r%   ry   r   r^   Úc2Úc1g333333Ó?Úr2Úr1)rÅ   r   rå   rß   ræ   r4   r5   r2   r6   r7   r8   r9   )r<   Únr­   ró   rõ   rñ   rò   rô   r=   rH   rD   rd   rÐ   s                r   Ú$test_loot_scaling_linear_progressionzGTestTier1LootQuantityRarityScaling.test_loot_scaling_linear_progressionÀ   s.  € Ý�q˜!‘”ð 	/ñ 	/ˆAÝ/ÔJÈ1ÑMÔM‰JˆB��BÝ/ÔJÈ1ÈqÉ5ÑQÔQ‰JˆB��BÝ”<Ð.  R¡Ð.¨Ð.�<�< ¨Ñ.Ô.Ð.Ð.Ñ.Ð.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.•4Ñ.Ô.Ð.Õ.Ô.•4Ñ.Ô.Ð.Ð.Õ.Ô.�<Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô. Ñ.Ô.Ð.Õ.Ô. Ñ.Ô.Ð.Ð.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô. RÑ.Ô.Ð.Õ.Ô. RÑ.Ô.Ð.Ð.Õ.Ô.¨Ñ.Ô.Õ.Ô.Ð.Ñ.Ô.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ý”<Ð.  R¡Ð.¨Ð.�<�< ¨Ñ.Ô.Ð.Ð.Ñ.Ð.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.•4Ñ.Ô.Ð.Õ.Ô.•4Ñ.Ô.Ð.Ð.Õ.Ô.�<Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô. Ñ.Ô.Ð.Õ.Ô. Ñ.Ô.Ð.Ð.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô. RÑ.Ô.Ð.Õ.Ô. RÑ.Ô.Ð.Ð.Õ.Ô.¨Ñ.Ô.Õ.Ô.Ð.Ñ.Ô.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ý”<Ð.  R¡Ð.¨Ð.�<�< ¨Ñ.Ô.Ð.Ð.Ñ.Ð.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.•4Ñ.Ô.Ð.Õ.Ô.•4Ñ.Ô.Ð.Ð.Õ.Ô.�<Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô. Ñ.Ô.Ð.Õ.Ô. Ñ.Ô.Ð.Ð.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô. RÑ.Ô.Ð.Õ.Ô. RÑ.Ô.Ð.Ð.Õ.Ô.¨Ñ.Ô.Õ.Ô.Ð.Ñ.Ô.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ñ.ð	/ð 	/r   c                óp  — t          j        d¦  «        \  }}}g }d}||k    }|}|rd}||k    }	|	}|	r
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  }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œ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œ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 )Nr   rÝ   r   )z%(py2)s == %(py5)srÂ   )r   r   z%(py7)sr   )z%(py9)s == %(py12)sÚc)r^   Úpy12z%(py14)sÚpy14)z%(py16)s == %(py19)sÚr)ra   Úpy19z%(py21)sÚpy21zassert %(py24)sÚpy24)r   rå   r2   r3   r4   r5   r6   r7   ÚappendÚ_format_boolopr8   r9   )r<   rÂ   rù   rü   r=   r>   r?   rG   Ú@py_assert11re   Ú@py_assert18Ú@py_assert17r@   rA   Ú@py_format13Ú@py_format15Ú@py_format20Ú@py_format22Ú@py_format23Ú@py_format25s                       r   Ú&test_loot_scaling_zero_nearby_fallbackzITestTier1LootQuantityRarityScaling.test_loot_scaling_zero_nearby_fallbackÈ   sÄ  € Ý(ÔCÀAÑFÔF‰ˆˆ1ˆaØ1Ð1�CÐ1ˆq�CŠxÐ1Ð1Ð1Ð1Ð1 Ð1˜A šHÐ1Ð1Ð1Ð1Ð1¨cÐ1¨¨cªÐ1Ð1Ð1Ð1Ñ1Õ1Ô1Ð1Ð1Ð1Ð1ˆq�CÐ1Ñ1Ô1Ð1Õ1Ô1Ñ1Ô1Ð1Ð1Õ1Ô1ˆqÑ1Ô1Ð1Õ1Ô1ˆqÑ1Ô1Ð1Ð1Õ1Ô1�CÑ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˜A Ð1Ñ1Ô1Ð1Õ1Ô1Ñ1Ô1Ð1Ð1Õ1Ô1˜AÑ1Ô1Ð1Õ1Ô1˜AÑ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¨¨cÐ1Ñ1Ô1Ð1Õ1Ô1Ñ1Ô1Ð1Ð1Õ1Ô1¨Ñ1Ô1Ð1Õ1Ô1¨Ñ1Ô1Ð1Ð1Õ1Ô1¨cÑ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Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1r   NrÙ   )	r   r€   r�   r‚   rè   rë   rï   r÷   r  r   r   r   rÛ   rÛ   ª   s~   € € € € € ØgÐgð)ð )ð )ð )ð*ð *ð *ð *ð*ð *ð *ð *ð/ð /ð /ð /ð2ð 2ð 2ð 2ð 2ð 2r   rÛ   c                  óB   — 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
S )ÚTestTier1LootAllocationModeszIFeature 5: 3 Loot Allocation Modes (Permanent, Short 5.0s, Free-For-All).r	   r   c           	     ó`  — t          ddddt          j        ¬¦  «        }|j        }d}d} |||¬¦  «        }d}||u }|sãt	          j        d	|fd
||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        t	          j	        |¦  «        t	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }	t          t	          j        |	¦  «        ¦  «        ‚d x}x}x}x}x}}d S )NÚd1Ú
sword_rarer   ç      Y@©Údrop_timestampÚallocation_modeg     €Y@©Úcurrent_timeTrM   ©zn%(py8)s
{%(py8)s = %(py2)s
{%(py2)s = %(py0)s.can_player_pickup
}(%(py4)s, current_time=%(py6)s)
} is %(py11)sÚdroprÓ   rÔ   r`   ©r   r   Ú	PERMANENTÚcan_player_pickupr2   r3   r4   r5   r6   r7   r8   r9   ©
r<   r  r=   r?   rH   rC   re   rÕ   rÖ   r×   s
             r   Ú-test_loot_mode_permanent_allocated_can_pickupzJTestTier1LootAllocationModes.test_loot_mode_permanent_allocated_can_pickupÐ   sb  € Ý˜d L°$ÀuÕ^pÔ^zÐ{Ñ{Ô{ˆØÔ%ÐG dÐG¸ÐGÐ%Ð% d¸Ð?Ñ?Ô?ÐGÀ4ÐGÐ?À4ÐGÐGÐGÐGÕGÔGÐGÐGÐGÐGÐ?À4ÐGÑGÔGÐGÕGÔGÑGÔGÐGÐGÕGÔGˆtÑGÔGÐGÕGÔGˆtÑGÔGÐGÐGÕGÔGÐ%ÑGÔGÕGÔG dÑGÔGÕGÔG¸ÑGÔGÕGÔGÐ?ÑGÔGÕGÔGÀ4ÑGÔGÐGÐGÑGÐGÐGÐGÐGÐGÑGÐGÕGÕGÔGÐGÑGÔGÑGÔGÐGÐGÐGÐGÐGÐGÐGÐGÐGÐGÐGÐGÐGÐGÐGr   c           	     ó`  — t          ddddt          j        ¬¦  «        }|j        }d}d} |||¬¦  «        }d	}||u }|sãt	          j        d
|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        t	          j	        |¦  «        t	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }	t          t	          j        |	¦  «        ¦  «        ‚d x}x}x}x}x}}d S )Nr  r  r   r  r  rL   g      i@r  FrM   r  r  rÓ   rÔ   r`   r  r  s
             r   Ú/test_loot_mode_permanent_non_allocated_rejectedzLTestTier1LootAllocationModes.test_loot_mode_permanent_non_allocated_rejectedÔ   sb  € Ý˜d L°$ÀuÕ^pÔ^zÐ{Ñ{Ô{ˆØÔ%ÐH dÐH¸ÐHÐ%Ð% d¸Ð?Ñ?Ô?ÐHÀ5ÐHÐ?À5ÐHÐHÐHÐHÕHÔHÐHÐHÐHÐHÐ?À5ÐHÑHÔHÐHÕHÔHÑHÔHÐHÐHÕHÔHˆtÑHÔHÐHÕHÔHˆtÑHÔHÐHÐHÕHÔHÐ%ÑHÔHÕHÔH dÑHÔHÕHÔH¸ÑHÔHÕHÔHÐ?ÑHÔHÕHÔHÀ5Ñ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ÐHr   c           	     ó`  — t          ddddt          j        ¬¦  «        }|j        }d}d} |||¬¦  «        }d}||u }|sãt	          j        d	|fd
||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        t	          j	        |¦  «        t	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }	t          t	          j        |	¦  «        ¦  «        ‚d x}x}x}x}x}}d S )NÚd2Ú	orb_exaltr   r  r  g     `Y@r  TrM   r  r  rÓ   rÔ   r`   ©r   r   ÚSHORTr  r2   r3   r4   r5   r6   r7   r8   r9   r  s
             r   Ú3test_loot_mode_short_allocated_can_pickup_immediatezPTestTier1LootAllocationModes.test_loot_mode_short_allocated_can_pickup_immediateØ   ób  € Ý˜d K°ÀeÕ]oÔ]uÐvÑvÔvˆØÔ%ÐG dÐG¸ÐGÐ%Ð% d¸Ð?Ñ?Ô?ÐGÀ4ÐGÐ?À4ÐGÐGÐGÐGÕGÔGÐGÐGÐGÐGÐ?À4ÐGÑGÔGÐGÕGÔGÑGÔGÐGÐGÕGÔGˆtÑGÔGÐGÕGÔGˆtÑGÔGÐGÐGÕGÔGÐ%ÑGÔGÕGÔG dÑGÔGÕGÔG¸ÑGÔGÕGÔGÐ?ÑGÔGÕGÔGÀ4ÑGÔGÐGÐGÑGÐGÐGÐGÐGÐGÑGÐGÕGÕGÔGÐGÑGÔGÑGÔGÐGÐGÐGÐGÐGÐGÐGÐGÐGÐGÐGÐGÐGÐGÐGr   c           	     ó`  — t          ddddt          j        ¬¦  «        }|j        }d}d} |||¬¦  «        }d	}||u }|sãt	          j        d
|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        t	          j	        |¦  «        t	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }	t          t	          j        |	¦  «        ¦  «        ‚d x}x}x}x}x}}d S )Nr!  r"  r   r  r  rL   g�Âõ(\?Z@r  FrM   r  r  rÓ   rÔ   r`   r#  r  s
             r   Ú6test_loot_mode_short_other_blocked_before_five_secondszSTestTier1LootAllocationModes.test_loot_mode_short_other_blocked_before_five_secondsÜ   sb  € Ý˜d K°ÀeÕ]oÔ]uÐvÑvÔvˆØÔ%ÐI dÐI¸ÐIÐ%Ð% d¸Ð@Ñ@Ô@ÐIÀEÐIÐ@ÀEÐIÐIÐIÐIÕIÔIÐIÐIÐIÐIÐ@ÀEÐIÑIÔIÐIÕIÔIÑIÔIÐIÐIÕIÔIˆtÑIÔIÐIÕIÔIˆtÑIÔIÐIÐIÕIÔIÐ%ÑIÔIÕIÔI dÑIÔIÕIÔI¸ÑIÔIÕIÔIÐ@ÑIÔIÕIÔIÀEÑIÔIÐIÐIÑIÐIÐIÐIÐIÐIÑIÐIÕIÕIÔIÐIÑIÔIÑIÔIÐIÐIÐIÐIÐIÐIÐIÐIÐIÐIÐIÐIÐIÐIÐIr   c           	     ó`  — t          ddddt          j        ¬¦  «        }|j        }d}d} |||¬¦  «        }d	}||u }|sãt	          j        d
|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        t	          j	        |¦  «        t	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }	t          t	          j        |	¦  «        ¦  «        ‚d x}x}x}x}x}}d S )Nr!  r"  r   r  r  rL   g     @Z@r  TrM   r  r  rÓ   rÔ   r`   r#  r  s
             r   Ú5test_loot_mode_short_other_allowed_after_five_secondszRTestTier1LootAllocationModes.test_loot_mode_short_other_allowed_after_five_secondsà   r&  r   c           	     ó`  — t          ddddt          j        ¬¦  «        }|j        }d}d} |||¬¦  «        }d}||u }|sãt	          j        d	|fd
||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        t	          j	        |¦  «        t	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }	t          t	          j        |	¦  «        ¦  «        ‚d x}x}x}x}x}}d S )NÚd3Úcurrency_goldr   r  r  rL   r  TrM   r  r  rÓ   rÔ   r`   )r   r   ÚFREE_FOR_ALLr  r2   r3   r4   r5   r6   r7   r8   r9   r  s
             r   Ú*test_loot_mode_free_for_all_instant_pickupzGTestTier1LootAllocationModes.test_loot_mode_free_for_all_instant_pickupä   so  € Ý˜d O°TÈ%Õasô  bAð  Bñ  Bô  BˆØÔ%ÐG dÐG¸ÐGÐ%Ð% d¸Ð?Ñ?Ô?ÐGÀ4ÐGÐ?À4ÐGÐGÐGÐGÕGÔGÐGÐGÐGÐGÐ?À4ÐGÑGÔGÐGÕGÔGÑGÔGÐGÐGÕGÔGˆtÑGÔGÐGÕGÔGˆtÑGÔGÐGÐGÕGÔGÐ%ÑGÔGÕGÔG dÑGÔGÕGÔG¸ÑGÔGÕGÔGÐ?ÑGÔGÕGÔGÀ4ÑGÔGÐGÐGÑGÐGÐGÐGÐGÐGÑGÐGÕGÕGÔGÐGÑGÔGÑGÔGÐGÐGÐGÐGÐGÐGÐGÐGÐGÐGÐGÐGÐGÐGÐGr   NrÙ   )
r   r€   r�   r‚   r  r  r%  r(  r*  r/  r   r   r   r  r  Í   s¬   € € € € € ØSÐSðHð Hð Hð HðIð Ið Ið IðHð Hð Hð HðJð Jð Jð JðHð Hð Hð HðHð Hð Hð Hð Hð Hr   r  c                  ó:   — e Zd ZdZd
d„Zd
d„Zd
d„Zd
d„Zd
d„Zd	S )ÚTestTier1MonsterScalingz`Feature 6: Dynamic Monster Scaling (+50% Common, +70% Rare, +100% Boss HP; +10% Armor, +2% Res).r	   r   c                ó   — t          j        dd¬¦  «        }t          j        }|d         }d} |||¦  «        }|s»ddt	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}x}}d S )	NÚCOMMONrí   ©Ú
party_sizeÚhp_multrî   úRassert %(py8)s
{%(py8)s = %(py2)s
{%(py2)s = %(py0)s.isclose
}(%(py4)s, %(py6)s)
}rß   ©r   r   ry   r.   r&   ©r   Úcalculate_monster_scalingrß   ræ   r4   r5   r2   r6   r7   r8   r9   ©r<   Úsr=   r?   rH   rC   rE   s          r   Ú$test_monster_scaling_common_magic_hpz<TestTier1MonsterScaling.test_monster_scaling_common_magic_hpì   s   € Ý"Ô<¸XÐRSÐTÑTÔTˆÝŒ|Ð/˜A˜iœLÐ/¨$Ð/ˆ|ˆ|˜L¨$Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/�tÑ/Ô/Ð/Õ/Ô/�tÑ/Ô/Ð/Ð/Õ/Ô/ˆ|Ñ/Ô/Õ/Ô/˜LÑ/Ô/Õ/Ô/¨$Ñ/Ô/Õ/Ô/Ð/Ñ/Ô/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/r   c                ó   — t          j        dd¬¦  «        }t          j        }|d         }d} |||¦  «        }|s»ddt	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}x}}d S )	NÚRARErí   r4  r6  g      @r7  rß   r8  r9  r;  s          r   Útest_monster_scaling_rare_hpz4TestTier1MonsterScaling.test_monster_scaling_rare_hpð   ó   € Ý"Ô<¸VÐPQÐRÑRÔRˆÝŒ|Ð/˜A˜iœLÐ/¨$Ð/ˆ|ˆ|˜L¨$Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/�tÑ/Ô/Ð/Õ/Ô/�tÑ/Ô/Ð/Ð/Õ/Ô/ˆ|Ñ/Ô/Õ/Ô/˜LÑ/Ô/Õ/Ô/¨$Ñ/Ô/Õ/Ô/Ð/Ñ/Ô/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/r   c                ó   — t          j        dd¬¦  «        }t          j        }|d         }d} |||¦  «        }|s»ddt	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}x}}d S )	NÚBOSSrí   r4  r6  g      @r7  rß   r8  r9  r;  s          r   Útest_monster_scaling_boss_hpz4TestTier1MonsterScaling.test_monster_scaling_boss_hpô   rA  r   c                óÎ  — t          j        dd¬¦  «        }t          j        }|d         }d} |||¦  «        }|s»ddt	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}x}}t          j        }|d	         }d
} |||¦  «        }|s»ddt	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}x}}d S )NrC  rí   r4  Ú
armor_multrê   r7  rß   r8  Ú	res_bonusr�   r9  r;  s          r   Ú*test_monster_scaling_armor_and_resistanceszBTestTier1MonsterScaling.test_monster_scaling_armor_and_resistancesø   sâ  € Ý"Ô<¸VÐPQÐRÑRÔRˆÝŒ|Ð2˜A˜lœOÐ2¨TÐ2ˆ|ˆ|˜O¨TÑ2Ô2Ð2Ð2Ð2Ð2Ð2Õ2Ô2Ñ2Ô2Ð2Ð2Õ2Ô2�tÑ2Ô2Ð2Õ2Ô2�tÑ2Ô2Ð2Ð2Õ2Ô2ˆ|Ñ2Ô2Õ2Ô2˜OÑ2Ô2Õ2Ô2¨TÑ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ÝŒ|Ð1˜A˜kœNÐ1¨DÐ1ˆ|ˆ|˜N¨DÑ1Ô1Ð1Ð1Ð1Ð1Ð1Õ1Ô1Ñ1Ô1Ð1Ð1Õ1Ô1�tÑ1Ô1Ð1Õ1Ô1�tÑ1Ô1Ð1Ð1Õ1Ô1ˆ|Ñ1Ô1Õ1Ô1˜NÑ1Ô1Õ1Ô1¨DÑ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Ð1r   c                ó   — t          j        dd¬¦  «        }t          j        }|d         }d} |||¦  «        }|s»ddt	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}x}}d S )	Nr?  é   r4  Úpoise_ratiog333333Ã?r7  rß   r8  r9  r;  s          r   Ú test_monster_scaling_poise_ratioz8TestTier1MonsterScaling.test_monster_scaling_poise_ratioý   s  € Ý"Ô<¸VÐPQÐRÑRÔRˆÝŒ|Ð3˜A˜mÔ,Ð3¨dÐ3ˆ|ˆ|Ð,¨dÑ3Ô3Ð3Ð3Ð3Ð3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3�tÑ3Ô3Ð3Õ3Ô3�tÑ3Ô3Ð3Ð3Õ3Ô3ˆ|Ñ3Ô3Õ3Ô3Ð,Ñ3Ô3Õ3Ô3¨dÑ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Ð3r   NrÙ   )	r   r€   r�   r‚   r=  r@  rD  rH  rL  r   r   r   r1  r1  é   s~   € € € € € ØjÐjð0ð 0ð 0ð 0ð0ð 0ð 0ð 0ð0ð 0ð 0ð 0ð2ð 2ð 2ð 2ð
4ð 4ð 4ð 4ð 4ð 4r   r1  )r	   r   )r‚   Ú
__future__r   Úbuiltinsr4   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter2   rß   ÚpytestÚ#tests.e2e_social_party.test_harnessr   r   r   r   r   Úfixturer   r   r„   r¨   rÛ   r  r1  r   r   r   ú<module>rU     sÅ  ððð ð
 #Ð "Ð "Ð "Ð "Ð "Ø  € € € € € € € € € € € € €€€€Ø €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð „ðð ð ñ „ðð63ð 63ð 63ð 63ð 63ñ 63ô 63ð 63ðr/ ð / ð / ð / ð / ñ / ô / ð / ðd%Jð %Jð %Jð %Jð %Jñ %Jô %Jð %JðP 2ð  2ð  2ð  2ð  2ñ  2ô  2ð  2ðFHð Hð Hð Hð Hñ Hô Hð Hð84ð 4ð 4ð 4ð 4ñ 4ô 4ð 4ð 4ð 4r   