Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- """
- Created on Sun Jun 09 21:54:14 2013
- @author: Andrew Tharp
- """
- import wx
- class WarframeDefenseDrops(wx.Frame):
- def __init__(self, parent, id):
- wx.Frame.__init__(self, parent)
- raceBox = wx.SingleChoiceDialog(None, 'What race are you fighting?', 'Select Race', ['Corpus', 'Grineer', 'Infested'])
- if raceBox.ShowModal() == wx.ID_OK:
- race = raceBox.GetStringSelection()
- else:
- return(None)
- if race == 'Corpus':
- waveFiveBox = wx.SingleChoiceDialog(None, 'What mod dropped in wave 5?', 'Select Mod', ['Convulsion', 'Shocking Touch', 'Stormbringer', 'Split Chamber', 'Stretch', 'Continuity', 'Banshee Chassis Blueprint', 'Tower 3 Exterminate', 'Master Thief', 'Tower 2 Exterminate', 'Tower 2 Raid', 'Uncommon Fusion Core', 'Rare Fusion Core'])
- if waveFiveBox.ShowModal() == wx.ID_OK:
- firstWaveDrop = waveFiveBox.GetStringSelection()
- else:
- return(None)
- waveTenBox = wx.SingleChoiceDialog(None, 'What mod dropped in wave 10?', 'Select Mod', ['Convulsion', 'Shocking Touch', 'Stormbringer', 'Split Chamber', 'Stretch', 'Continuity', 'Banshee Chassis Blueprint', 'Tower 3 Exterminate', 'Master Thief', 'Tower 2 Exterminate', 'Tower 2 Raid', 'Uncommon Fusion Core', 'Rare Fusion Core'])
- if waveTenBox.ShowModal() == wx.ID_OK:
- secondWaveDrop = waveTenBox.GetStringSelection()
- else:
- return(None)
- drops = ['Convulsion', 0.0, .1518,
- 'Shocking Touch', .1518, .3035,
- 'Stormbringer', .3035, .3351,
- 'Split Chamber', .3351, .3667,
- 'Stretch', .3667, .3983,
- 'Continuity', .3983, .4299,
- 'Banshee Chassis Blueprint', .4299, .4615,
- 'Tower 3 Exterminate', .4615, .4930,
- 'Master Thief', .4930, .5131,
- 'Tower 2 Exterminate', .5131, .6649,
- 'Tower 2 Raid', .6649, .8167,
- 'Uncommon Fusion Core', .8167, .9684,
- 'Rare Fusion Core', .9684, 1]
- elif race == 'Grineer':
- waveFiveBox = wx.SingleChoiceDialog(None, 'What mod dropped in wave 5?', 'Select Mod', ['Deep Freeze', 'North Wind', 'Cryo Rounds', 'Hells Chamber', 'Stretch', 'Streamline', 'Banshee Systems Blueprint', 'Tower 3 Exterminate', 'Handspring', 'Tower 2 Exterminate', 'Tower 2 Raid', 'Uncommon Fusion Core', 'Rare Fusion Core'])
- if waveFiveBox.ShowModal() == wx.ID_OK:
- firstWaveDrop = waveFiveBox.GetStringSelection()
- else:
- return(None)
- waveTenBox = wx.SingleChoiceDialog(None, 'What mod dropped in wave 10?', 'Select Mod', ['Deep Freeze', 'North Wind', 'Cryo Rounds', 'Hells Chamber', 'Stretch', 'Streamline', 'Banshee Systems Blueprint', 'Tower 3 Exterminate', 'Handspring', 'Tower 2 Exterminate', 'Tower 2 Raid', 'Uncommon Fusion Core', 'Rare Fusion Core'])
- if waveTenBox.ShowModal() == wx.ID_OK:
- secondWaveDrop = waveTenBox.GetStringSelection()
- else:
- return(None)
- drops = ['Deep Freeze', 0.0, .1518,
- 'North Wind', .1518, .3035,
- 'Cryo Rounds', .3035, .3351,
- 'Hells Chamber', .3351, .3667,
- 'Stretch', .3667, .3983,
- 'Streamline', .3983, .4299,
- 'Banshee Systems Blueprint', .4299, .4615,
- 'Tower 3 Exterminate', .4615, .4930,
- 'Handspring', .4930, .5131,
- 'Tower 2 Exterminate', .5131, .6649,
- 'Tower 2 Raid', .6649, .8167,
- 'Uncommon Fusion Core', .8167, .9684,
- 'Rare Fusion Core', .9684, 1]
- else:
- waveFiveBox = wx.SingleChoiceDialog(None, 'What mod dropped in wave 5?', 'Select Mod', ['Hellfire', 'Heated Charge', 'Molten Impact', 'Barrel Diffusion', 'Streamline', 'Focus', 'Banshee Helmet Blueprint', 'Tower 3 Exterminate', 'Thunderbolt', 'Uncommon Fusion Core', 'Rare Fusion Core', 'Tower 2 Exterminate', 'Tower 2 Raid'])
- if waveFiveBox.ShowModal() == wx.ID_OK:
- firstWaveDrop = waveFiveBox.GetStringSelection()
- else:
- return(None)
- waveTenBox = wx.SingleChoiceDialog(None, 'What mod dropped in wave 10?', 'Select Mod', ['Hellfire', 'Heated Charge', 'Molten Impact', 'Barrel Diffusion', 'Streamline', 'Focus', 'Banshee Helmet Blueprint', 'Tower 3 Exterminate', 'Thunderbolt', 'Uncommon Fusion Core', 'Rare Fusion Core', 'Tower 2 Exterminate', 'Tower 2 Raid'])
- if waveTenBox.ShowModal() == wx.ID_OK:
- secondWaveDrop = waveTenBox.GetStringSelection()
- else:
- return(None)
- drops = ['Hellfire', 0.0, .1518,
- 'Heated Charge', .1518, .3035,
- 'Molten Impact', .3035, .3351,
- 'Barrel Diffusion', .3351, .3667,
- 'Streamline', .3667, .3983,
- 'Focus', .3983, .4299,
- 'Banshee Helmet Blueprint', .4299, .4615,
- 'Tower 3 Exterminate', .4615, .4930,
- 'Thunderbolt', .4930, .5131,
- 'Uncommon Fusion Core', .5131, .6649,
- 'Rare Fusion Core', .6649, .6965,
- 'Tower 2 Exterminate', .6965, .8482,
- 'Tower 2 Raid', .8482, 1.0]
- predictedDrops = DropPredictor(firstWaveDrop, secondWaveDrop, drops)
- fiveWaveOutBox = wx.SingleChoiceDialog(None, 'The following mods can drop in five waves', 'Drops For Five Waves Out', predictedDrops.getWaveFiveDrops(), style = wx.OK)
- fiveWaveOutBox.ShowModal()
- tenWaveOutBox = wx.SingleChoiceDialog(None, 'The following mods can drop in ten waves', 'Drops For Ten Waves Out', predictedDrops.getWaveTenDrops(), style = wx.OK)
- tenWaveOutBox.ShowModal()
- proceedBox = wx.MessageDialog(None, 'Do you want to continue?', 'Continue?', wx.YES_NO)
- proceed = proceedBox.ShowModal()
- while proceed == wx.ID_YES:
- firstWaveDrop = secondWaveDrop
- waveBox = wx.SingleChoiceDialog(None, 'What mod dropped?', 'Select Mod', predictedDrops.getWaveFiveDrops())
- if waveBox.ShowModal() == wx.ID_OK:
- secondWaveDrop = waveBox.GetStringSelection()
- else:
- return(None)
- predictedDrops = DropPredictor(firstWaveDrop, secondWaveDrop, drops, lowerIncrement = predictedDrops.getLowerIncrement(), upperIncrement = predictedDrops.getUpperIncrement())
- fiveWaveOutBox = wx.SingleChoiceDialog(None, 'The following mods can drop in five waves', 'Drops For Five Waves Out', predictedDrops.getWaveFiveDrops(), style = wx.OK)
- fiveWaveOutBox.ShowModal()
- tenWaveOutBox = wx.SingleChoiceDialog(None, 'The following mods can drop in ten waves', 'Drops For Ten Waves Out', predictedDrops.getWaveTenDrops(), style = wx.OK)
- tenWaveOutBox.ShowModal()
- proceedBox = wx.MessageDialog(None, 'Do you want to continue?', 'Continue?', wx.YES_NO)
- proceed = proceedBox.ShowModal()
- class DropPredictor:
- def __init__(self, firstDrop, secondDrop, dropList, lowerIncrement=0, upperIncrement=1):
- self.lowerIncrement = lowerIncrement
- self.upperIncrement = upperIncrement
- self.potentialDrops = []
- self.nextPotentialDrops = []
- i = dropList.index(firstDrop)
- j = dropList.index(secondDrop)
- firstLowerSeed = dropList[i+1]
- firstUpperSeed = dropList[i+2]
- secondLowerSeed = dropList[j+1]
- secondUpperSeed = dropList[j+2]
- if secondUpperSeed > firstLowerSeed: #finds the lower and upper bounds for the first increment
- if secondLowerSeed - firstUpperSeed > 0:
- newLowerIncrement = secondLowerSeed - firstUpperSeed
- else:
- newLowerIncrement = secondLowerSeed - firstUpperSeed
- newUpperIncrement = secondUpperSeed - firstLowerSeed
- else:
- newLowerIncrement = 1 - firstUpperSeed + secondLowerSeed
- newUpperIncrement = 1 - firstLowerSeed + secondUpperSeed
- if self.lowerIncrement < newLowerIncrement and newLowerIncrement >= 0:
- self.lowerIncrement = newLowerIncrement
- elif newLowerIncrement < 0 and self.upperIncrement == 1:
- self.lowerIncrement = newLowerIncrement
- if self.upperIncrement > newUpperIncrement:
- self.upperIncrement = newUpperIncrement
- if self.upperIncrement < self.lowerIncrement:
- self.upperIncrement = 1
- minNextSeed = (secondLowerSeed + self.lowerIncrement) % 1
- maxNextSeed = (secondUpperSeed + self.upperIncrement) % 1
- if minNextSeed < maxNextSeed:
- for x in range(2,39,3): #increments over the indexs for the lower seed of drops
- if dropList[x] > minNextSeed:
- self.potentialDrops.append(dropList[x-2])
- if dropList[x] > maxNextSeed:
- break
- else:
- for x in range(2,39,3):
- if dropList[x] > minNextSeed:
- self.potentialDrops.append(dropList[x-2])
- elif dropList[x-1] < maxNextSeed:
- self.potentialDrops.append(dropList[x-2])
- minNextNextSeed = (minNextSeed + self.lowerIncrement) % 1
- maxNextNextSeed = (maxNextSeed + self.upperIncrement) % 1
- if minNextNextSeed < maxNextNextSeed:
- for x in range(2,39,3): #increments over the indexs for the lower seed of drops
- if dropList[x] > minNextNextSeed:
- self.nextPotentialDrops.append(dropList[x-2])
- if dropList[x] > maxNextNextSeed:
- break
- else:
- for x in range(2,39,3):
- if dropList[x] > minNextNextSeed:
- self.nextPotentialDrops.append(dropList[x-2])
- elif dropList[x-1] < maxNextNextSeed:
- self.nextPotentialDrops.append(dropList[x-2])
- def getLowerIncrement(self): #returns the lower bound for the low end of the mission's increment
- return(self.lowerIncrement)
- def getUpperIncrement(self): #returns the upper bound for the high end of the mission' increment
- return(self.upperIncrement)
- def getWaveFiveDrops(self): #returns the drop list for five waves out
- return(self.potentialDrops)
- def getWaveTenDrops(self): #returns the drop list for ten waves out
- return(self.nextPotentialDrops)
- if __name__ == '__main__':
- app = wx.PySimpleApp()
- frame = WarframeDefenseDrops(parent=None,id=-1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement