рдкрд╛рдпрдерди рдореЗрдВ рдПрдХ рдЦреЗрд▓ рдлрд╛рд░рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рдХреИрд╕реЗ рдЪреБрдиреЗрдВ

рд╣рдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рдорджрдж рд╕реЗ рдЕрдкрдиреЗ рдбрд╛рдХреВ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдвреВрдВрдврдирд╛ рд╕реАрдЦрддреЗ рд╣реИрдВред рд╣рдо рдпрд╣ рднреА рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣рдореЗрдВ "рдирд╛рдХ рд╕реЗ" рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реИред

рдЫрд╡рд┐

рдЙрджреНрджреЗрд╢реНрдп: рдЪрд░рдг-рджрд░-рдЪрд░рдг рд╕реАрдЦрдирд╛, рдЗрди рд╡рд┐рдЯреНрд░реЛ рдореЗрдВ рдЦреЗрд▓ рдХреЗ рдпрд╛рдВрддреНрд░рд┐рдХреА рдХреЗ рдЖрд╡рд╢реНрдпрдХ рднрд╛рдЧ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдирд╛, рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдФрд░ рдЙрдирд╕реЗ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рдирд╛ред

рдЖрдкрдХреЛ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП: рдкрд╛рдпрдерди 3, рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╡рд╛рддрд╛рд╡рд░рдг (рдореЗрд░реЗ рдкрд╛рд╕ Pyharm рд╣реИ)ред

рдЦреЗрд▓реЛрдВ рдореЗрдВ, рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЕрдкрдиреЗ рдкрд╛рддреНрд░реЛрдВ рдореЗрдВ рд╕реЗ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдирд┐рдЪреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЙрдкрдХрд░рдг рдХрд╛ рд╕рдмрд╕реЗ рдЗрд╖реНрдЯрддрдо рд╕рдВрдпреЛрдЬрди рдЪреБрдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдЕрдХреНрд╕рд░ рдмрд╣реБрдд рдХреБрдЫ рд╣реЛрддрд╛ рд╣реИред рдЖрдЗрдП рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдЕрдкрдиреЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВред

рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдореИрдВ рдЦреЗрд▓ "Warcraft рдХреА рджреБрдирд┐рдпрд╛: рдХреНрд▓рд╛рд╕рд┐рдХ" рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рдерд╛ (рдореИрдВ рдорд╛рдЙрд╕ рд▓реЗ рд▓рд┐рдпрд╛ рдФрд░ рд╡рд╣рд╛рдВ рд╕реЗ ), рд▓реЗрдХрд┐рди рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдореИрдВ рдХреБрдЫ рд╕рд░рд▓реАрдХрд░рдг рдХрд┐рдПред рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдкреВрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВред

рдЪрд░рдг 1 - рдЦреЛрдЬ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВ


рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рджреБрд╖реНрдЯ рд╡рд░реНрдЧ рдореЗрдВ рд╣рдорд╛рд░рд╛ рдПрдХ рдЪрд░рд┐рддреНрд░ рд╣реИред рдпрд╣ рдЙрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд╣ рджреБрд╢реНрдорди рдХреЛ рдЕрдзрд┐рдХрддрдо рдиреБрдХрд╕рд╛рди рдкрд╣реБрдВрдЪрд╛рдПрдЧрд╛ред рд╣рдо "рджрд╛рд╣рд┐рдиреЗ рд╣рд╛рде рдореЗрдВ рд╣рдерд┐рдпрд╛рд░" (4 рдкреАрд╕реАред), "рдмрд╛рдПрдВ рд╣рд╛рде рдореЗрдВ рд╣рдерд┐рдпрд╛рд░" (4 рдкреАрд╕реАред), "рджрд╕реНрддрд╛рдиреЗ" (2 рдкреАрд╕реАред), "рд╕рд┐рд░" (3 рдкреАрд╕реАред), "рдЫрд╛рддреА" рдХреЗ рд▓рд┐рдП рдЪреАрдЬреЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред (3 рдкреАрд╕реАред), "рд▓реЗрдЧреНрд╕" (3 рдкреАрд╕реАред), "рдлреАрдЯ" (2 рдкреАрд╕реАред)ред рд╣рдо рдЙрдирдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреЛ рдЪрд░рд┐рддреНрд░ рдкрд░ рд░рдЦреЗрдВрдЧреЗ рдФрд░ рд▓рдбрд╝рд╛рдИ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░реЗрдВрдЧреЗред рдФрд░ рдпрджрд┐ рдЖрдк рд╕рдВрдкреВрд░реНрдг рдЦреЛрдЬ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ (рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗ), рд╕рднреА рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХрдо рд╕реЗ рдХрдо 4 * 4 * 2 * 3 * 3 * 3 * 2 * 1728 рдЭрдЧрдбрд╝реЗ рдЦрд░реНрдЪ рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗред

рд╕рд░реНрд╡реЛрддреНрддрдо рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреЗ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рдбрд╝рд╛рдИ рдЖрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдЗрд╕рд▓рд┐рдП, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рд╕реНрддрд░ рдкрд░ рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдпреЛрдЬрдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

рдЫрд╡рд┐

рдЪрд░рдг 2 - рдЦреЗрд▓ рдпрд╛рдВрддреНрд░рд┐рдХреА рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВ


рдЪрд░рд┐рддреНрд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдЙрд╕рдХреЗ рдкрд╛рд╕ рдРрд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ рдЬреЛ рдПрдХ рджреВрд╕рд░реЗ рдкрд░ рдХрд┐рдП рдЧрдП рдиреБрдХрд╕рд╛рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИрдВ:

  1. рд╣рдорд▓реЗ рдХреА рд╢рдХреНрддрд┐ - рдпрд╣ рд╕реАрдзреЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЭрдЯрдХрд╛ (1 рд╕реЗ 1) рдХреЗ рдХрд╛рд░рдг рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдХреНрд╖рддрд┐ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рддреА рд╣реИред рд╕реВрддреНрд░ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рдХрд▓рд┐рдд: рд╣рдорд▓реЗ рдХреА рд╢рдХреНрддрд┐ рдХреЗ рдЕрдВрдХ + рд╢рдХреНрддрд┐ рдХреЗ рдЕрдВрдХ + рдирд┐рдкреБрдгрддрд╛ рдХреЗ рдЕрдВрдХ
  2. рд╢рдХреНрддрд┐ - +1 рд╢рдХреНрддрд┐ рдФрд░ рд╕рднреА рдкрд░ рд╣рдорд▓рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рдпрд╣ рдЧреЗрдо рдбрд┐рдЬрд╝рд╛рдЗрди рд╣реИ)
  3. рдирд┐рдкреБрдгрддрд╛ - +1 рд╢рдХреНрддрд┐ рдкрд░ рд╣рдорд▓рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдЪрдкрд▓рддрд╛ рдХреА рд╣рд░ 20 рдЗрдХрд╛рдЗрдпреЛрдВ рдореЗрдВ 1% рдорд╣рддреНрд╡рдкреВрд░реНрдг рдореМрдХрд╛ рд╣реИ
  4. рдХреНрд░реЗрддреЗред рдореМрдХрд╛ - рд╣рдбрд╝рддрд╛рд▓ рдХреЛ рдлрд┐рд╕рд▓рдиреЗ рдФрд░ рдпрд╛рдж рди рд╣реЛрдиреЗ рдкрд░ рджреЛрд╣рд░реЗ рдиреБрдХрд╕рд╛рди рдХрд╛ рдХрд╛рд░рдг
  5. рд╕рдЯреАрдХрддрд╛ - рдПрдХ рдкреНрд░рддрд┐рджреНрд╡рдВрджреНрд╡реА рдХреЛ рдорд╛рд░рдиреЗ рдХрд╛ рдореМрдХрд╛ рдмрдврд╝рд╛
  6. рдорд╣рд╛рд░рдд - рдорд╣рд╛рд░рдд рдХреА рдкреНрд░рддреНрдпреЗрдХ рдЗрдХрд╛рдИ 4% рд╕реЗ рдлрд┐рд╕рд▓рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдХрдо рдХрд░ рджреЗрддреА рд╣реИ (рдЬреЛ рд╢реБрд░реВ рдореЗрдВ 40% рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ 10 рдЗрдХрд╛рдЗрдпреЛрдВ рдХреА рдорд╣рд╛рд░рдд рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдлрд┐рд╕рд▓рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдмрд╛рд╣рд░ рдХрд░ рджреЗрддреА рд╣реИ)

рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЖрд░реЗрдЦ рд╣рдорд╛рд░реЗ рдбрд╛рдХреВ рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рдореВрд▓реНрдпреЛрдВ рдХреЛ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдПрдХ рдЖрдЗрдЯрдо рдкрд░ рдХреИрд╕реЗ рдЙрдиреНрд╣реЗрдВ рдмрджрд▓рддреЗ рд╣реИрдВ:

рдЫрд╡рд┐

рдЗрд╕рд▓рд┐рдП, рд▓реЗрдЦрди рдХреЛрдб рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред рд╣рдо рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджреБрд╖реНрдЯ рд╡рд░реНрдЧ рдореЗрдВ рдХреНрдпрд╛ рдЬрд╛рдирддреЗ рд╣реИрдВред Set_stats_without_equip рд╡рд┐рдзрд┐ рдЙрдкрдХрд░рдг рдХреЗ рдмрд┐рдирд╛ рдЪрд░рд┐рддреНрд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧреА, рдЬреЛ рд╕рдВрдЧреНрд░рд╣ рдмрджрд▓рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧреА рд╣реЛрддреА рд╣реИред рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЧрдгрдирд╛ рдХреЗ рддрд░реАрдХреЗ_ рдХреНрд░рд┐рдЯрд┐рдХрд▓_рдкрд░реЗрдВрдЯ рдФрд░ рдХреИрд▓рдХреБрд▓реЗрдЯрд┐рдВрдЧ_рдЧреНрд▓рд┐рд╕реЗрдВрдЯрд┐рдВрдЧ рдХреЛ рдХреЗрд╡рд▓ рддрднреА рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ред

рдХрдХреНрд╖рд╛ рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐рдпрд╛рдБ
class Rogue:
    """    ."""

    def __init__(self):

        #    ( -     ):
        self.basic_stat_agility = 50
        self.basic_stat_power = 40
        self.basic_stat_hit = 80
        self.basic_stat_crit = 20
        self.basic_stat_mastery = 0

        #     :
        self.set_stats_without_equip()


    #       :
    def set_stats_without_equip(self):
        self.stat_agility = self.basic_stat_agility
        self.stat_power = self.basic_stat_power
        self.stat_attackpower = self.stat_agility + self.stat_power
        self.stat_hit = self.basic_stat_hit
        self.direct_crit_bonus = 0
        self.calculate_critical_percent()
        self.stat_mastery = self.basic_stat_mastery
        self.calculate_glancing_percent()


    #      :
    def calculate_critical_percent(self):
        self.stat_crit = self.basic_stat_crit + self.direct_crit_bonus + self.stat_agility // 20


    #      :
    def calculate_glancing_percent(self):
        self.stat_glancing_percent = 40 - self.stat_mastery * 4


рдЕрдм рдЖрдкрдХреЛ рдЙрдкрдХрд░рдг рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдХреНрд░рдордмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдирдХреЗ рд╕рдВрдпреЛрдЬрди рдмрдирд╛рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╢рдмреНрджрдХреЛрд╢ рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛: RIGHT_HANDS, LEFT_HANDS, GLOVES, HEADS, CHESTS, PANTS, BOESSред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЯреБрдкрд▓реНрд╕ рдХреЛ рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдореЗрдВ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

рдЫрд╡рд┐

рдЙрдкрдХрд░рдг рдХреЗ рд╕рд╛рде рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВред рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд┐рднрд┐рдиреНрди рд╕реЗрдЯреЛрдВ рдХреЗ рд╕рд╛рде рдРрд╕реА рдХрдИ рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВред

рд╕рд╛рд░ рдкрд░реАрдХреНрд╖рдг рдЙрдкрдХрд░рдг
#    ,     :
# 0 - , 1 - , 2 - , 3 - , 4 - , 5 - , 6 - 

EQUIPMENT_COLLECTION = 'custom'

RIGHT_HANDS = dict()
RIGHT_HANDS[1] = ('  ', 50, 3, 0, 0, 0, 0)
RIGHT_HANDS[2] = (' ', 40, 22, 0, 0, 0, 0)
RIGHT_HANDS[3] = (' ', 40, 0, 0, 3, 0, 0)
RIGHT_HANDS[4] = (' ', 40, 0, 0, 0, 0, 5)

LEFT_HANDS = dict()
LEFT_HANDS[1] = ('  ', 35, 3, 0, 0, 0, 0)
LEFT_HANDS[2] = (' ', 40, 22, 0, 0, 0, 0)
LEFT_HANDS[3] = (' ', 40, 0, 0, 3, 0, 0)
LEFT_HANDS[4] = (' ', 40, 0, 0, 0, 0, 5)

GLOVES = dict()
GLOVES[1] = (' ', 0, 12, 0, 2, 0, 0)
GLOVES[2] = (' ', 2, 2, 2, 1, 1, 0)

HEADS = dict()
HEADS[1] = (' ', 0, 22, 0, 0, 0, 0)
HEADS[2] = (' ', 0, 0, 0, 0, 2, 0)
HEADS[3] = (' ', 0, 0, 0, 2, 0, 0)

CHESTS = dict()
CHESTS[1] = (' ', 0, 30, 0, 0, 0, 0)
CHESTS[2] = (' ', 0, 0, 0, 0, 3, 0)
CHESTS[3] = (' ', 0, 0, 0, 3, 0, 0)

PANTS = dict()
PANTS[1] = (' ', 0, 24, 0, 0, 0, 0)
PANTS[2] = (' ', 0, 0, 0, 0, 2, 0)
PANTS[3] = (' ', 0, 0, 0, 2, 0, 0)

BOOTS = dict()
BOOTS[1] = ('  ', 14, 0, 5, 0, 1, 0)
BOOTS[2] = (' ', 0, 18, 0, 1, 0, 0)


Warcraft рдкреЛрд╢рд╛рдХ рдХреА рджреБрдирд┐рдпрд╛
#    ,     :
# 0 - , 1 - , 2 - , 3 - , 4 - , 5 - , 6 - 

