Note that this is still on development stage, and therefore some things are still not working. Only a simple Damage Calculator have been implemented.
Please report any bugs/errors/etc.
Regards,
fRodzet
Here is some of the Code - incase you find some misscalculations or anything, please comment them here
Main Code
Code:
Public Class MainForm Private Builds As New Dictionary(Of String, String()) Private Selection As New Dictionary(Of String, String()) Private Skills, Passives As New Dictionary(Of String, String()) Private Sub MainForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Character Builds 'Melee Builds Builds.Add("Barbarian", {"Main-Hand Weapon + Off-Hand Weapon", "Main-Hand Weapon + Shield", "Two-Hand Weapon"}) Builds.Add("Monk", {"Main-Hand Weapon + Off-Hand Weapon", "Main-Hand Weapon + Shield", "Two-Hand Weapon"}) 'Ranged Builds Builds.Add("Wizard", {"Main-Hand Weapon + Source", "Main-Hand Weapon + Shield", "Two-Hand Weapon"}) Builds.Add("Demon Hunter", {"Main-Hand Crossbow + Off-Hand Crossbow", "Main-Hand Crossbow + Shield", "Main-Hand Crossbow + Quiver", "Two-Hand Weapon + Quiver"}) Builds.Add("Witch Doctor", {"Main-Hand Weapon + Mojo", "Main-Hand Weapon + Shield", "Two-Hand Weapon"}) 'Calculator Selection Selection.Add("Damage Calculator", {}) 'Skills & Passives Selection 'Barbarian Skills.Add("Barbarian", {"Cleave", "Frenzy", "Bash", "Hammer of the Ancients", "Rend", "Seismic Slam", "Whirlwind", "Ground Stomp", "Leap", "Sprint", "Ignore Pain", "Ancient Spear", "Revenge", "Furious Charge", "Overpower", "Weapon Throw", "Threatening Shout", "Battle Rage", "War Cry", "Earthquake", "Call of the Ancients", "Wrath of the Berserker"}) Passives.Add("Barbarian", {"Non", "Ruthless", "Weapons Master", "Berserker Rage", "No Escape", "Brawler"}) 'Wizard Skills.Add("Wizard", {"Magic Missile", "Shock Pulse", "Spectral Blade", "Electrocute", "Ray of Frost", "Arcane Orb", "Arcane Torrent", "Disintegrate", "Frost Nova", "Diamond Skin", "Slow Time", "Teleport", "Wave of Force", "Energy Twister", "Hydra", "Meteor", "Blizzard", "Ice Armor", "Storm Armor", "Magic Weapon", "Familiar", "Energy Armor", "Explosive Blast", "Mirror Image", "Archon"}) Passives.Add("Wizard", {"Non", "Glass Cannon", "Cold Blooded", "Conflagration", "Arcane Dynamo"}) 'Monk Skills.Add("Monk", {"Fists of Thunder", "Deadly Reach", "Crippling Wave", "Way of the Hundred Fists", "Lashing Tail Kick", "Tempest Rush", "Wave of Light", "Blinding Flash", "Breath of Heaven", "Serenity", "Inner Sanctuary", "Dashing Strike", "Exploding Palm", "Sweeping Wind", "Cyclone Strike", "Seven-Sided Strike", "Mystic Ally", "Mantra of Evasion", "Mantra of Retribution", "Mantra of Healing", "Mantra of Conviction"}) Passives.Add("Monk", {"Non", "Guiding Light", "Combination Strike"}) 'Demon Hunter Skills.Add("Demon Hunter", {"Hungering Arrow", "Entangling Shot", "Bola Shot", "Grenades", "Impale", "Rapid Fire", "Chakram", "Elemental Arrow", "Caltrops", "Smoke Screen", "Shadow Power", "Vault", "Preparation", "Companion", "Marked for Death", "Evasive Fire", "Fan of Knives", "Spike Trap", "Sentry", "Strafe", "Multishot", "Cluster Arrow", "Rain of Vengeance"}) Passives.Add("Demon Hunter", {"Non", "Steady Aim", "Cull the Weak", "Archery", "Sharpshooter", "Ballistics"}) 'Witch Doctor Skills.Add("Witch Doctor", {"Poison Dart", "Corpse Spiders", "Plague of Toads", "Fire Bomb", "Grasp of the Dead", "Firebats", "Haunt", "Locust Swarm", "Summon Zombie Dogs", "Horrify", "Spirit Walk", "Hex", "Soul Harvest", "Sacrifice", "Mass Confusion", "Zombie Charger", "Spirit Barrage", "Acid Cloud", "Wall of Zombies", "Gargantuan", "Big Bad Voodoo", "Fetish Army"}) Passives.Add("Witch Doctor", {"Gruesome Feast", "Zombie Handler", "Pierce the Veil", "Fetish Sycophants"}) ClassCombo.Items.Clear() CalculatorCombo.Items.Clear() For Each Type In Builds.Keys ClassCombo.Items.Add(Type) Next For level = 1 To 60 LevelCombo.Items.Add(level) Next For paragon = 0 To 100 ParagonCombo.Items.Add(paragon) Next End Sub Private Sub ClassCombo_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ClassCombo.SelectedIndexChanged CalculatorCombo.Items.Clear() DamageForm.MainPrimLbl.Text = "Primary Stat" DamageForm.OffPrimLbl.Text = "Primary Stat" DamageForm.AllPrimLbl.Text = "Primary Stat" For Each calc In Selection.Keys CalculatorCombo.Items.Add(calc) Next Dim cmb As ComboBox = sender DamageForm.BuildCombo.Items.Clear() DamageForm.BuildCombo.Items.AddRange(Builds(cmb.Text)) Dim skill As ComboBox = sender DamageForm.SkillCombo1.Items.Clear() DamageForm.SkillCombo2.Items.Clear() DamageForm.SkillCombo3.Items.Clear() DamageForm.SkillCombo4.Items.Clear() DamageForm.SkillCombo5.Items.Clear() DamageForm.SkillCombo6.Items.Clear() DamageForm.SkillCombo1.Items.AddRange(Skills(skill.Text)) DamageForm.SkillCombo2.Items.AddRange(Skills(skill.Text)) DamageForm.SkillCombo3.Items.AddRange(Skills(skill.Text)) DamageForm.SkillCombo4.Items.AddRange(Skills(skill.Text)) DamageForm.SkillCombo5.Items.AddRange(Skills(skill.Text)) DamageForm.SkillCombo6.Items.AddRange(Skills(skill.Text)) Dim passive As ComboBox = sender DamageForm.PassiveCombo1.Items.Clear() DamageForm.PassiveCombo2.Items.Clear() DamageForm.PassiveCombo3.Items.Clear() DamageForm.PassiveCombo1.Items.AddRange(Passives(passive.Text)) DamageForm.PassiveCombo2.Items.AddRange(Passives(passive.Text)) DamageForm.PassiveCombo3.Items.AddRange(Passives(passive.Text)) Select Case ClassCombo.Text Case "Barbarian" DamageForm.MainPrimLbl.Text = "Strength" DamageForm.OffPrimLbl.Text = "Strength" DamageForm.AllPrimLbl.Text = "Strength" Case "Demon Hunter", "Monk" DamageForm.MainPrimLbl.Text = "Dexterity" DamageForm.OffPrimLbl.Text = "Dexterity" DamageForm.AllPrimLbl.Text = "Dexterity" Case "Wizard", "Witch Doctor" DamageForm.MainPrimLbl.Text = "Intelligence" DamageForm.OffPrimLbl.Text = "Intelligence" DamageForm.AllPrimLbl.Text = "Intelligence" End Select End Sub Private Sub CalculatorCombo_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CalculatorCombo.SelectedIndexChanged Select Case CalculatorCombo.Text Case "Damage Calculator" DamageForm.Show() End Select End Sub End Class
Code:
Public Class DamageForm Private Monk As New Dictionary(Of String, String()) Private Barbarian As New Dictionary(Of String, String()) Private Wizard As New Dictionary(Of String, String()) Private DH As New Dictionary(Of String, String()) Private WD As New Dictionary(Of String, String()) Private Spells As New Dictionary(Of String, String()) Private APS As New Dictionary(Of String, String()) Private Sub DamageForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load MainCombo.Items.Clear() OffCombo.Items.Clear() 'Create List of Weapons for Barbarian Barbarian.Add("Main-Hand Weapon + Off-Hand Weapon", {"Spear", "Sword", "Axe", "Mighty Weapon", "Dagger", "Mace"}) Barbarian.Add("Main-Hand Weapon + Shield", {"Spear", "Sword", "Axe", "Mighty Weapon", "Dagger", "Mace"}) Barbarian.Add("Two-Hand Weapon", {"Polearm", "Sword", "Axe", "Mighty Weapon", "Mace"}) 'Create List of Weapons for Monk Monk.Add("Main-Hand Weapon + Off-Hand Weapon", {"Spear", "Sword", "Axe", "Fist Weapon", "Dagger", "Mace"}) Monk.Add("Main-Hand + Shield", {"Spear", "Sword", "Axe", "Fist Weapon", "Dagger", "Mace"}) Monk.Add("Two-Hand Weapon", {"Staff", "Daibo", "Axe", "Mace", "Sword", "Polearm"}) 'Create List of Weapons for Wizard Wizard.Add("Main-Hand Weapon + Source", {"Spear", "Sword", "Axe", "Wand", "Dagger", "Mace"}) Wizard.Add("Main-Hand Weapon + Shield", {"Spear", "Sword", "Axe", "Wand", "Dagger", "Mace"}) Wizard.Add("Two-Hand Weapon", {"Axe", "Bow", "Crossbow", "Mace", "Staff", "Sword"}) 'Create List of Weapons for Witch Doctor WD.Add("Main-Hand Weapon + Mojo", {"Spear", "Sword", "Axe", "Ceremonial Knife", "Dagger", "Mace"}) WD.Add("Main-Hand Weapon + Shield", {"Spear", "Sword", "Axe", "Ceremonial Knife", "Dagger", "Mace"}) WD.Add("Two-Hand Weapon", {"Axe", "Bow", "Crossbow", "Mace", "Sword", "Staff", "Polearm"}) 'Create List of Weapons for Demon Hunter DH.Add("Main-Hand Crossbow + Quiver", {"Hand Crossbow"}) DH.Add("Main-Hand Crossbow + Off-Hand Crossbow", {"Hand Crossbow"}) DH.Add("Main-Hand Crossbow + Shield", {"Hand Crossbow"}) DH.Add("Two-Hand Weapon + Quiver", {"Bow", "Crossbow"}) 'Runes Barbarian Selection Spells.Add("Bash", {"Non-Rune", "Clobber", "Onslaught", "Punish", "Instigation", "Pulverize"}) Spells.Add("Cleave", {"Non-Rune", "Rupture", "Reaping Swing", "Scattering Blast", "Broad Sweep", "Gathering Storm"}) Spells.Add("Frenzy", {"Non-Rune", "Sidearm", "Triumph", "Vanguard", "Smite", "Maniac"}) Spells.Add("Hammer of the Ancients", {"Non-Rune", "Rolling Thunder", "Smash", "The Devil's Anvil", "Thunderstrike", "Birthright"}) Spells.Add("Rend", {"Non-Rune", "Ravage", "Blood Lust", "Lacerate", "Mutilate", "Bloodbath"}) Spells.Add("Seismic Slam", {"Non-Rune", "Stagger", "Shattered Ground", "Rumble", "Strength from Earth", "Cracking Rift"}) Spells.Add("Whirlwind", {"Non-Rune", "Dust Devils", "Hurricane", "Blood Funnel", "Wind Shear", "Volcanic Eruption"}) Spells.Add("Ground Stomp", {"Non-Rune", "Deafening Crash", "Wrenching Smash", "Trembling Stomp", "Foot of the Mountain", "Avalanche"}) Spells.Add("Leap", {"Non-Rune", "Iron Impact", "Launch", "Troppling Impact", "Call of Arreat", "Death from Above"}) Spells.Add("Sprint", {"Non-Rune", "Rush", "Run Like the Wind", "Marathon", "Gangway", "Forced March"}) Spells.Add("Ignore Pain", {"Non-Rune", "Bravado", "Iron Hide", "Ignorance is Bliss", "Mob Rule", "Contempt for Weakness"}) Spells.Add("Ancient Spear", {"Non-Rune", "Grappling Hooks", "Skirmish", "Dread Spear", "Harpoon", "Rage Flip"}) Spells.Add("Revenge", {"Non-Rune", "Vengeance Is Mine", "Best Served Cold", "Retribution", "Grudge", "Provocation"}) Spells.Add("Furious Charge", {"Non-Rune", "Battering Ram", "Merciless Assault", "Stamina", "Bulld Rush", "Dreadnought"}) Spells.Add("Overpower", {"Non-Rune", "Storm of Steel", "Killing Spree", "Crushing Advance", "Momentum", "Revel"}) Spells.Add("Weapon Throw", {"Non-Rune", "Mighty Throw", "Ricochet", "Throwing Hammer", "Stupefy", "Dread Bomb"}) Spells.Add("Threatening Shout", {"Non-Rune", "Intimidate", "Falter", "Grim Harvest", "Demoralize", "Terrify"}) Spells.Add("Battle Rage", {"Non-Rune", "Marauder's Rage", "Ferocity", "Swords to Ploughshares", "Into the Fray", "Bloodshed"}) Spells.Add("War Cry", {"Non-Rune", "Hardened Wrath", "Charge!", "Invigorate", "Veteran's Warning", "Impunity"}) Spells.Add("Earthquake", {"Non-Rune", "Gian'ts Stride", "Chilling Earth", "The Mountain's Call", "Aftershocks", "Path of Fire"}) Spells.Add("Call of the Ancients", {"Non-Rune", "The Council Rises", "Duty toe the Clan", "Korlic's Might", "Madawc's Madness", "Talic's Anger"}) Spells.Add("Wrath of the Berserker", {"Non-Rune", "Arreat's Wail", "Insanity", "Slaughter", "Striding Giant", "Thrive on Chaos"}) 'Runes Wizard Selection Spells.Add("Magic Missile", {"Non-Rune", "Charged Blast", "Split", "Penetrating Blast", "Attunement", "Seeker"}) Spells.Add("Shock Pulse", {"Non-Rune", "Explosive Bolts", "Fire Bolts", "Piercing Orb", "Lightning Affinity", "Living Lightning"}) Spells.Add("Spectral Blade", {"Non-Rune", "Deep Cuts", "Impactful Blades", "Siphonin Blade", "Healing Blades", "Thrown Blade"}) Spells.Add("Electrocute", {"Non-Rune", "Chain Lightning", "Forked Lightning", "Lightning Blast", "Surge of Power", "Arc Lightning"}) Spells.Add("Ray of Frost", {"Non-Rune", "Numb", "Snow Blast", "Cold Blood", "Sleet Storm", "Black Ice"}) Spells.Add("Arcane Orb", {"Non-Rune", "Obliteration", "Arcane Orbit", "Aracane Nova", "Tap the Source", "Celestial Orb"}) Spells.Add("Arcane Torrent", {"Non-Rune", "Disruption", "Death Blossom", "Arcane Mines", "Power Stone", "Cascade"}) Spells.Add("Disintegrate", {"Non-Rune", "Convergence", "Chaos Nexus", "Volatility", "Entropy", "Intensify"}) Spells.Add("Frost Nova", {"Non-Rune", "Shatter", "Cold Snap", "Frozen Mist", "Deep Freeze", "Bone Chill"}) Spells.Add("Diamond Skin", {"Non-Rune", "Crystal Shell", "Prism", "Mirror Skin", "Enduring Skin", "Diamond Shards"}) Spells.Add("Slow Time", {"Non-Rune", "Miasma", "Time Warp", "Time Shell", "Perpetuity", "Stretch Time"}) Spells.Add("Teleport", {"Non-Rune", "Safe Passage", "Wormhole", "Reversal", "Fracture", "Calamity"}) Spells.Add("Wave of Force", {"Non-Rune", "Impactful Wave", "Force Affinity", "Forceful Wave", "Teleporting Wave", "Exploding Wave"}) Spells.Add("Energy Twister", {"Non-Rune", "Mistral Breeze", "Gale Force", "Raging Storm", "Wicked Wind", "Storm Chaser"}) Spells.Add("Hydra", {"Non-Rune", "Arcane Hydra", "Lightning Hydra", "Venom Hydra", "Frost Hydra", "Mammoth Hydra"}) Spells.Add("Meteor", {"Non-Rune", "Molten Impact", "Star Pact", "Meteor Shower", "Comet", "Liquefy"}) Spells.Add("Blizzard", {"Non-Rune", "Grasping Chill", "Frozen Solid", "Snowbound", "Stark Winter", "Unrelenting Storm"}) Spells.Add("Ice Armor", {"Non-Rune", "Chilling Aura", "Crystallize", "Jagged Ice", "Ice Reflect", "Frozen Storm"}) Spells.Add("Storm Armor", {"Non-Rune", "Reavtive Armor", "Power of the Storm", "Strike Back", "Scramble", "Shocking Aspect"}) Spells.Add("Magic Weapon", {"Non-Rune", "Electrify", "Force Weapon", "Conduit", "Venom", "Blood Magic"}) Spells.Add("Familiar", {"Non-Rune", "Sparkflint", "Dartling", "Ancient Guardian", "Arcanot", "Cannoneer"}) Spells.Add("Energy Armor", {"Non-Rune", "Absorption", "Pinpoint Barrier", "Energy Tap", "Force Armor", "Prismatic Armor"}) Spells.Add("Explosive Blast", {"Non-Rune", "Unleashed", "Time Bomb", "Short Fuse", "Obliterate", "Chain Reaction"}) Spells.Add("Mirror Image", {"Non-Rune", "Simulacrum", "Duplicates", "Mocking Demise", "Extension of Will", "Mirror Mimics"}) Spells.Add("Archon", {"Non-Rune", "Arcane Destruction", "Teleport", "Pure Power", "Slow Time", "Improved Archon"}) 'Runes Demon Hunter Selection Spells.Add("Hungering Arrow", {"Non-Rune", "Puncturing Arrow", "Cinder Arrow", "Shatter Shot", "Devouring Arrow", "Spray of Teeth"}) Spells.Add("Entangling Shot", {"Non-Rune", "Chain Gang", "Shock Collar", "Heavy Burden", "Justice is Served", "Bounty Hunter"}) Spells.Add("Bola Shot", {"Non-Rune", "Volatile Explosives", "Thunder Ball", "Acid Strike", "Bitter Pill", "Imminent Doom"}) Spells.Add("Grenades", {"Non-Rune", "Tinkerer", "Cluster Grenades", "Fire Bomb", "Stun Grenades", "Gas Grenades"}) Spells.Add("Impale", {"Non-Rune", "Impact", "Chemical Burn", "Overpenetration", "Awareness", "Grievous Wounds"}) Spells.Add("Rapid Fire", {"Non-Rune", "Withering Fire", "Web Shot", "Fire Support", "High Velocity", "Bombardment"}) Spells.Add("Chakram", {"Non-Rune", "Twin Chakrams", "Serpentine", "Razor Disk", "Boomerang", "Shuriken Cloud"}) Spells.Add("Elemental Arrow", {"Non-Rune", "Ball Lightning", "Frost Arrow", "Screaming Skull", "Lightning Bolts", "Nether Tentacles"}) Spells.Add("Caltrops", {"Non-Rune", "Hooked Spines", "Torturous Ground", "Jagged Spikes", "Carved Stakes", "Bait the Trap"}) Spells.Add("Smoke Screen", {"Non-Rune", "Displacement", "Lingering Fog", "Breathe Deep", "Special Recipe", "Choking Gas"}) Spells.Add("Shadow Power", {"Non-Rune", "Night Bane", "Blood Moon", "Well of Darkness", "Gloom", "Shadow Glide"}) Spells.Add("Vault", {"Non-Rune", "Action Shot", "Rattling Roll", "Tumble", "Acrobatics", "Trail of Cinders"}) Spells.Add("Preparation", {"Non-Rune", "Invigoration", "Punishment", "Battle Scars", "Focused Mind", "Backup Plan"}) Spells.Add("Companion", {"Non-Rune", "Spider Companion", "Bat Companion", "Boar Companion", "Ferret Companion", "Wolf Companion"}) Spells.Add("Marked for Death", {"Non-Rune", "Contagion", "Valley of Death", "Grim Reaper", "Mortal Enemy", "Death Toll"}) Spells.Add("Evasive Fire", {"Non-Rune", "Shrapnel", "Parting Gift", "Covering Fire", "Displace", "Surge"}) Spells.Add("Fan of Knives", {"Non-Rune", "Crippling Razors", "Retaliate", "Hail of Knives", "Fan of Daggers", "Assasin's Knives"}) Spells.Add("Spike Trap", {"Non-Rune", "Bandolier", "Sticky Trap", "Long Fuse", "Lightning Rod", "Scatter"}) Spells.Add("Sentry", {"Non-Rune", "Spitfire Turret", "Vigilant Watcher", "Chain of Torment", "Aid Station", "Guardian Turret"}) Spells.Add("Strafe", {"Non-Rune", "Equilibrium", "Drifting Shadow", "Stinging Steel", "Rocket Storm", "Demolition"}) Spells.Add("Multishot", {"Non-Rune", "Fire at Will", "Burst Fire", "Suppression Fire", "Full Broadsisde", "Arsenal"}) Spells.Add("Cluster Arrow", {"Non-Rune", "Dazzling Arrow", "Shooting Stars", "Maelstrom", "Cluster Bombs", "Loaded for Bear"}) Spells.Add("Rain of Vengeance", {"Non-Rune", "Dark Cloud", "Beastly Bombs", "Stampede", "Anathema", "Flying Strike"}) 'Runes Monk Selection Spells.Add("Fists of Thunder", {"Non-Rune", "Thunderclap", "Lightning Flash", "Static Charge", "Quickening", "Bounding Light"}) Spells.Add("Deadly Reach", {"Non-Rune", "Piercing Trident", "Keen Eye", "Scattered Blows", "Strike from Beyond", "Foresight"}) Spells.Add("Crippling Wave", {"Non-Rune", "Mangle", "Concussion", "Rising Tide", "Tsunami", "Breaking Wave"}) Spells.Add("Way of the Hundred Fists", {"Non-Rune", "Hands of Lightning", "Blazing Fists", "Fists of Fury", "Spirited Salvo", "Windforce Flurry"}) Spells.Add("Lashing Tail Kick", {"Non-Rune", "Vulture Claw Kick", "Sweeping Armada", "Spinning Flame Kick", "Scorpion Sting", "Hand of Ytar"}) Spells.Add("Tempest Rush", {"Non-Rune", "Northern Breeze", "Tailwind", "Flurry", "Slipstream", "Bluster"}) Spells.Add("Wave of Light", {"Non-Rune", "Wall of Light", "Explosive Light", "Empowered Wave", "Blinding Light", "Pillar of the Ancients"}) Spells.Add("Blinding Flash", {"Non-Rune", "Self Reflection", "Blinded and Confused", "Blinding Echo", "Searing Light", "Faith in the Light"}) Spells.Add("Breath of Heaven", {"Non-Rune", "Circle of Scorn", "Circle of Life", "Blazing Wrath", "Infused with Light", "Penitent Flame"}) Spells.Add("Serenity", {"Non-Rune", "Peaceful Repose", "Reap What Is Sown", "Tranquility", "Ascension", "Instant Karma"}) Spells.Add("Inner Sanctuary", {"Non-Rune", "Safe Haven", "Sanctified Ground", "Consecration", "Circle of Protection", "Forbidden Palace"}) Spells.Add("Dashing Strike", {"Non-Rune", "Way of the Falling Star", "Flying Side Kick", "Quicksilver", "Soaring Skull", "Blinding Speed"}) Spells.Add("Exploding Palm", {"Non-Rune", "The Flesh is Weak", "Strong Spirit", "Creeping Demise", "Impending Doom", "Essence Burn"}) Spells.Add("Sweeping Wind", {"Non-Rune", "Master of Wind", "Blade Storm", "Fire Storm", "Inner Storm", "Cyclone"}) Spells.Add("Cyclone Strike", {"Non-Rune", "Eye of the Storm", "Implosion", "Sunburst", "Wall of Wind", "Soothing Breeze"}) Spells.Add("Seven-Sided Strike", {"Non-Rune", "Sudden Assault", "Several-Sided Strike", "Pandemonium", "Sustained Attack", "Fulminating Onslaught"}) Spells.Add("Mystic Ally", {"Non-Rune", "Water Ally", "Fire Ally", "Air Ally", "Eternal Ally", "Earth Ally"}) Spells.Add("Mantra of Evasion", {"Non-Rune", "Hard Target", "Divine Protection", "Wind through the Reeds", "Perseverance", "Backlash"}) Spells.Add("Mantra of Retribution", {"Non-Rune", "Retaliation", "Transgression", "Indignation", "Against All Odds", "Collateral Damage"}) Spells.Add("Mantra of Healing", {"Non-Rune", "Sustenance", "Circular Breathing", "Boon of Inspiration", "Heavenly Body", "Time of Need"}) Spells.Add("Mantra of Conviction", {"Non-Rune", "Overawe", "Intimidation", "Dishearten", "Reclamation", "Submission"}) 'Runes Witch Doctor Spells.Add("Poison Dart", {"Non-Rune", "Splinters", "Numbing Dart", "Spined Dart", "Flaming Dart", "Snake to the Face"}) Spells.Add("Corpse Spiders", {"Non-Rune", "Leaping Spiders", "Spider Queen", "Widowmakers", "Medusa Spiders", "Blazing Spiders"}) Spells.Add("Plague of Toads", {"Non-Rune", "Explosive Toads", "Toad of Hugeness", "Rain of Toads", "Adding Toads", "Toad Affinity"}) Spells.Add("Fire Bomb", {"Non-Rune", "Flash Fire", "Roll the Bones", "Fire Pit", "Pyrogeist", "Ghost Bomb"}) Spells.Add("Grasp of the Dead", {"Non-Rune", "Unbreakable Grasp", "Groping Eels", "Death is Life", "Desperate Grasp", "Rain of Corpses"}) Spells.Add("Firebats", {"Non-Rune", "Dire Bats", "Vampire Bats", "Plague Bats", "Hungry Bats", "Cloud of Bats"}) Spells.Add("Haunt", {"Non-Rune", "Consuming Spirit", "Resentful Spirit", "Lingering Spirit", "Grasping Spirit", "Draining Spirit"}) Spells.Add("Locust Swarm", {"Non-Rune", "Pestilence", "Devouring Swarm", "Cloud of Insects", "Diseased Swarm", "Searing Locusts"}) Spells.Add("Summon Zombie Dogs", {"Non-Rune", "Rabid Dogs", "Final Gift", "Life Link", "Burning Dogs", "Leeching Beasts"}) Spells.Add("Horrify", {"Non-Rune", "Phobia", "Stalker", "Face of Death", "Frightening Aspect", "Ruthless Terror"}) Spells.Add("Spirit Walk", {"Non-Rune", "Jaunt", "Honored Guest", "Umbral Shock", "Severance", "Healing Journey"}) Spells.Add("Hex", {"Non-Rune", "Hedge Magic", "Jinx", "Angry Chicken", "Painful Transformation", "Unstable Form"}) Spells.Add("Soul Harvest", {"Non-Rune", "Swallow Your Soul", "Siphon", "Languish", "Soul to Waste", "Vengeful Spirit"}) Spells.Add("Sacrifice", {"Non-Rune", "Black Blood", "Next of Kin", "Pride", "For the Master", "Provoke the Pack"}) Spells.Add("Mass Confusion", {"Non-Rune", "Unstable Realm", "Devolution", "Mass Hysteria", "Paranoia", "Mass Hallucination"}) Spells.Add("Zombie Charger", {"Non-Rune", "Leperous Zombie", "Undeath", "Wave of Zombies", "Explosive Blast", "Zombie Bears"}) Spells.Add("Spirit Barrage", {"Non-Rune", "The Spirit Is Willing", "Well of Souls", "Phantasm", "Phlebotomize", "Manitou"}) Spells.Add("Acid Cloud", {"Non-Rune", "Acid Rain", "Lob Blob Bomb", "Slow Burn", "Kiss of Death", "Corpse Bomb"}) Spells.Add("Wall of Zombies", {"Non-Rune", "Barricade", "Unrelenting Grip", "Creepers", "Pile On", "Dead Rush"}) Spells.Add("Gargantuan", {"Non-Rune", "Humongoid", "restless Giant", "Wrathful Protector", "Big Stinker", "Bruiser"}) Spells.Add("Big Bad Voodoo", {"Non-Rune", "Jungle Drums", "Rain Dance", "Slam Dance", "Ghost Trance", "Boogie Man"}) Spells.Add("Fetish Army", {"Non-Rune", "Fetish Ambush", "Devoted Following", "Legion of Daggers", "Tiki Torchers", "Head Hunters"}) End Sub Private Sub BuildCombo_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BuildCombo.SelectedIndexChanged MainCombo.Items.Clear() OffCombo.Items.Clear() OffCombo.Enabled = True OffMin.Enabled = True OffMax.Enabled = True OffAS.Enabled = True OffCHC.Enabled = True OffCHD.Enabled = True GroupBox3.Text = "Off-Hand Weapon Properties" Label17.Enabled = True Label16.Enabled = True Label15.Enabled = True Label14.Enabled = True Label13.Enabled = True Dim Weapon As ComboBox = sender Select Case MainForm.ClassCombo.Text Case "Barbarian" MainCombo.Items.AddRange(Barbarian(Weapon.Text)) OffCombo.Items.AddRange(Barbarian(Weapon.Text)) Case "Monk" MainCombo.Items.AddRange(Monk(Weapon.Text)) OffCombo.Items.AddRange(Monk(Weapon.Text)) Case "Wizard" MainCombo.Items.AddRange(Wizard(Weapon.Text)) OffCombo.Enabled = False Case "Witch Doctor" MainCombo.Items.AddRange(WD(Weapon.Text)) OffCombo.Enabled = False Case "Demon Hunter" MainCombo.Items.AddRange(DH(Weapon.Text)) OffCombo.Items.AddRange(DH(Weapon.Text)) End Select Select Case BuildCombo.Text Case "Two-Hand Weapon" GroupBox3.Enabled = False OffHandLbl.Enabled = False OffCombo.Enabled = False APSDuelLbl.Enabled = False DPSDuelLbl1.Enabled = False DPSDuelLbl2.Enabled = False DuelAPS.Enabled = False DuelDPS.Enabled = False DuelActualDPS.Enabled = False GroupBox2.Text = "Two-Hand Weapon Properties" MainAPSLbl.Text = "Two-Hand APS" MainDPSLbl1.Text = "Two-Hand DPS" MainDPSLbl2.Text = "Two-Hand DPS" Case "Two-Hand Weapon + Quiver" GroupBox3.Enabled = True OffHandLbl.Enabled = False OffCombo.Enabled = False APSDuelLbl.Enabled = False DPSDuelLbl1.Enabled = False DPSDuelLbl2.Enabled = False DuelAPS.Enabled = False DuelDPS.Enabled = False DuelActualDPS.Enabled = False GroupBox2.Text = "Two-Hand Weapon Properties" MainAPSLbl.Text = "Two-Hand APS" MainDPSLbl1.Text = "Two-Hand DPS" MainDPSLbl2.Text = "Two-Hand DPS" Case Else GroupBox3.Enabled = True OffHandLbl.Enabled = True OffCombo.Enabled = True APSDuelLbl.Enabled = True DPSDuelLbl1.Enabled = True DPSDuelLbl2.Enabled = True DuelAPS.Enabled = True DuelDPS.Enabled = True DuelActualDPS.Enabled = True GroupBox2.Text = "Main-Hand Weapon Properties" MainAPSLbl.Text = "Main-Hand APS" MainDPSLbl1.Text = "Main-Hand DPS" MainDPSLbl2.Text = "Main-Hand DPS" End Select Select Case BuildCombo.Text Case "Main-Hand Weapon + Source" GroupBox3.Text = "Source Properties" OffCombo.Enabled = False OffAS.Enabled = False OffCHD.Enabled = False Label15.Enabled = False Label13.Enabled = False Case "Main-Hand Weapon + Mojo" GroupBox3.Text = "Mojo Properties" OffCombo.Enabled = False OffAS.Enabled = False OffCHD.Enabled = False Label15.Enabled = False Label13.Enabled = False Case "Main-Hand Weapon + Shield", "Main-Hand Crossbow + Shield" GroupBox3.Text = "Shield Properties" OffCombo.Enabled = False OffMin.Enabled = False OffMax.Enabled = False OffAS.Enabled = False OffCHD.Enabled = False Label17.Enabled = False Label16.Enabled = False Label15.Enabled = False Label13.Enabled = False Case "Main-Hand Crossbow + Quiver", "Two-Hand Weapon + Quiver" GroupBox3.Text = "Quiver Properties" OffCombo.Enabled = False OffMin.Enabled = False OffMax.Enabled = False OffAS.Enabled = True OffCHD.Enabled = False Label17.Enabled = False Label16.Enabled = False Label15.Enabled = True Label13.Enabled = False End Select End Sub Private Sub SkillCombo1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SkillCombo1.SelectedIndexChanged Dim spell As ComboBox = sender RuneCombo1.Items.Clear() RuneCombo1.Items.AddRange(Spells(spell.Text)) End Sub Private Sub SkillCombo2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SkillCombo2.SelectedIndexChanged Dim spell As ComboBox = sender RuneCombo2.Items.Clear() RuneCombo2.Items.AddRange(Spells(spell.Text)) End Sub Private Sub SkillCombo3_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SkillCombo3.SelectedIndexChanged Dim spell As ComboBox = sender RuneCombo3.Items.Clear() RuneCombo3.Items.AddRange(Spells(spell.Text)) End Sub Private Sub SkillCombo4_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SkillCombo4.SelectedIndexChanged Dim spell As ComboBox = sender RuneCombo4.Items.Clear() RuneCombo4.Items.AddRange(Spells(spell.Text)) End Sub Private Sub SkillCombo5_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SkillCombo5.SelectedIndexChanged Dim spell As ComboBox = sender RuneCombo5.Items.Clear() RuneCombo5.Items.AddRange(Spells(spell.Text)) End Sub Private Sub SkillCombo6_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SkillCombo6.SelectedIndexChanged Dim spell As ComboBox = sender RuneCombo6.Items.Clear() RuneCombo6.Items.AddRange(Spells(spell.Text)) End Sub Private Sub MainCombo_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MainCombo.SelectedIndexChanged MainAPS.ResetText() DuelAPS.ResetText() End Sub Private Sub BaseTimer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BaseTimer.Tick If IsNumeric(MainAS.Text) Or IsNumeric(AllAS.Text) Then Select Case BuildCombo.Text Case "Two-Hand Weapon", "Two-Hand Weapon + Quiver" Select Case MainCombo.Text Case "Polearm" MainAPS.Text = ((1 + (CDbl(MainAS.Text) / 100)) * (1 + (CDbl(AllAS.Text) / 100))) * 0.95.ToString Case "Mace" MainAPS.Text = ((1 + (CDbl(MainAS.Text) / 100)) * (1 + (CDbl(AllAS.Text) / 100))) * 0.9.ToString Case "Mighty Weapon", "Axe", "Staff" MainAPS.Text = ((1 + (CDbl(MainAS.Text) / 100)) * (1 + (CDbl(AllAS.Text) / 100))) * 1.ToString Case "Bow" MainAPS.Text = ((1 + (CDbl(MainAS.Text) / 100)) * (1 + (CDbl(AllAS.Text) / 100))) * 1.4.ToString Case "Daibo", "Crossbow", "Sword" MainAPS.Text = ((1 + (CDbl(MainAS.Text) / 100)) * (1 + (CDbl(AllAS.Text) / 100))) * 1.1.ToString Case Else MainAPS.Text = 0 End Select Case Else Select Case MainCombo.Text Case "Spear", "Mace" MainAPS.Text = ((1 + (CDbl(MainAS.Text) / 100)) * (1 + (CDbl(AllAS.Text) / 100))) * 1.2.ToString Case "Sword", "Ceremonial Knife", "Wand", "Fist Weapon" MainAPS.Text = ((1 + (CDbl(MainAS.Text) / 100)) * (1 + (CDbl(AllAS.Text) / 100))) * 1.4.ToString Case "Mighty Weapon", "Axe" MainAPS.Text = ((1 + (CDbl(MainAS.Text) / 100)) * (1 + (CDbl(AllAS.Text) / 100))) * 1.3.ToString Case "Hand Crossbow" MainAPS.Text = ((1 + (CDbl(MainAS.Text) / 100)) * (1 + (CDbl(AllAS.Text) / 100))) * 1.6.ToString Case "Dagger" MainAPS.Text = ((1 + (CDbl(MainAS.Text) / 100)) * (1 + (CDbl(AllAS.Text) / 100))) * 1.5.ToString Case Else MainAPS.Text = 0 End Select End Select Select Case BuildCombo.Text Case "Main-Hand Weapon + Off-Hand Weapon", "Main-Hand Crossbow + Off-Hand Crossbow" Select Case OffCombo.Text Case Is > "" DuelAPS.Text = CDbl((MainAPS.Text) * 1.15).ToString Case Else DuelAPS.Text = 0 End Select End Select MainDPS.Text = (((CDbl(MainMin.Text) + CDbl(MainMax.Text) + CDbl(AllMin.Text) + CDbl(AllMax.Text)) * ((CDbl(AllPrim.Text) / 100) + 1) * (CDbl(MainAPS.Text)) * (((CDbl(AllCHC.Text) / 100) * (CDbl(AllCHD.Text) / 100)) + 1) * ((CDbl(AllPassive.Text) / 100) + 1)) / 2).ToString Select Case BuildCombo.Text Case "Main-Hand Weapon + Off-Hand Weapon", "Main-Hand Crossbow + Off-Hand Crossbow" DuelDPS.Text = (((((CDbl(MainMin.Text) + CDbl(OffMin.Text)) / 2) + ((CDbl(MainMax.Text) + CDbl(OffMax.Text)) / 2) + CDbl(AllMin.Text) + CDbl(AllMax.Text)) * (1 + (CDbl(AllPrim.Text) / 100)) * (CDbl(DuelAPS.Text)) * (((CDbl(AllCHC.Text) / 100) * (CDbl(AllCHD.Text) / 100)) + 1)) / 2).ToString Case Else DuelDPS.Text = 0 End Select End If End Sub End Class