nerdphoenix

Physical Basic Attack DPS

Jan 9th, 2022 (edited)
822
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 23.76 KB | None | 0 0
  1. from __future__ import print_function
  2. from tkinter import *
  3. from itertools import combinations
  4. from itertools import chain
  5.  
  6.  
  7. class God():
  8.   def __init__(self,name,baseAS,levelASBonus,health,mana,attackDamage,powerToAttackDamageMulti):
  9.     self.name = name
  10.     self.baseAS = baseAS
  11.     self.levelASBonus = levelASBonus
  12.     self.health = health
  13.     self.mana = mana
  14.     self.attackDamage = attackDamage
  15.     self.powerToAttackDamageMulti = powerToAttackDamageMulti
  16.  
  17. charybdis = God("Charybdis", 0.95, 0.32, 1980, 980, 90, 1)
  18. medusa = God("Medusa", 0.95, 0.28, 2010, 900, 90, 1)
  19. izanami = God("Izanami", 0.95, 0.34, 1990, 910, 84, 1)
  20. heim = God("Heimdallr", 0.96, 0.3, 2080, 910, 92, 1)
  21. amc = God("Ah Muzen Cab", 0.95, 0.34, 1910, 1030, 82, 1)
  22. danza = God("Danzaburou", 1, 0.28, 2020, 990, 92, 1)
  23. cupid = God("Cupid", 0.95, 0.36, 1885, 1010, 81, 1)
  24. chernobog = God("Chernobog", 0.95, 0.34, 2050, 980, 88, 1)
  25. skadi = God("Skadi", 0.95, 0.32, 2030, 920, 85, 1)
  26. artemis = God("Artemis", 0.95, 0.34, 1950, 885, 85, 1)
  27. anhur = God("Anhur", 0.9, 0.34, 2020, 920, 90, 1)
  28. apollo = God("Apollo", 0.95, 0.34, 1990, 1025, 92, 1)
  29. cernunnos = God("Cernunnos", 1, 0.28, 2080, 960, 87, 1)
  30. hachiman = God("Hachiman", 1, 0.26, 1995, 950, 86, 1)
  31. xbalanque = God("Xbalanque", 0.95, 0.3, 1955, 960, 90, 1)
  32. jing = God("Jing Wei", 1, 0.28, 2005, 925, 92, 1)
  33. rama = God("Rama", 0.95, 0.34, 1980, 885, 90, 1)
  34.  
  35.  
  36. class Item():
  37.     def __init__ (self,name,power,flatPen,percentPen,attackSpeed,critChance,lifesteal,cdr,mana,health,basicAttackDamage,gold):
  38.         self.name = name
  39.         self.power = power
  40.         self.flatPen = flatPen
  41.         self.percentPen = percentPen
  42.         self.attackSpeed = attackSpeed
  43.         self.critChance = critChance
  44.         self.lifesteal = lifesteal
  45.         self.cdr = cdr
  46.         self.mana = mana
  47.         self.health = health
  48.         self.basicAttackDamage = basicAttackDamage
  49.         self.gold = gold
  50.  
  51. exe = Item("The Executioner",40,0,0,0.2,0,0,0,0,0,0,2200)
  52. qins = Item("Qin's Sais",40,0,0,0.2,0,0,0,0,0,0,2600)
  53. asi = Item("Asi",25,15,0,0.25,0,0.15,0,0,0,0,2550)
  54. titansBane = Item("Titan's Bane",45,0,0.2,0,0,0,0,0,0,0,2550)
  55. beatstick = Item("Brawler's Beatstick",50,15,0,0,0,0,0,0,0,0,2350)
  56. jotunnsWrath = Item("Jotunn's Wrath",40,10,0,0,0,0,0.2,150,0,0,2200)
  57. crusher = Item("Crusher",40,15,0,0.1,0,0,0,0,0,0,2400)
  58. trans = Item("Transcendance",40,0,0,0.2,0,0,0.1,1050,0,0,2600)
  59. hydras = Item("Hydra's Lament",40,0,0.1,0,0,0.1,0,0,0,0,2150)
  60. heartseeker = Item("Heartseeker",65,0,0.1,0,0,0,0,200,0,0,2900)
  61. dominance = Item("Dominance",55,0,0.1,0,0,0,0,200,0,0,2500)
  62. deathbringer = Item("Deathbringer",50,0,0,0,0.3,0,0,0,0,0,2900)
  63. rage = Item("Rage",35,0,0,0,0.45,0,0,0,0,0,2500)
  64. soulEater = Item("Soul Eater",40,0,0.1,0,0,0.15,0.1,0,0,0,2100)
  65. devos = Item("Devourer's Gauntlet",70,0,0,0,0,0.29,0,0,0,0,2300)
  66. bloodforge = Item("Bloodforge",75,0,0,0,0,0.15,0,0,0,0,2750)
  67. frostbound = Item("Frostbound Hammer",35,0,0,0,0,0,0,0,250,0,2300)
  68. runeforge = Item("Runeforged Hammer",45,0,0,0,0,0,0,0,250,0,2400)
  69. sledge = Item("Sledge",40,0,0,0,0,0,0,150,250,0,2300)
  70. blackthorn = Item("Blackthorn Hammer",30,0,0,0,0,0,0.1,200,400,0,2300)
  71. runic = Item("Runic Shield",35,0,0,0,0,0,0,0,150,0,2150)
  72. ancile = Item("Ancile",40,0,0,0,0,0,0.1,0,0,0,2250)
  73. cadShield = Item("Caduceus Shield",25,0,0,0,0,0,0,0,100,0,2500)
  74. ichaival = Item("Ichaival",35,0,0,0.3,0,0,0,0,0,0,2450)
  75. silverbranch = Item("Silverbranch Bow",30,0,0.2,0.3,0,0,0,0,0,0,2400)
  76. atalantas = Item("Atalanta's Bow",30,0,0,0.2,0.2,0.1,0,0,0,0,2350)
  77. windDemon = Item("Wind Demon",25,0,0.1,0.25,0.2,0,0,0,0,0,2500)
  78. shadowsteel = Item("Shadowsteel Shuriken",40,0,0,0.2,0.2,0,0,0,0,0,2400)
  79. failnot = Item("Failnot",40,0,0.1,0.1,0.2,0,0.2,0,0,0,2650)
  80. obow = Item("Odysseus' Bow",0,0,0,0.3,0,0,0,0,0,0,2100)
  81. rangdas = Item("Rangda's Mask",70,0,0,0,0,0,0,0,0,0,2500)
  82. goldenBlade = Item("Golden Blade",35,0,0,0.2,0,0,0,0,0,0,2000)
  83. scs = Item("Stone Cutting Sword",50,0,0,0,0,0,0,0,0,0,2200)
  84. hastenedKatana = Item("Hastened Katana",25,0,0,0.15,0,0,0,0,0,0,2450)
  85. serrated = Item("Serrated Edge",30,0,0.2,0,0,0.1,0,0,0,0,2650)
  86. berserkersShield = Item("Berserker's Shield",30,0,0,0.25,0,0,0,0,0,0,2400)
  87.  
  88. jotunnsVigor = Item("Jotunn's Vigor",40,10,0,0,0,0,0.2,150,0,0,2800)
  89. jotunnsFerocity = Item("Jotunn's Ferocity",40,10,0,0,0,0,0.2,150,0,0,2800)
  90. envenomedDeathbringer = Item("Envenomed Deathbringer",50,0,0,0,0.3,0,0,0,0,0,3500)
  91. maliciousDeathbringer = Item("Malicious Deathbringer",50,0,0,0,0.3,0,0,0,0,0,3500)
  92.  
  93. huntersCowl = Item("Hunter's Cowl",60,0,0,0.35,0,0.15,0,0,0,0,2200)
  94. deathsEmbrace = Item("Death's Embrace",65,0,0,0,0,0,0,0,200,0,2150)
  95. deathsTemper = Item("Death's Temper",50,0,0,0.3,0,0,0,0,100,0,2150)
  96. ornateArrow = Item("Ornate Arrow",0,0,0,0.35,0.25,0,0,0,150,60,2150)
  97. diamondArrow = Item("Diamond Arrow",0,0,0,0.6,0,0,0,0,100,80,2150)
  98.  
  99. empty = Item("Empty",0,0,0,0,0,0,0,0,0,0,0)
  100.  
  101. physicalItems = [exe,qins,asi,titansBane,beatstick,jotunnsWrath,jotunnsVigor,jotunnsFerocity,crusher,trans,hydras,heartseeker,dominance,deathbringer,envenomedDeathbringer,maliciousDeathbringer,rage,soulEater,devos,bloodforge,frostbound,runeforge,sledge,blackthorn,runic,cadShield,ancile,ichaival,atalantas,silverbranch,obow,failnot,windDemon,shadowsteel,berserkersShield,goldenBlade,scs,hastenedKatana,serrated,rangdas,empty]
  102.  
  103.  
  104. physicalStarters = [huntersCowl,deathsEmbrace,deathsTemper,ornateArrow,diamondArrow,empty]
  105.  
  106. physicalItemsNames = []
  107. for i in physicalItems:
  108.     physicalItemsNames.append(i.name)
  109. physicalItemsNames.append(" ")
  110.  
  111. physicalStarterNames = []
  112. for i in physicalStarters:
  113.     physicalStarterNames.append(i.name)
  114. physicalStarterNames.append(" ")
  115.  
  116. def CalculateDamage():
  117.     physicalItems = [exe,qins,asi,titansBane,beatstick,jotunnsWrath,jotunnsVigor,jotunnsFerocity,crusher,trans,hydras,heartseeker,dominance,deathbringer,envenomedDeathbringer,maliciousDeathbringer,rage,soulEater,devos,bloodforge,frostbound,runeforge,sledge,blackthorn,runic,cadShield,ancile,ichaival,atalantas,silverbranch,obow,failnot,windDemon,shadowsteel,berserkersShield,goldenBlade,scs,hastenedKatana,serrated,rangdas,empty]
  118.     requiredItems = []
  119.  
  120.     if(starterVariable.get()!=" "):
  121.         for i in physicalStarters:
  122.             if i.name == starterVariable.get():
  123.                 requiredItems.append(i)
  124.  
  125.  
  126.     if(requiredItems1Variable.get()!=" "):
  127.         for i in physicalItems:
  128.             if i.name == requiredItems1Variable.get():
  129.                 requiredItems.append(i)
  130.                 if i.name != "Empty":
  131.                     physicalItems.remove(i)
  132.  
  133.     if(requiredItems2Variable.get()!=" "):
  134.         for i in physicalItems:
  135.             if i.name == requiredItems2Variable.get():
  136.                 requiredItems.append(i)
  137.                 if i.name != "Empty":
  138.                     physicalItems.remove(i)
  139.  
  140.     if(requiredItems3Variable.get()!=" "):
  141.         for i in physicalItems:
  142.             if i.name == requiredItems3Variable.get():
  143.                 requiredItems.append(i)
  144.                 if i.name != "Empty":
  145.                     physicalItems.remove(i)
  146.  
  147.     if(requiredItems4Variable.get()!=" "):
  148.         for i in physicalItems:
  149.             if i.name == requiredItems4Variable.get():
  150.                 requiredItems.append(i)
  151.                 if i.name != "Empty":
  152.                     physicalItems.remove(i)
  153.  
  154.     if(requiredItems5Variable.get()!=" "):
  155.         for i in physicalItems:
  156.             if i.name == requiredItems5Variable.get():
  157.                 requiredItems.append(i)
  158.                 if i.name != "Empty":
  159.                     physicalItems.remove(i)
  160.  
  161.     allbuilds =combinations(physicalItems, 6 - len(requiredItems))
  162.  
  163.     buildSorterBuilds = ["blank","blank"]
  164.     buildSorterDamage = [0,9999999999]
  165.     for k in allbuilds:
  166.         build = requiredItems + list(k)
  167.  
  168.         power = 0
  169.         AS = medusa.baseAS + (medusa.baseAS * medusa.levelASBonus)
  170.         health = medusa.health
  171.         mana = medusa.mana
  172.         cdr = 0
  173.         lifesteal = 0
  174.         flatPen = 0
  175.         percentPen = 0
  176.         totalGold = 0
  177.         critChance = 0
  178.         basicAttackDamage = 0
  179.         globalMulti = 1
  180.         transBool = False
  181.         silverbranchBool = False
  182.         obowBool = False
  183.         obowStacks = 1
  184.         katanasBool = True
  185.         critBonus = 0.75
  186.         temperMulti = 1
  187.         jotunns = 0
  188.         deathbringers = 0
  189.         ichBool = False
  190.         ichStacks = 0
  191.         qinsBool = False
  192.         target1Prots = float(target1ProtsEntry.get())
  193.         target2Prots = float(target2ProtsEntry.get())
  194.         exeBool = False
  195.         exeStacks = 0
  196.         ferocityBool = False
  197.         ferocityStacks = 0
  198.         dominancePen = 0
  199.  
  200.  
  201.         for i in build:
  202.             AS = AS + (medusa.baseAS * i.attackSpeed)
  203.             power = power + i.power
  204.             critChance = critChance + i.critChance
  205.             health = health + i.health
  206.             mana = mana + i.mana
  207.             cdr = cdr + i.cdr
  208.             lifesteal = lifesteal + i.lifesteal
  209.             flatPen = flatPen + i.flatPen
  210.             percentPen = percentPen + i.percentPen
  211.             basicAttackDamage = basicAttackDamage + i.basicAttackDamage
  212.             totalGold = totalGold + i.gold
  213.  
  214.             if i.name == "Transcendance":
  215.                 transBool = True
  216.  
  217.             elif i.name == "Rangda's Mask" and rangdasPassiveVariable.get():
  218.                 globalMulti += 0.15
  219.  
  220.             elif i.name == "Runeforged Hammer" and runeforgePassiveVariable.get():
  221.                 globalMulti += 0.2
  222.  
  223.             elif i.name == "Silverbranch Bow":
  224.                 silverbranchBool = True
  225.  
  226.             elif i.name == "Odysseus' Bow":
  227.                 obowBool = True
  228.  
  229.             elif i.name == "Ichaival":
  230.                 ichBool = True
  231.  
  232.             elif i.name == "The Executioner":
  233.                 exeBool = True
  234.  
  235.             elif i.name == "Deathbringer" or i.name == "Envenomed Deathbringer" or i.name == "Malicious Deathbringer":
  236.                 critBonus = critBonus + 0.3
  237.  
  238.             elif i.name == "Dominance":
  239.                 dominancePen = 0.15
  240.  
  241.             elif i.name == "Death's Temper":
  242.                 temperMulti = 1.35
  243.  
  244.             elif i.name == "Qin's Sais":
  245.                 qinsBool = True
  246.  
  247.             elif i.name == "Jotunn's Ferocity" and ferocityPassiveVariable.get():
  248.                 ferocityBool = True
  249.  
  250.             elif katanasEnabledVariable.get() == False:
  251.                 if i.name == "Golden Blade" or i.name == "Stone Cutting Sword" or i.name == "Hastened Katana" or i.name == "Serrated Edge":
  252.                     katanasBool = False
  253.  
  254.             if i.name == "Jotunn's Wrath" or i.name == "Jotunn's Ferocity" or i.name == "Jotunn's Vigor":
  255.                 jotunns += 1
  256.  
  257.             if i.name == "Deathbringer" or i.name == "Envenomed Deathbringer" or i.name == "Malicious Deathbringer":
  258.                 deathbringers += 1
  259.  
  260.  
  261.  
  262.  
  263.         if percentPen > 0.4:
  264.             percentPen = 0.4
  265.         if flatPen > 50:
  266.             flatPen = 50
  267.         if cdr > 0.4:
  268.             cdr = 0.4
  269.         if lifesteal > 1:
  270.             lifesteal = 1
  271.  
  272.         if lifesteal >= float(minimumLifeStealEntry.get()) and cdr >=float(minimumCDREntry.get()) and katanasBool and jotunns <= 1 and deathbringers <= 1:
  273.  
  274.             if transBool:
  275.                 power = power + (mana * 0.03)
  276.  
  277.             if AS > 2.5 and silverbranchBool:
  278.               power = power + (AS - 2.5) / 0.01
  279.  
  280.             timeToBeSpentAttacking = float(timeSpentAttackingEntry.get())
  281.             timeSpentAttacking = 0
  282.             target1Damage = 0
  283.             target2Damage = 0
  284.  
  285.  
  286.             while timeSpentAttacking < timeToBeSpentAttacking:
  287.                 if AS < 2.5:
  288.                     timeSpentAttacking = timeSpentAttacking + (1/AS)
  289.                 else:
  290.                     timeSpentAttacking = timeSpentAttacking + (1/2.5)
  291.  
  292.                 target1Damage = target1Damage + (((1+(critBonus*critChance))*(temperMulti)*(medusa.attackDamage + basicAttackDamage + power)) * min((100/(100 + ((target1Prots * (1-(percentPen + dominancePen))) - flatPen))),1)*globalMulti)
  293.                 target2Damage = target2Damage + (((1+(critBonus*critChance))*(temperMulti)*(medusa.attackDamage + basicAttackDamage + power)) * min((100/(100 + ((target2Prots * (1-(percentPen + dominancePen))) - flatPen))),1)*globalMulti)
  294.  
  295.                 if obowStacks == 3:
  296.                   target1Damage = target1Damage = target1Damage + ((15+((0.6)*(medusa.attackDamage + basicAttackDamage + power))) * min((100/(100 + ((target1Prots * (1-(percentPen))) - flatPen))),1)*globalMulti)
  297.  
  298.                   target2Damage = target2Damage = target2Damage + ((15+((0.6)*(medusa.attackDamage + basicAttackDamage + power))) * min((100/(100 + ((target2Prots * (1-(percentPen))) - flatPen))),1)*globalMulti)
  299.                   obowStacks = 1
  300.                 elif (obowBool == True):
  301.                   obowStacks = obowStacks + 1
  302.  
  303.                 if (ichBool == True and ichStacks !=3):
  304.                   power = power + 10
  305.                   ichStacks = ichStacks + 1
  306.  
  307.                 if (ferocityBool == True and ferocityStacks !=10):
  308.                   globalMulti = globalMulti + 0.02
  309.                   ferocityStacks = ferocityStacks + 1
  310.  
  311.                 if exeBool == True and exeStacks == 0:
  312.                   exeProtShred1 = target1Prots * 0.07
  313.                   exeProtShred2 = target2Prots * 0.07
  314.  
  315.                   target1Prots = target1Prots - exeProtShred1
  316.                   target2Prots = target2Prots - exeProtShred2
  317.                   exeStacks = exeStacks + 1
  318.                 elif exeBool == True and exeStacks != 4:
  319.                   target1Prots = target1Prots - exeProtShred1
  320.                   target2Prots = target2Prots - exeProtShred2
  321.                   exeStacks = exeStacks + 1
  322.  
  323.                 if qinsBool:
  324.                   qinsPercent1 = ((2/750)*float(target1HealthEntry.get())) - (7/3)
  325.                   if qinsPercent1 < 3:
  326.                     qinsPercent1 = 3
  327.                   if qinsPercent1 > 5:
  328.                     qinsPercent1 = 5
  329.  
  330.                   qinsPercent2 = ((2/750)*float(target2HealthEntry.get())) - (7/3)
  331.                   if qinsPercent2 < 3:
  332.                     qinsPercent2 = 3
  333.                   if qinsPercent2 > 5:
  334.                     qinsPercent2 = 5
  335.  
  336.                   target1Damage = target1Damage + ((float(target1HealthEntry.get())*(qinsPercent1/100))* min((100/(100 + ((target2Prots * (1-(percentPen + dominancePen))) - flatPen))),1)*globalMulti)
  337.  
  338.                   target2Damage = target2Damage + ((float(target2HealthEntry.get())*(qinsPercent2/100))* min((100/(100 + ((target2Prots * (1-(percentPen + dominancePen))) - flatPen))),1)*globalMulti)
  339.  
  340.             target1Damage = target1Damage / timeSpentAttacking
  341.             target2Damage = target2Damage / timeSpentAttacking
  342.             if target1Damage >= float(minimumTarget1DamageEntry.get()) and target2Damage >= float(minimumTarget2DamageEntry.get()):
  343.                 if target1SortVariable.get():
  344.                     string = ""
  345.                     for i in build:
  346.                         string = string + i.name + ", "
  347.                     string = string + "\nTarget 1 DPS: " + str(round(target1Damage,2)) + " Target 2 DPS: " + str(round(target2Damage,2))+"\n"
  348.  
  349.                     if len(buildSorterBuilds) == 2:
  350.                         buildSorterBuilds.insert(1,string)
  351.                         buildSorterDamage.insert(1,target1Damage)
  352.  
  353.  
  354.                     else:
  355.                         i = round(len(buildSorterBuilds)/2) - 1
  356.                         loop = True
  357.                         while(loop):
  358.                             if(target1Damage < buildSorterDamage[i-1]):
  359.                                 i -= 1
  360.                             elif(target1Damage > buildSorterDamage[i]):
  361.                                 i += 1
  362.                             else:
  363.                                 loop = False
  364.                                 buildSorterBuilds.insert(i,string)
  365.                                 buildSorterDamage.insert(i,target1Damage)
  366.  
  367.                                 if len(buildSorterBuilds) > float(buildLimitForSorterEntry.get()) + 2:
  368.                                     del buildSorterBuilds[1]
  369.                                     del buildSorterDamage[1]
  370.  
  371.                 elif target2SortVariable.get():
  372.                     string = ""
  373.                     for i in build:
  374.                         string = string + i.name + ", "
  375.                     string = string + "\nTarget 1 DPS: " + str(round(target1Damage,2)) + " Target 2 DPS: " + str(round(target2Damage,2))+"\n"
  376.  
  377.                     if len(buildSorterBuilds) == 2:
  378.                         buildSorterBuilds.insert(1,string)
  379.                         buildSorterDamage.insert(1,target2Damage)
  380.  
  381.  
  382.                     else:
  383.                         i = round(len(buildSorterBuilds)/2) - 1
  384.                         loop = True
  385.                         while(loop):
  386.                             if(target2Damage < buildSorterDamage[i-1]):
  387.                                 i -= 1
  388.                             elif(target2Damage > buildSorterDamage[i]):
  389.                                 i += 1
  390.                             else:
  391.                                 loop = False
  392.                                 buildSorterBuilds.insert(i,string)
  393.                                 buildSorterDamage.insert(i,target2Damage)
  394.  
  395.                                 if len(buildSorterBuilds) > float(buildLimitForSorterEntry.get()) + 2:
  396.                                     del buildSorterBuilds[1]
  397.                                     del buildSorterDamage[1]
  398.  
  399.                 else:
  400.                     for i in build:
  401.                         print(i.name, end = ", ")
  402.                     print("\nTarget 1 DPS:" , round(target1Damage,2) , " Target 2 DPS:" , round(target2Damage,2),"\n")
  403.  
  404.     if target1SortVariable.get() or target2SortVariable.get():
  405.         del buildSorterBuilds[0]
  406.         del buildSorterBuilds[-1]
  407.  
  408.         for i in buildSorterBuilds:
  409.             print(i)
  410.  
  411.     print("-------------------------------------------------------")
  412.  
  413.  
  414. def min(x, y):
  415.     if x<y:
  416.         return x
  417.     return y
  418.  
  419. ############################################################################################
  420.  
  421. root = Tk()
  422. root.title("Auto Attack Damage")
  423.  
  424. button = Button(root, text="Run Program", padx=25, command = CalculateDamage)
  425. button.grid(row = 0, column = 0)
  426.  
  427. timeSpentAttackingLabel = Label(root,text="Time Spent Attacking:")
  428. timeSpentAttackingLabel.grid(row = 1, column = 0)
  429. timeSpentAttackingEntry = Entry(root, width=5)
  430. timeSpentAttackingEntry.grid(row = 1, column = 1)
  431. timeSpentAttackingEntry.insert(0,"5")
  432.  
  433. itemsLabel = Label(root,text="Required Items:")
  434. itemsLabel.grid(row = 2, column = 0)
  435.  
  436. requiredItems1Variable = StringVar()
  437. requiredItems1Variable.set(" ")
  438. requiredItems1 = OptionMenu(root,  requiredItems1Variable, *physicalItemsNames)
  439. requiredItems1.grid(row=2, column=1)
  440.  
  441. requiredItems2Variable = StringVar()
  442. requiredItems2Variable.set(" ")
  443. requiredItems2 = OptionMenu(root,  requiredItems2Variable, *physicalItemsNames)
  444. requiredItems2.grid(row=2, column=2)
  445.  
  446. requiredItems3Variable = StringVar()
  447. requiredItems3Variable.set(" ")
  448. requiredItems3 = OptionMenu(root,  requiredItems3Variable, *physicalItemsNames)
  449. requiredItems3.grid(row=2, column=3)
  450.  
  451. requiredItems4Variable = StringVar()
  452. requiredItems4Variable.set(" ")
  453. requiredItems4 = OptionMenu(root,  requiredItems4Variable, *physicalItemsNames)
  454. requiredItems4.grid(row=2, column=4)
  455.  
  456. requiredItems5Variable = StringVar()
  457. requiredItems5Variable.set(" ")
  458. requiredItems5 = OptionMenu(root,  requiredItems5Variable, *physicalItemsNames)
  459. requiredItems5.grid(row=2, column=5)
  460.  
  461. starterLabel = Label(root,text="Starter Item:")
  462. starterLabel.grid(row = 3, column = 0)
  463.  
  464. starterVariable = StringVar()
  465. starterVariable.set(" ")
  466. starter = OptionMenu(root,  starterVariable, *physicalStarterNames)
  467. starter.grid(row=3, column=1)
  468.  
  469.  
  470. target1ProtsLabel = Label(root,text="Target 1 Protections:")
  471. target1ProtsLabel.grid(row = 4, column = 0)
  472. target1ProtsEntry = Entry(root, width=5)
  473. target1ProtsEntry.grid(row = 4, column = 1)
  474. target1ProtsEntry.insert(0,"60")
  475.  
  476. emptyLabel2 = Label(root,text="     ")
  477. emptyLabel2.grid(row = 4, column = 2)
  478.  
  479. target1HealthLabel = Label(root,text="Target 1 Health:")
  480. target1HealthLabel.grid(row = 4, column = 3)
  481. target1HealthEntry = Entry(root, width=5)
  482. target1HealthEntry.grid(row = 4, column = 4)
  483. target1HealthEntry.insert(0,"2000")
  484.  
  485.  
  486. target2ProtsLabel = Label(root,text="Target 2 Protections:")
  487. target2ProtsLabel.grid(row = 5, column = 0)
  488. target2ProtsEntry = Entry(root, width=5)
  489. target2ProtsEntry.grid(row = 5, column = 1)
  490. target2ProtsEntry.insert(0,"200")
  491.  
  492. emptyLabel3 = Label(root,text="     ")
  493. emptyLabel3.grid(row = 5, column = 2)
  494.  
  495. target2HealthLabel = Label(root,text="Target 2 Health:")
  496. target2HealthLabel.grid(row = 5, column = 3)
  497. target2HealthEntry = Entry(root, width=5)
  498. target2HealthEntry.grid(row = 5, column = 4)
  499. target2HealthEntry.insert(0,"3000")
  500.  
  501. minimumTarget1DamageLabel = Label(root,text="Minimum Target 1 DPS:")
  502. minimumTarget1DamageLabel.grid(row = 6, column = 0)
  503. minimumTarget1DamageEntry = Entry(root, width=5)
  504. minimumTarget1DamageEntry.grid(row = 6, column = 1)
  505. minimumTarget1DamageEntry.insert(0,"0")
  506.  
  507. emptyLabel4 = Label(root,text="     ")
  508. emptyLabel4.grid(row = 6, column = 2)
  509.  
  510. minimumTarget2DamageLabel = Label(root,text="Minimum Target 2 DPS:")
  511. minimumTarget2DamageLabel.grid(row = 6, column = 3)
  512. minimumTarget2DamageEntry = Entry(root, width=5)
  513. minimumTarget2DamageEntry.grid(row = 6, column = 4)
  514. minimumTarget2DamageEntry.insert(0,"0")
  515.  
  516. minimumCDRLabel = Label(root,text="Minimum Cooldown Reduction:")
  517. minimumCDRLabel.grid(row = 7, column = 0)
  518. minimumCDREntry = Entry(root, width=5)
  519. minimumCDREntry.grid(row = 7, column = 1)
  520. minimumCDREntry.insert(0,"0")
  521.  
  522. emptyLabel5 = Label(root,text="     ")
  523. emptyLabel5.grid(row = 7, column = 2)
  524.  
  525. minimumLifeStealLabel = Label(root,text="Minimum Lifesteal:")
  526. minimumLifeStealLabel.grid(row = 7, column = 3)
  527. minimumLifeStealEntry = Entry(root, width=5)
  528. minimumLifeStealEntry.grid(row = 7, column = 4)
  529. minimumLifeStealEntry.insert(0,"0")
  530.  
  531. disablePassivesLabel = Label(root,text="Enable/Disable Item Passives:")
  532. disablePassivesLabel.grid(row = 8, column = 0)
  533.  
  534. rangdasPassiveVariable = BooleanVar()
  535. rangdasPassiveVariable.set(False)
  536. rangdasPassiveCheckBox = Checkbutton(root, text="Rangda's Mask", variable = rangdasPassiveVariable)
  537. rangdasPassiveCheckBox.grid(row = 8, column = 1)
  538.  
  539. runeforgePassiveVariable = BooleanVar()
  540. runeforgePassiveVariable.set(False)
  541. runeforgePassiveCheckBox = Checkbutton(root, text="Runeforged Hammer", variable = runeforgePassiveVariable)
  542. runeforgePassiveCheckBox.grid(row = 8, column = 2)
  543.  
  544. ferocityPassiveVariable = BooleanVar()
  545. ferocityPassiveVariable.set(False)
  546. ferocityPassiveCheckBox = Checkbutton(root, text="Jotunn's Ferocity", variable = ferocityPassiveVariable)
  547. ferocityPassiveCheckBox.grid(row = 8, column = 3)
  548.  
  549. katanasEnabledVariable = BooleanVar()
  550. katanasEnabledVariable.set(False)
  551. katanasEnabledCheckBox = Checkbutton(root, text="Katana Tree", variable = katanasEnabledVariable)
  552. katanasEnabledCheckBox.grid(row = 8, column = 4)
  553.  
  554. target1SortVariable = BooleanVar()
  555. target1SortVariable.set(False)
  556. target1SortCheckBox = Checkbutton(root, text="Sort Builds By Damage to Target 1", variable = target1SortVariable)
  557. target1SortCheckBox.grid(row = 9, column = 1)
  558.  
  559. target2SortVariable = BooleanVar()
  560. target2SortVariable.set(False)
  561. target2SortCheckBox = Checkbutton(root, text="Sort Builds By Damage to Target 2", variable = target2SortVariable)
  562. target2SortCheckBox.grid(row = 9, column = 3)
  563.  
  564. buildLimitForSorterLabel = Label(root,text="Number of Builds Displayed When Sorting:")
  565. buildLimitForSorterLabel.grid(row = 10, column = 0)
  566. buildLimitForSorterEntry = Entry(root, width=5)
  567. buildLimitForSorterEntry.grid(row = 10, column = 1)
  568. buildLimitForSorterEntry.insert(0,"20")
  569.  
  570.  
  571. root.mainloop()
  572.  
Add Comment
Please, Sign In to add comment