EQUIPMENT_COLLECTION = "wow_classic_preraid"

RIGHT_HANDS = dict()
RIGHT_HANDS[1] = ('  \'', 81, 0, 4, 0, 1, 0)
RIGHT_HANDS[2] = (' ', 49, 0, 4, 0, 1, 0)
RIGHT_HANDS[3] = (' ', 57, 9, 9, 0, 0, 0)

LEFT_HANDS = dict()
LEFT_HANDS[1] = ('  \'', 52, 0, 0, 0, 0, 0)
LEFT_HANDS[2] = (' ', 49, 0, 4, 0, 1, 0)
LEFT_HANDS[3] = (' ', 57, 9, 9, 0, 0, 0)

GLOVES = dict()
GLOVES[1] = (' ', 28, 0, 0, 0, 1, 0)
GLOVES[2] = ('  ', 40, 0, 0, 0, 0, 0)

HEADS = dict()
HEADS[1] = (' ', 0, 0, 0, 2, 1, 0)
HEADS[2] = (' ', 0, 0, 13, 0, 2, 0)
HEADS[3] = (' ', 32, 0, 8, 0, 0, 0)
HEADS[4] = (' ', 0, 19, 12, 0, 0, 0)

CHESTS = dict()
CHESTS[1] = (' ', 60, 8, 8, 0, 0, 0)
CHESTS[2] = ('  ', 50, 5, 0, 0, 0, 0)
CHESTS[3] = (' ', 0, 11, 18, 0, 0, 0)

PANTS = dict()
PANTS[1] = (' ', 46, 0, 0, 0, 1, 0)
PANTS[2] = ('  ', 0, 5, 0, 1, 1, 0)

BOOTS = dict()
BOOTS[1] = (' ', 0, 21, 4, 0, 0, 0)
BOOTS[2] = ('  ', 40, 0, 0, 0, 0, 0)
BOOTS[3] = (' ', 0, 23, 0, 0, 0, 0)


рд░рд╛рдЙрдЬрд╝реЗ рдХреНрд▓рд╛рд╕ рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рд▓рд┐рдП рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд╛рдЗрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЬреЛрдбрд╝реЗрдВ
    ...
    #    ,    id  :
    # 0 -  , 1 -  , 2 - , 3 - , 4 - , 5 - , 6 - 
    self.equipment_slots = [0] * 7

    #    ,      :
    self.equipment_names = [''] * 7


рд╣рдо рдЕрдкрдиреА рдХрдХреНрд╖рд╛ рдореЗрдВ рдкрд╣рдирдиреЗ_рдЗрдЯреАрдПрдо (рдЪреАрдЬреЛрдВ рдкрд░ рдбрд╛рд▓рддреЗ рд╕рдордп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рдЧрдгрдирд╛) рдФрд░ рдЕрдирд░рд╡рд┐рдпрд░_рд▓ рддрд░реАрдХреЛрдВ (рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ ) рдХреЛ рднреА рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред

рдЙрдкрдХрд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╡рд░реНрдЧ рд╡рд┐рдзрд┐рдпрд╛рдВ
    ...
    #   "  ":
    def unwear_all(self):
        #  id      :
        for i in range(0, len(self.equipment_slots) ):
            self.equipment_slots[i] = 0
            self.equipment_names[i] = ''

        self.set_stats_without_equip()


    #    :
    def wear_item(self, slot, item_id, items_list):

        #      ,        ,   :
        if self.equipment_slots[slot] == 0:
            self.equipment_slots[slot] = item_id
            self.equipment_names[slot] = items_list[item_id][0]
            self.stat_agility += items_list[item_id][2]
            self.stat_power += items_list[item_id][3]
            #  ,            :
            self.stat_attackpower += items_list[item_id][1] + items_list[item_id][2] + items_list[item_id][3]
            self.stat_hit += items_list[item_id][4]
            self.direct_crit_bonus += items_list[item_id][5]
            self.stat_mastery += items_list[item_id][6]

            #         . ,   . :
            if items_list[item_id][2] != 0 or items_list[item_id][5] != 0:
                self.calculate_critical_percent()

            #    ,    :
            if items_list[item_id][6] != 0:
                self.calculate_glancing_percent()


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреБрдЫ рдЪреАрдЬреЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХрд╛ рддрдереНрдп рдЕрддрд┐рд░рд┐рдХреНрдд рдмреЛрдирд╕ рджреЗрддрд╛ рд╣реИ ("рд╡рд░реНрд▓реНрдб рдСрдл рд╡рд┐рдХреНрдЯрд░рди" рдореЗрдВ рдЗрд╕реЗ "рд╕реЗрдЯ рдмреЛрдирд╕" рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдореЗрд░реЗ рд╕рд╛рд░ рд╕реЗрдЯ рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХрд╛ рдмреЛрдирд╕ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЬрдВрдЧрд▓реЛрдВ рдХреЗ рджрд╛рдПрдВ рд╣рд╛рде рдХреЗ рдЧрд╛рд░реНрдб рдФрд░ рдЬрдВрдЧрд▓реЛрдВ рдХреЗ рдмрд╛рдПрдВ-рд╣рд╛рде рд╡рд╛рд▓реЗ рдЧрд╛рд░реНрдб рдкрд░ рд▓рдЧрд╛рдиреЗ рд╕реЗ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕реЗ wear_item рд╡рд┐рдзрд┐ рдХреЗ рдХреЛрдб рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ :

рдкрд╣рдирдиреЗ рдХреА рд╡рд┐рдзрд┐ рдореЗрдВ рдмреЛрдирд╕ рд╕реЗрдЯ рдХрд░реЗрдВ
    ...
    #      "custom":
            if EQUIPMENT_COLLECTION == 'custom':
                #      "  " (id 1   " "),     "  " (id 1   " "),   2  . :
                if slot == 1:
                    if self.equipment_slots[1] == 1 and self.equipment_slots[0] == 1:
                        self.direct_crit_bonus += 2
                        self.calculate_critical_percent()
                        print('  ...')


рдЕрдм рд╣рдорд╛рд░реЗ рд▓реБрдЯреЗрд░реЗ рдХреЛ рд╕рд┐рдЦрд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреИрд╕реЗ рд▓рдбрд╝рдирд╛ рд╣реИред рд╣рдо рдПрдХ рд▓рдбрд╝рд╛рдИ рдкрд░ рдПрдХ рджреБрд╢реНрдорди рдкрд░ 1000 рд╣рдорд▓реЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдкрдиреА рдкреАрда рдХреЗ рд╕рд╛рде рдЦрдбрд╝рд╛ рд╣реИ рдФрд░ рдХреБрдЫ рдФрд░ (рд╡рд┐рд╢реНрд╡ Warcraft рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд┐рддрд┐) рдХреЗ рд╕рд╛рде рд╡реНрдпрд╕реНрдд рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╣рдбрд╝рддрд╛рд▓, рдкрд┐рдЫрд▓реЗ рд╡рд╛рд▓реЗ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛, рд╣реЛ рд╕рдХрддреА рд╣реИ:

  • рд╕рд╛рдорд╛рдиреНрдп - рдорд╛рдирдХ рдХреНрд╖рддрд┐, рд╣рдорд╛рд░реЗ рдореЙрдбрд▓ рдореЗрдВ "рд╣рдорд▓реЗ рдХреА рд╢рдХреНрддрд┐" рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ
  • рдЪрд▓рддреА - рд╕рд╛рдорд╛рдиреНрдп рд╕реЗ 70% рдХреНрд╖рддрд┐
  • рдЧрдВрднреАрд░ - рд╕рд╛рдорд╛рдиреНрдп рд╕реЗ рджреЛрд╣рд░рд╛ рдиреБрдХрд╕рд╛рди
  • рдорд┐рд╕ - 0 рдиреБрдХрд╕рд╛рди

рдпрд╣ рдЗрд╕ рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЪреЗрдХ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:

рдЫрд╡рд┐

рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдбрд╛рдХреВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдпреЛрдЬрдирд╛ рдлреЙрд░реНрдо рд▓реЗрддреА рд╣реИ: рдЖрдЗрдП

рдЫрд╡рд┐

рдЗрд╕ рдпрд╛рдВрддреНрд░рд┐рдХреА рдХреЛ рд╣рдорд╛рд░реЗ рд╡рд░реНрдЧ рдХреЗ рдХреЛрдб рдореЗрдВ do_attack рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝рдХрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░реЗрдВ ред рдпрд╣ рджреЛ рдирдВрдмрд░реЛрдВ рдХреА рдПрдХ рд╡рд╛рдкрд╕реА рд▓реМрдЯрд╛рдПрдЧрд╛: (рд╣рдорд▓реЗ рдХреЗ рдкрд░рд┐рдгрд╛рдо, рдХрд┐рдП рдЧрдП рдиреБрдХрд╕рд╛рди)ред

рд╣рдорд▓рд╛ рдХреЛрдб
    ...
    #    :
    def do_attack(self):
        #   :
        event_hit = randint(1, 100)

        #  :
        if event_hit > self.stat_hit:
            return 0, 0

        #  :
        else:
            #   :
            event_glancing = randint(1, 100)

            #    ,    ,
            #      10  "",  stat_glancing_percent   0,
            #      
            if event_glancing <= self.stat_glancing_percent:
                damage = floor(self.stat_attackpower * 0.7)
                return 1, damage

            #    :
            else:
                #   :
                event_crit = randint(1, 100)

                #    :
                if event_crit > self.stat_crit:
                    damage = self.stat_attackpower
                    return 2, damage

                #   :
                else:
                    damage = self.stat_attackpower * 2
                    return 3, damage


рд╣рдо рдбрд╛рдХреВ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХрд╛ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ, рддрд╛рдХрд┐ рдХрд┐рд╕реА рднреА рд╕рдордп рдЖрдк рджреЗрдЦ рд╕рдХреЗрдВ рдХрд┐ рдЙрд╕рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ:

__str__ рдЬрд╛рджреВ рдкрджреНрдзрддрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ
    ...
    #  " "     :
    def __str__(self):

        #      :
        using_equipment_names = ''
        for i in range(0, len(self.equipment_names) - 1 ):
            using_equipment_names += self.equipment_names[i] + '", "'
        using_equipment_names = '"' + using_equipment_names + self.equipment_names[-1] + '"'

        #  :
        description = ' 60 \n'
        description += using_equipment_names + '\n'
        description += ' : ' + str(self.stat_attackpower) + ' .\n'
        description += ': ' + str(self.stat_agility) + ' .\n'
        description += ': ' + str(self.stat_power) + ' .\n'
        description += ': ' + str(self.stat_hit) + '%\n'
        description += '. : ' + str(self.stat_crit) + '%\n'
        description += ': ' + str(self.stat_mastery) + ' .\n'
        description += ' . .: ' + str(self.stat_glancing_percent) + '%\n'
        return description


рдЪрд░рдг 3 - рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреА рддреИрдпрд╛рд░реА


рдЕрдм рдпрд╣ рдПрдХ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХрд╛ рд╕рдордп рд╣реИ рдЬреЛ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рдбрд╝рд╛рдИ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдЗрд╕ рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реВрдВ:

рдЫрд╡рд┐

  1. run_session - рдиреЗрд╕реНрдЯреЗрдб рд▓реВрдкреНрд╕ рдпрд╣рд╛рдВ рд▓рд╛рдЧреВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЪреАрдЬреЛрдВ рдХреЗ рд╕рд╛рде рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЫрдВрдЯрдиреА рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ; рдЕрдВрдд рдореЗрдВ рд░рд┐рдкреЛрд░реНрдЯ рдкрд╛рда рдЙрддреНрдкрдиреНрди рд╣реЛрдЧрд╛ рдФрд░ рд╕рддреНрд░ рд▓реЙрдЧ рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛
  2. test_combination - рдкрд╣рд▓реЗ рд╕реЗ рдкрд╣рдиреЗ рдЧрдП рд╕рднреА рдЖрдЗрдЯрдо рд░реАрд╕реЗрдЯ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдкрд╣рдирдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХреЛ рдмрд╛рд░-рдмрд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЪрд░рд┐рддреНрд░ рдХреЛ рдПрдХ рдирдП "рдЖрдЙрдЯрдлрд┐рдЯ" рдореЗрдВ рддреИрдпрд╛рд░ рдХрд░рдирд╛, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдЕрдЧрд▓рд╛ рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ
  3. simulate_fight - рдПрдХ рд╣реА do_attack рд╡рд┐рдзрд┐ рдХреЛ 1000 рдмрд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдкреНрд░рддреНрдпреЗрдХ рдпреБрджреНрдз рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд▓реЙрдЧ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ

рдлрд╝рдВрдХреНрд╢рди run_session, test_combination, simulate_fight
#     :
def run_session(SESSION_LOG):

    #  :
    fight_number = 1

    #    :
    all_fight_data = ''

    #      :
    for new_righthand_id in RIGHT_HANDS:
        #      :
        for new_lefthand_id in LEFT_HANDS:
            #   :
            for new_gloves_id in GLOVES:
                #   :
                for new_head_id in HEADS:
                    #   :
                    for new_chest_id in CHESTS:
                        #   :
                        for new_pants_id in PANTS:
                            #   :
                            for new_boots_id in BOOTS:

                                new_fight_data = test_combination(fight_number,
                                                                  new_righthand_id,
                                                                  new_lefthand_id,
                                                                  new_gloves_id,
                                                                  new_head_id,
                                                                  new_chest_id,
                                                                  new_pants_id,
                                                                  new_boots_id
                                                                  )

                                all_fight_data += new_fight_data
                                fight_number += 1

    #       :
    save_data_to_file(SESSION_LOG, all_fight_data)

#       :
def test_combination(fight_number, righthand_id, lefthand_id, gloves_id, head_id, chest_id, pants_id, boots_id):

    #   :
    my_rogue.unwear_all()

    #     :
    my_rogue.wear_item(0, righthand_id, RIGHT_HANDS)

    #     :
    my_rogue.wear_item(1, lefthand_id, LEFT_HANDS)

    #  :
    my_rogue.wear_item(2, gloves_id, GLOVES)

    #  :
    my_rogue.wear_item(3, head_id, HEADS)

    #  :
    my_rogue.wear_item(4, chest_id, CHESTS)

    #  :
    my_rogue.wear_item(5, pants_id, PANTS)

    #  :
    my_rogue.wear_item(6, boots_id, BOOTS)


    #    "" :
    equipment_profile = str(righthand_id) + ',' + str(lefthand_id) + ',' + str(gloves_id) + \
                            ',' + str(head_id) + ',' + str(chest_id) + ',' + str(pants_id) + \
                            ',' + str(boots_id)

    print(my_rogue)
    print('equipment_profile =', equipment_profile)

    #        :
    return simulate_fight(equipment_profile, fight_number)


#  ,    attacks_total   :
def simulate_fight(equipment_profile, fight_number):
    global LOG_EVERY_FIGHT

    #   :
    sum_of_attack_types = [0, 0, 0, 0]
    sum_of_damage = 0

    #  ,     :
    if LOG_EVERY_FIGHT:
        fight_log = ''
        verdicts = {
            0: '.',
            1: '.',
            2: '.',
            3: '.'
        }

    attacks = 0
    global ATTACKS_IN_FIGHT

    #  ,      :
    while attacks < ATTACKS_IN_FIGHT:
        #  - :
        damage_info = my_rogue.do_attack()

        #   :
        sum_of_damage += damage_info[1]

        #   :
        sum_of_attack_types[ damage_info[0] ] += 1

        attacks += 1

        #  ,   :
        if LOG_EVERY_FIGHT:
            fight_log += verdicts[ damage_info[0] ] + ' ' + str(damage_info[1]) + ' ' + str(sum_of_damage) + '\n'

    #  ,  :
    if LOG_EVERY_FIGHT:
        #  :
        filename = 'fight_logs/log ' + str(fight_number) + '.txt'
        save_data_to_file(filename, fight_log)

    #       :
    attacks_statistic = ','.join(map(str, sum_of_attack_types))
    fight_data = '#' + str(fight_number) + '/' + equipment_profile + '/' + str(sum_of_damage) + ',' + attacks_statistic + '\n'

    return fight_data



рд▓реЙрдЧ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рджреЛ рд╕рд░рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ:

рдХрд╛рд░реНрдп save_data, add_data
#     :
def save_data_to_file(filename, data):
    with open(filename, 'w', encoding='utf8') as f:
        print(data, file=f)


#     :
def append_data_to_file(filename, data):
    with open(filename, 'a+', encoding='utf8') as f:
        print(data, file=f)


рдЗрд╕рд▓рд┐рдП, рдЕрдм рд╕рддреНрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд▓рд┐рдЦрдирд╛ рд╢реЗрд╖ рд╣реИред рд╣рдо рдЖрд╡рд╢реНрдпрдХ рдорд╛рдирдХ рдкрд╛рдпрдерди рдореЙрдбреНрдпреВрд▓ рднреА рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдХрд┐рд╕ рд╕реЗрдЯ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╡рд┐рд╢реНрд╡ Warcraft рдХреЗ рдкреНрд░рд╢рдВрд╕рдХреЛрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╡рд╣рд╛рдВ рд╕реЗ рдЙрдкрдХрд░рдг рдЙрдард╛рдП, рд▓реЗрдХрд┐рди рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд╣рд╛рдВ рдХреЗ рдореИрдХреЗрдирд┐рдХ рдХрд╛ рд╕рд┐рд░реНрдл рдПрдХ рдЕрдиреБрдорд╛рдирд┐рдд рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рд╣реИред

рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛрдб
#     :
from random import randint

#     :
from math import floor

#    :
from datetime import datetime
from time import time

#    :
from operations_with_files import *

#      :
from equipment_custom import *
#from equipment_wow_classic import *
#from equipment_obvious_strong import *
#from equipment_obvious_weak import *


# :
if __name__ == "__main__":

    #     :
    ATTACKS_IN_FIGHT = 1000

    #     :
    LOG_EVERY_FIGHT = False

    #     :
    SESSION_LOG = 'session_logs/for ' + EQUIPMENT_COLLECTION + ' results ' + datetime.strftime(datetime.now(), '%Y-%m-%d_%H-%M-%S') + '.txt'
    print('SESSION_LOG =', SESSION_LOG)

    #  :
    my_rogue = Rogue()

    #  :
    time_begin = time()

    #   :
    run_session(SESSION_LOG)

    #   :
    time_session = time() - time_begin
    duration_info = ' : ' + str( round(time_session, 2) ) + ' .'
    print('\n' + duration_info)
    append_data_to_file(SESSION_LOG, duration_info + '\n')

    #  ,   5    :
    top_sets_info = show_best_sets(SESSION_LOG, 5)

    #          :
    append_data_to_file(SESSION_LOG, top_sets_info)

else:
    print('__name__ is not "__main__".')


1728 рдХреА рд▓рдбрд╝рд╛рдИ рдХрд╛ рдПрдХ рд╕рддреНрд░ рдореЗрд░реЗ рд▓реИрдкрдЯреЙрдк рдкрд░ 5 рд╕реЗрдХрдВрдб рд▓реЗрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк LOG_EVERY_FIGHT = True рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рддреНрдпреЗрдХ рд▓рдбрд╝рд╛рдИ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╡рд╛рд▓реА рдлрд╛рдЗрд▓реЗрдВ fight_logs рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреА, рд▓реЗрдХрд┐рди рд╕рддреНрд░ рдкрд╣рд▓реЗ рд╣реА 9 рд╕реЗрдХрдВрдб рдХрд╛ рд╕рдордп рд▓реЗрдЧрд╛ред рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╕рддреНрд░ рд▓реЙрдЧ рд╕рддреНрд░_рд▓реЙрдЧ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:

рд▓реЙрдЧ рдХреА рдкрд╣рд▓реА 10 рд▓рд╛рдЗрдиреЗрдВ
#1/1,1,1,1,1,1,1/256932,170,324,346,160
#2/1,1,1,1,1,1,2/241339,186,350,331,133
#3/1,1,1,1,1,2,1/221632,191,325,355,129
#4/1,1,1,1,1,2,2/225359,183,320,361,136
#5/1,1,1,1,1,3,1/243872,122,344,384,150
#6/1,1,1,1,1,3,2/243398,114,348,394,144
#7/1,1,1,1,2,1,1/225342,170,336,349,145
#8/1,1,1,1,2,1,2/226414,173,346,322,159
#9/1,1,1,1,2,2,1/207862,172,322,348,158
#10/1,1,1,1,2,2,2/203492,186,335,319,160


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд╕ рдПрдХ рд╕рддреНрд░ рдкрдХрдбрд╝рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ; рдЖрдкрдХреЛ рдЙрди рд╕реИрдХрдбрд╝реЛрдВ рд░реЗрдЦрд╛рдУрдВ рд╕реЗ рдЙрди рдЪреАрдЬреЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рд╕рд░реНрд╡реЛрддреНрддрдо рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдиреЗрддреГрддреНрд╡ рдХрд░рддреЗ рдереЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рджреЛ рдФрд░ рдХрд╛рд░реНрдп рд▓рд┐рдЦреЗрдВрдЧреЗред рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рдкреНрд░рд╛рдкреНрдд рд▓реЙрдЧ рдХреЛ рдЦреЛрд▓рдирд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рд▓рдбрд╝рд╛рдИ рдХреЗ рд▓рд┐рдП рдиреБрдХрд╕рд╛рди рдХреА рдорд╛рддреНрд░рд╛ рдХреА рдПрдХ рд╕реВрдЪреА рдмрдирд╛рдПрдВ, рдЗрд╕реЗ рд╕реЙрд░реНрдЯ рдХрд░реЗрдВ рдФрд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 5 рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЪреАрдЬреЛрдВ рдХреЗ рдирд╛рдо рдиреАрдЪреЗ рд▓рд┐рдЦреЗрдВред

рд╢реАрд░реНрд╖ рдЧрд┐рдпрд░ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп
#       :
def show_best_sets(SESSION_LOG, number_of_sets):

    #      :
    list_log = list()

    #   ,      list_log ,
    #          :
    with open(SESSION_LOG, 'r', encoding='utf8') as f:
        lines = f.readlines()
        for line in lines:
            try:
                list_line = line.split('/')
                list_fight = list_line[2].split(',')
                list_log.append( ( int(list_fight[0]), list_line[1].split(',') ) )
            except IndexError:
                break

    #  ,      :
    list_log.sort(reverse=True)

    #   ,  number_of_sets     :
    top_sets_info = ''
    for i in range(0, number_of_sets):
        current_case = list_log[i]

        #           :
        clear_report = ''
        equipment_names = ''
        equip_group = 1

        for equip_id in current_case[1]:
            equipment_names += '\n' + get_equip_name(equip_id, equip_group)
            equip_group += 1

        line_for_clear_report = '\n#' + str(i+1) + ' - ' + str(current_case[0]) + '   :' + equipment_names
        clear_report += line_for_clear_report

        print('\n', clear_report)
        top_sets_info += clear_report + '\r'

    return top_sets_info


#     id:
def get_equip_name(equip_id, equip_group):
    equip_id = int(equip_id)

    if equip_group == 1:
        return RIGHT_HANDS[equip_id][0]
    if equip_group == 2:
        return LEFT_HANDS[equip_id][0]
    if equip_group == 3:
        return GLOVES[equip_id][0]
    if equip_group == 4:
        return HEADS[equip_id][0]
    if equip_group == 5:
        return CHESTS[equip_id][0]
    if equip_group == 6:
        return PANTS[equip_id][0]
    if equip_group == 7:
        return BOOTS[equip_id][0]


рдЕрдм 5 рдЪрдпрдиреЛрдВ рдХреЗ рд╕рд╛рде рд▓реЙрдЧ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдЕрдВрдд рдореЗрдВ, рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛:

рдЕрдВрдд рдореЗрдВ рдкрдардиреАрдп рд▓реЙрдЧ рд▓рд╛рдЗрдиреЗрдВ
 : 4.89 .

#1 - 293959   :
 
 
 
 
 
 
  

#2 - 293102   :
 
 
 
 
 
 
 

#3 - 290573   :
 
 
 
 
 
 
  

#4 - 287592   :
 
 
 
 
 
 
 

#5 - 284929   :
 
 
 
 
 
 
  


рдЪрд░рдг 4 - рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рд╕реНрдерд┐рд░рддрд╛ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВ


рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдпрд╛рджреГрдЪреНрдЫрд┐рдХрддрд╛ рдХреЗ рддрддреНрд╡ рд╣реИрдВ: рдЬрдм рд░реИрдВрдбрд┐рдВрдЯ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдЯреНрд░реЛрдХ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдмрд╛рд░-рдмрд╛рд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдЬрдм рдПрдХ рд╣реА рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рд╕рддреНрд░ рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВ, рддреЛ рд╢реАрд░реНрд╖ 5 рдЪрдпрди рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдмрд╣реБрдд рдЦреБрд╢ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЗ рд▓рд┐рдпрд╛ред

рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдЙрдкрдХрд░рдг рдХрд╛ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдЯ рдмрдирд╛рдпрд╛ "рд╕реНрдкрд╖реНрдЯ_рд╕реНрдЯреНрд░реЛрдВрдЧ", рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд┐рдирд╛ рднреА рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЪреАрдЬреЛрдВ рдХрд╛ рдХреМрди рд╕рд╛ рд╕рдВрдЧреНрд░рд╣ рдпрд╣рд╛рдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ:

рд╕реНрдкрд╖реНрдЯ_рд╕реНрдЯреНрд░реЛрдВрдЧ рд╕реЗрдЯ рджреЗрдЦреЗрдВ
EQUIPMENT_COLLECTION = 'obvious_strong'

RIGHT_HANDS = dict()
RIGHT_HANDS[1] = (' ', 5000, 0, 0, 0, 0, 0)
RIGHT_HANDS[2] = (' ', 800, 0, 0, 0, 0, 0)
RIGHT_HANDS[3] = (' ', 20, 0, 0, 0, 0, 0)

LEFT_HANDS = dict()
LEFT_HANDS[1] = (' ', 4000, 0, 0, 0, 0, 0)
LEFT_HANDS[2] = (' ', 10, 0, 0, 0, 0, 0)

GLOVES = dict()
GLOVES[1] = (' ', 1, 0, 0, 0, 0, 0)

HEADS = dict()
HEADS[1] = (' ', 1, 0, 0, 0, 0, 0)

CHESTS = dict()
CHESTS[1] = (' ', 1, 0, 0, 0, 0, 0)

PANTS = dict()
PANTS[1] = (' ', 1, 0, 0, 0, 0, 0)

BOOTS = dict()
BOOTS[1] = (' ', 1, 0, 0, 0, 0, 0)


рдЗрд╕ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде 6 рдЭрдЧрдбрд╝реЗ рд╣реЛрдВрдЧреЗ (3 рддрд▓рд╡рд╛рд░реЗрдВ * 2 рдЦрдВрдЬрд░ * 1 * 1 * 1 * 1 * 1 * 1)ред рд╢реАрд░реНрд╖ 5 рдореЗрдВ, рд▓рдбрд╝рд╛рдИ рдЬрд┐рд╕рдореЗрдВ рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рддрд▓рд╡рд╛рд░ рдФрд░ рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рдЦрдВрдЬрд░ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдареАрдХ рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рджреЛ рд╕рдмрд╕реЗ рдордЬрдмреВрдд рдмреНрд▓реЗрдб рдХреЗ рд╕рд╛рде рдЪрдпрди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рд╕реНрдерд╛рди рдкрд░ рдЖрдПрдЧрд╛ред рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП, рдЕрдкреЗрдХреНрд╖рд╛рдПрдВ рдкреВрд░реА рд╣реБрдИрдВред

рдпрд╣рд╛рдБ рдЗрд╕ рд╕реЗрдЯ рдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдПрдХ рджреГрд╢реНрдп рд╣реИ:

рдЫрд╡рд┐

рдЕрдЧрд▓реЗ, рдореИрдВ рдХрдо рд╕реЗ рдХрдо рдмреЛрдирд╕ рдХреА рд░рд╛рд╢рд┐ рдЗрди рдмреНрд▓реЗрдб рджреНрд╡рд╛рд░рд╛ рджрд┐рдП рдЧрдП рдХреЗ рдЕрдВрддрд░ рдХреЛ рдХрдо рд╕реЗ 5000, 800, 20 рдФрд░ 4000, 10 рдХреЛрдХреНрд░рдорд╢рдГ 5, 4, 3 рдФрд░ 2, 1, (рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдпрд╣ рд╕реЗрдЯ рдлрд╝рд╛рдЗрд▓ "рдЙрдкрдХрд░рдг_ob рд╕реНрдкрд╖реНрдЯ_рд╡рд╛рдХреНрдп рдУрдбреЛрдореЛ" рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ)ред рдФрд░ рдпрд╣рд╛рдВ, рдЕрдЪрд╛рдирдХ, рд╕рдмрд╕реЗ рдордЬрдмреВрдд рддрд▓рд╡рд╛рд░ рдФрд░ рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рдЦрдВрдЬрд░ рдХрд╛ рд╕рдВрдпреЛрдЬрди рд╢реАрд░реНрд╖ рдкрд░ рдирд┐рдХрд▓рд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ, рджреЛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рд╣рдерд┐рдпрд╛рд░ рдЕрдЪрд╛рдирдХ рдЕрдВрддрд┐рдо рд╕реНрдерд╛рди рдкрд░ рдЖрдП: рдЗрд╕реЗ

рдЫрд╡рд┐

рдХреИрд╕реЗ рд╕рдордЭрд╛ рдЬрд╛рдП? рд╕рдВрдЧреНрд░рд╣ рдХреА рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рд╣реА рд╡реНрдпрд╡рд╕реНрдерд╛ рдореЗрдВ рдЙрдореНрдореАрджреЗрдВ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рд╣реАрдВ, рд▓реЗрдХрд┐рди рдЙрдирдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреА рдбрд┐рдЧреНрд░реА рдХрд╛рдлреА рдХрдо рд╣реЛ рдЧрдИ рдереА ред рдФрд░ рдЕрдм, рд▓рдбрд╝рд╛рдИ рдХреЗ рджреМрд░рд╛рди рджреБрд░реНрдШрдЯрдирд╛рдУрдВ (рдорд┐рд╕рд╛рдЗрд▓реЛрдВ рдФрд░ рд╣рд┐рдЯ, рдорд╣рддреНрд╡рдкреВрд░реНрдг рдФрд░ рдЧреИрд░-рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рдЯ, рдЖрджрд┐ рдХрд╛ рдЕрдиреБрдкрд╛рдд) рдиреЗ рдирд┐рд░реНрдгрд╛рдпрдХ рдорд╣рддреНрд╡ рд╣рд╛рд╕рд┐рд▓ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИред

рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ "рд╢реАрд░реНрд╖ рдмреНрд▓реЗрдб рдХреА рдпреБрдЧрд▓" рдХрд┐рддрдиреА рдмрд╛рд░ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рдЧрд┐рд░реЗрдЧреАред рдореИрдВрдиреЗ 100 рдРрд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдП (рдЗрд╕рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ "рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓реЙрдиреНрдЪ рд▓рд╛рдЗрдиреНрд╕" рдХреЛ 100 рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рдЪрдХреНрд░ рдореЗрдВ рд▓рдкреЗрдЯ рджрд┐рдпрд╛ рдФрд░ рдЗрд╕ рдкреВрд░реЗ "рд╕реБрдкрд░ рд╕рддреНрд░" рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рд▓реЙрдЧ рд░рдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛)ред рдпрд╣рд╛рдВ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рджреГрд╢реНрдп рд╣реИ:

рдЫрд╡рд┐

рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рд╣рдореЗрд╢рд╛ рд╕реНрдерд┐рд░ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ ("рд╕рд╣реА" рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ 34% "рдЧрд▓рдд" рдХреЗ рдмрдирд╛рдо 66%)ред

рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рд╕реНрдерд┐рд░рддрд╛ рдкрд░реАрдХреНрд╖рдг рдХреА рдЧрдИ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмреЛрдирд╕ рдХреЗ рдЕрдВрддрд░ рдХреЗ рд╕реАрдзреЗ рдЖрдиреБрдкрд╛рддрд┐рдХ рд╣реИ ред

рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдЕрдЪреНрдЫреА рдЪреАрдЬреЛрдВ рдХреЗ рдмреЛрдирд╕ рдХреА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдЕрдВрддрд░ рдЬреЛ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдХрдордЬреЛрд░ рд░реВрдк рд╕реЗ рдмреЛрдзрдЧрдореНрдп рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ "рд╡рд░реНрд▓реНрдб рдСрдл Warcraft"), рдРрд╕реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЕрд╕реНрдерд┐рд░ (рдЕрд╕реНрдерд┐рд░, рдЕрд╕реНрдерд┐рд░, рдЖрджрд┐) рд╣реЛрдВрдЧреЗред

рдЪрд░рдг 5 - рд▓рдЪреАрд▓рд╛рдкрди рдмрдврд╝рд╛рдирд╛


рд╣рдо рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рд╕реЛрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред

рд╣рдо рд╕рдлрд▓рддрд╛ рдХреА рдХрд╕реМрдЯреА рдХреЛ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд░рддреЗ рд╣реИрдВ: "рд╢реАрд░реНрд╖ рдмреНрд▓реЗрдб рдХреА рдпреБрдЧрд▓" 99% рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐: 34% рдРрд╕реЗ рдорд╛рдорд▓реЗ рд╣реИрдВред

рдпрджрд┐ рдЖрдк рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ рд╕реНрд╡реАрдХреГрдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдирд╣реАрдВ рдмрджрд▓рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рднреА рдЪрдпрди рдХреЗ рд▓рд┐рдП рд▓рдбрд╝рд╛рдЗрдпреЛрдВ рдХреЗ рдЕрдиреБрдХрд░рдг рд╕реЗ рд╕рдВрдХреНрд░рдордг, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП), рддреЛ рдпрд╣ рд╣рдорд╛рд░реЗ рдореЙрдбрд▓ рдХреЗ рдХреБрдЫ рдорд╛рддреНрд░рд╛рддреНрдордХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

  • рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рдбрд╝рд╛рдИ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓реЗрдХрд┐рди рдХрдИ, рддреЛ рд▓реЙрдЧ рдореЗрдВ рдЕрдВрдХрдЧрдгрд┐рддреАрдп рдорд╛рдзреНрдп рджрд░реНрдЬ рдХрд░реЗрдВ, рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдФрд░ рд╕рдмрд╕реЗ рдмреБрд░рд╛ рддреНрдпрд╛рдЧреЗрдВ, рдЖрджрд┐ред
  • рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХрдИ рдкрд░реАрдХреНрд╖рдг рд╕рддреНрд░ рдЖрдпреЛрдЬрд┐рдд рдХрд░реЗрдВ, рдФрд░ рдлрд┐рд░ "рдФрд╕рдд" рднреА рд▓реЗрдВ
  • рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП 1000 рд╣рд┐рдЯ рд╕реЗ рд╣реА рдпреБрджреНрдз рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреЛ рдХрд┐ рдХреБрд▓ рдмреЛрдирд╕ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдмрд╣реБрдд рдХрд░реАрдмреА рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рдкрд░рд┐рдгрд╛рдо рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдореБрдЭреЗ рдпреБрджреНрдз рдХреА рдПрдХ рд▓рдВрдмреА рдЕрд╡рдзрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдлрд▓ рд╡рд┐рдЪрд╛рд░ рд▓рдЧ рд░рд╣рд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрд╕ рдЬрдЧрд╣ рдкрд░ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд▓рдВрдмрд╛ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирд╛ред

рдореИрдВ рдЙрд╕ рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реВрдВрдЧрд╛ рдЬреЛ рд▓рдбрд╝рд╛рдИ рдХреЛ 1,000 рд╕реЗ 10,000 рд╕реНрдЯреНрд░реЛрдХ рддрдХ рд▓рдВрдмрд╛ рдХрд░ рджреЗрдЧрд╛, рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рд╕реНрдерд┐рд░рддрд╛ рдХреЛ рдмрдврд╝рд╛рдПрдЧрд╛ (рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдирд┐рд░рдВрддрд░ ATTACKS_IN_FIGHT рдХреЛ 10000 рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛)ред рдФрд░ рдпрд╣ рдРрд╕рд╛ рд╣реИ:

рдЫрд╡рд┐

рдлрд┐рд░ рдЙрд╕рдиреЗ 10,000 рд╕реЗ 100,000 рд╢реЙрдЯреНрд╕ рддрдХ рдмрдврд╝рд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ , рдФрд░ рдЗрд╕рдХреЗ рдХрд╛рд░рдг рдПрдХ рд╕реМ рдкреНрд░рддрд┐рд╢рдд рд╕рдлрд▓рддрд╛ рдорд┐рд▓реАред рдЙрд╕рдХреЗ рдмрд╛рдж, рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдЦреЛрдЬ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЙрдиреНрд╣реЛрдВрдиреЗ рд╣рд┐рдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛, рдЬреЛ 99% рд╕рдлрд▓рддрд╛рдУрдВ рдХреЛ рдЕрддреНрдпрдзрд┐рдХ рдЧрдгрдирд╛рдУрдВ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рджрд┐рд▓рд╛рдПрдЧрд╛ред 46 875 рдкрд░ рд░реЛрдХ рджрд┐рдпрд╛ред

рдЫрд╡рд┐

рдпрджрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рд▓рдбрд╝рд╛рдИ рдХреА рд▓рдВрдмрд╛рдИ рд╡рд╛рд▓реА рдкреНрд░рдгрд╛рд▓реА рдХреА 99% рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдХрд╛ рдореЗрд░рд╛ рдЕрдиреБрдорд╛рди рд╕рд╣реА рд╣реИ, рддреЛ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рджреЛ рдкрд░реАрдХреНрд╖рдг 0.01 * 0.01 = 0.0001 рддреНрд░реБрдЯрд┐ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдХрдо рдХрд░рддреЗ рд╣реИрдВ ред

рдФрд░ рдЕрдм, рдЕрдЧрд░ рдЖрдк 1,728 рд▓рдбрд╝рд╛рдИ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП 46,875 рд╕реНрдЯреНрд░реЛрдХ рдХреА рд▓рдбрд╝рд╛рдИ рдХреЗ рд╕рд╛рде рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ 233 рд╕реЗрдХрдВрдб рд▓реЗрдЧрд╛ рдФрд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рджрд┐рд▓рд╛рдПрдЧрд╛ рдХрд┐ "рдорд╛рд╕реНрдЯрд░ рдХреА рддрд▓рд╡рд╛рд░" рдирд┐рдпрдо:

46 875 рд╣рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП 1728 рдХреА рд▓рдбрд╝рд╛рдИ рдХреЗ рдкрд░рд┐рдгрд╛рдо
 : 233.89 .

#1 - 13643508   :
 
 
 
 
 
 
 

#2 - 13581310   :
 
 
 
 
 
 
  

#3 - 13494544   :
 
 
 
 
 
 
 

#4 - 13473820   :
 
 
 
 
 
 
  

#5 - 13450956   :
 
 
 
 
 
 
 


PS рдФрд░ рдпрд╣ рд╕рдордЭрд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИ: рджреЛ "рдорд╛рд╕реНрдЯрд░ рдХреА рддрд▓рд╡рд╛рд░реЗрдВ" рдЖрдкрдХреЛ 10 рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЛ рдХреМрд╢рд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВ, рдЬреЛ рдХрд┐ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдореИрдХреЗрдирд┐рдХреНрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╕реНрдЯреНрд░реЛрдХреНрд╕ рдХреЗ рдлрд┐рд╕рд▓рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ 0.7% рдХреЗ рдмрдЬрд╛рдп X рдпрд╛ 2X рдХреНрд╖рддрд┐ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рдкрд░ рд▓рдЧрднрдЧ 40% рд╕реНрдЯреНрд░реЛрдХ рдЬреЛрдбрд╝рддрд╛ рд╣реИред

рд╡рд╛рд╣ рдкреНрд░рд╢рдВрд╕рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рди рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдкрд░рд┐рдгрд╛рдо:

46 875 рд╣рд┐рдЯреНрд╕ рдХреА 1296 рд▓рдбрд╝рд╛рдЗрдпреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдо (рд╡рд╛рд╣ рдХреНрд▓рд╛рд╕рд┐рдХ рдЧрд░реНрд╡)
 : 174.58 .


#1 - 19950930   :
  '
  '
  
 
 
 
  

#2 - 19830324   :
  '
  '
 
 
 
 
  

#3 - 19681971   :
  '
  '
  
 
 
 
  

#4 - 19614600   :
  '
  '
 
 
 
 
  

#5 - 19474463   :
  '
  '
  
 
 
 
 


рд╕рд╛рд░рд╛рдВрд╢


  1. тАФ . , , 4 * 4 * 3 * 3 * 3 * 3 * 2 = 2592, .. 33% . .
  2. : , , , .
  3. , : , , , .

рдореИрдВрдиреЗ рд╕рд╛рд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛрдб рдЧрд┐рдердм рдкрд░ рдкреЛрд╕реНрдЯ рдХрд░ рджрд┐рдП ред

рдкреНрд░рд┐рдп рд╕рдореБрджрд╛рдп, рдореБрдЭреЗ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред

UPD 04/08/2020 рд╕реЗ:
рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджDeerenaros, knotri рддрдерд╛ GriboksрдореИрдВрдиреЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рд╣рдЬрд╛рд░реЛрдВ рд▓рдбрд╝рд╛рдЗрдпреЛрдВ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рдПрдХ рд╣рд┐рдЯ рдХреЗ рд▓рд┐рдП рдЧрдгрд┐рддреАрдп рдЕрдкреЗрдХреНрд╖рд╛ рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рдЖрдзрд╛рд░ рдкрд░, рдЙрдкрдХрд░рдг рд░реИрдВрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдХреЛрдб рд╕реЗ рдмрд╛рд╣рд░ рдЭрдЧрдбрд╝реЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдм рдХреБрдЫ рдлреЗрдВрдХ рджрд┐рдпрд╛, рдХреЗ рдмрдЬрд╛рдп simulate_fight рд╕рдорд╛рд░реЛрд╣ рдореИрдВ рдХрд┐рдпрд╛ calculate_expectation ред рдЖрдЙрдЯрдкреБрдЯ рдкрд░, рдореБрдЭреЗ рд╡рд╣реА рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддреЗ рд╣реИрдВред рдкрд░рд┐рдгрд╛рдореА рдХреЛрдб рдХреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ ред

All Articles