As per the name, in Obsession Tournament obsession is the name of the game. Choose a skill and then you are required to max it and all of its synergies out before choosing another skill. The same holds true for stats, choose either Strength, Dexterity, Vitality or Energy and four out of five stat points must be placed there each time the character is leveled up. Along with these restrictions there are equipment rules as well. An element is also picked and then all equipment used must reference this element in some way, same holds true for the attribute selected.
I choose an Amazon named Mercury who would be obsessed with Plague Javelin, Lightning and Vitality. Going started slow as both javelins and armor were lacking for most of Act I. This was Ok since the main attack isn't even usable yet, so still progressing but slowly. Only against Andariel did Plague Javelin become available, but from there onward things became much easier. The normal monsters were tanked by the Act II town guard while Mercury poisoned them all from afar. The only problems appeared from Act bosses who killed off the mercenary. Mercury would run circles around them and throw javelins periodically to keep the poison acting at all times. Very slow way to whittle down a boss' life, but eventually they fell.
One extra rule that caused me problems is that all equipment used must be of the type equal to the difficulty the character is in. Therefore in normal regular equipment is used but in Nightmare the character must have all exceptional equipment, and so forth. This means starting Nightmare Mercury was basically naked and starting from scratch.
Once Plague Javelin was maxed out Mercury moved on to maxing Valkyrie for an additional tank to help out the mercenary. He's been getting swarmed up to this point and needs help surviving monster mobs. Mercury got to Hell and then suddenly realize I poorly planner her out. She didn't have the strength/dexterity to wield an elite javelin. As a result she would have to punch her way to Baal. Tried this up to the Cold Plains and then called it quits and retired, took far too much time. This of course is a good lesson for me, plan out the character way in advance before starting to ensure something like this never happens again.
To redeem myself I started Wraith, an Assassin obsessed with Strength, Poison and Cloak of Shadows. The idea was that CoS would keep her alive in the most dire of circumstances and then she could obsess in an offensive skill afterwards. Unfortunately I never got that far. Wraith met her end at level 22 to the lightning beetles of Act II Normal. Her lightning resistance was at 40% but with so many charged bolts flying around she couldn't drink health potions fast enough.
This lead to the third and final character of mine in this tournament; Rayne the sorceress obsessed with Vitality, Lightning and Static Field (then Firewall). Her basic strategy was static field like mad while the mercenary tanked, then firewall the remaining monsters. This worked wonders in Normal where SF can actually kill monsters. Nightmare had problems as SF can only reduce monster life to 1/4 their total. However Rayne didn't get much of a chance to see how NM would go, she met her end to a Might enhanced, Extra Fast, Extra Strong, Cursed Treadhead in the Dark Wood. The mercenary died within seconds and Rayne couldn't outrun the pack.
That ended this tournament for me, I had just restarted a week or two earlier and wanted to concentrate on Softcore characters and magic finding for a while.
Friday, October 3, 2008
Diablo II: The Afterlife Tournament
The Afterlife Tournament is another from Wolron, all which are quite interesting. This tournament has restrictions on both skills used and stat points assigned per character type. I choose a Sorceress and as a result was restricted to the Lightning skills, with only a single point allowed to vitality/strength per character level. The only equipment allowed to be used was either ethereal or had the word "angel", "radiance", or "rainbow" in it.
Angela started her quest off by punching all of her monster enemies, since she doesn't start with any ethereal weapons. This was quite a new experience and lasted her quite a while into Act I before decent skills became available (Lightning). Once she did have her skills then progress went swimmingly, as pure lightning sorceresses are traditionally overpowered.
She kept having to dodge monster packs and teleport to safety. Apparently I had great difficulty keeping Angela out of harms way, as more often than not she's on the front lines with the mercenary behind her rather than in front. Still she progressed all the way to Act III of Nightmare before meeting her end. She was walking through the sewers underneath the Kurast Bazaar when she ran into a pack of monsters she couldn't see. They were hidden by one of the walls. Still Angela let loose with a Chain Lightning strike just as she heard their attack and realized they were dolls. The entire group exploded as one and took Angela along with them. As it turned out I ended up with the second highest Angel(sorceress) of the tournament at level 61, beaten out by Grisu who Guardianed his Angel.
Angela started her quest off by punching all of her monster enemies, since she doesn't start with any ethereal weapons. This was quite a new experience and lasted her quite a while into Act I before decent skills became available (Lightning). Once she did have her skills then progress went swimmingly, as pure lightning sorceresses are traditionally overpowered.
She kept having to dodge monster packs and teleport to safety. Apparently I had great difficulty keeping Angela out of harms way, as more often than not she's on the front lines with the mercenary behind her rather than in front. Still she progressed all the way to Act III of Nightmare before meeting her end. She was walking through the sewers underneath the Kurast Bazaar when she ran into a pack of monsters she couldn't see. They were hidden by one of the walls. Still Angela let loose with a Chain Lightning strike just as she heard their attack and realized they were dolls. The entire group exploded as one and took Angela along with them. As it turned out I ended up with the second highest Angel(sorceress) of the tournament at level 61, beaten out by Grisu who Guardianed his Angel.
Diablo II: Green with Envy Tournament
The Green with Envy Tournament has a rule set where Only set equipment (green) may be worn. White or grey items may be used as placeholders until a green item is found to replace them. These rules count for mercenaries as well. Due to these restrictions quite a few build options are not viable, such as a Javazon.
I entered with a Paladin, Myau, starting with the Iratha's set as starting equipment. I choose this equipment due to the resistance bonuses, since with a melee character that is what worries me the most. Myau will be a Frost Zealot, just haven't decided on the backup skill yet. Myau breezed through most of the difficulty due to the overpoweredness that is Holy Freeze, and the massive resistance boost from Iratha's set items. However he met a quick end when wandering through the Pit in Act V. Encountered a bosspack of Moon Lords (my worst melee opponent) and started to tanked before checking the boss' mods, he was apparently extra strong.
With that I started another, Hephaestus. He will also be a Paladin, a Hammerdin to be exact. I have never tried a hammerdin before so the going was a bit rough, especially aiming the darn things. However with a high level Concentration aura active the Act II desert mercenary was killing all the monsters very quickly so Hephaestus sometimes didn't even have a chance to jump into the fray before it was time to move on. Things stayed interested with the extremely low resistances that he had, so quite a few NDEs encountered along the way.
After finishing Normal difficulty at level 46 I decided to retire this character. I just wasn't having much fun with the Hammerdin. I know they are seriously overpowered characters but the build type just isn't for me.
I entered with a Paladin, Myau, starting with the Iratha's set as starting equipment. I choose this equipment due to the resistance bonuses, since with a melee character that is what worries me the most. Myau will be a Frost Zealot, just haven't decided on the backup skill yet. Myau breezed through most of the difficulty due to the overpoweredness that is Holy Freeze, and the massive resistance boost from Iratha's set items. However he met a quick end when wandering through the Pit in Act V. Encountered a bosspack of Moon Lords (my worst melee opponent) and started to tanked before checking the boss' mods, he was apparently extra strong.
With that I started another, Hephaestus. He will also be a Paladin, a Hammerdin to be exact. I have never tried a hammerdin before so the going was a bit rough, especially aiming the darn things. However with a high level Concentration aura active the Act II desert mercenary was killing all the monsters very quickly so Hephaestus sometimes didn't even have a chance to jump into the fray before it was time to move on. Things stayed interested with the extremely low resistances that he had, so quite a few NDEs encountered along the way.
After finishing Normal difficulty at level 46 I decided to retire this character. I just wasn't having much fun with the Hammerdin. I know they are seriously overpowered characters but the build type just isn't for me.
Diablo II: Glass Cannon Tournament
I've played in more tournaments than I've posted, so I'm catching up on the older ones I've been a part of, hence the next few posts.
The Glass Cannon Tournament is designed for everyone to be an Amazon and all stat points must be placed into Dexterity.
I entered with Yoga_Instructor, who I planned on making a Strafazon. Not a good plan as it turned out since finding a good bow was going to be difficult at best, the elemental bow skills would have been much better to use. She didn't have any trouble all the way up to Mehpisto in Normal, and then promptly died at level 29. Her mercenary was tanking quite well while Yoga_Instructor fired from afar. Suddenly Mephisto stepped to the side and fired a cold ball at Yoga_Instructor. With very low cold resistance it one-hit-killed her, ouch.
Decided not to rejoin this tournament, I'm thinking a single entrant to most is better with maybe two if I do really well the first time. Dying in Normal is not what I consider "doing well".
The Glass Cannon Tournament is designed for everyone to be an Amazon and all stat points must be placed into Dexterity.
I entered with Yoga_Instructor, who I planned on making a Strafazon. Not a good plan as it turned out since finding a good bow was going to be difficult at best, the elemental bow skills would have been much better to use. She didn't have any trouble all the way up to Mehpisto in Normal, and then promptly died at level 29. Her mercenary was tanking quite well while Yoga_Instructor fired from afar. Suddenly Mephisto stepped to the side and fired a cold ball at Yoga_Instructor. With very low cold resistance it one-hit-killed her, ouch.
Decided not to rejoin this tournament, I'm thinking a single entrant to most is better with maybe two if I do really well the first time. Dying in Normal is not what I consider "doing well".
Thursday, October 2, 2008
Diablo II: Emperor's Clothes Tournament
A lot of the tournaments of the SPF at diii.net revolve around either skill or item restrictions. The Emperor's Clothes tournament by Merlin is an item restriction only contest. The basic idea is that items dropped by Super Uniques and Act Bosses are the only items that may be worn, normal monster drops are not allowed. White items may be worn until a suitable replacement is found.
The tournament was both very frustrating and enjoyable. The challenge of making a viable character with limited equipment was quite interesting. Thankfully skills were not very restricted, the only thing not allowed was summonable minions, so builds like the Fishymancer and Summoning Druid were automatically out. The frustrating part came when normal monsters dropped the best items, while SUs dropped Isenharts cases. However this was considered and one of the rules of the tournament was that the personalization quest (Act V) could be used to make a normal drop usable.
In this tournament I entered one character, Enkidu. He was a Teslafroster, a build I've never tried before. Ended up being quite safe, but still had his share of NDEs. I'm not sure I'll enter another character here or not. I have a few personal builds I want to make in Softcore outside of tournaments and then maybe I'll try my hand in another one.
The tournament was both very frustrating and enjoyable. The challenge of making a viable character with limited equipment was quite interesting. Thankfully skills were not very restricted, the only thing not allowed was summonable minions, so builds like the Fishymancer and Summoning Druid were automatically out. The frustrating part came when normal monsters dropped the best items, while SUs dropped Isenharts cases. However this was considered and one of the rules of the tournament was that the personalization quest (Act V) could be used to make a normal drop usable.
In this tournament I entered one character, Enkidu. He was a Teslafroster, a build I've never tried before. Ended up being quite safe, but still had his share of NDEs. I'm not sure I'll enter another character here or not. I have a few personal builds I want to make in Softcore outside of tournaments and then maybe I'll try my hand in another one.
Java: Hotline Update #7
Another round of changes was made to the Hotline program today. This round was exactly the same as before, except that this time the PPC Changes option was removed and replaced with an iPhone option. Process was identical to before.
The only change came from the fact that this was done in the month I wanted changes to take place, rather than before the reps were able to use the program. As a result I had to move all of the data created yesterday out of the program and re-enter it under the correct date and representative's name to ensure the accuracy of the application.
The only change came from the fact that this was done in the month I wanted changes to take place, rather than before the reps were able to use the program. As a result I had to move all of the data created yesterday out of the program and re-enter it under the correct date and representative's name to ensure the accuracy of the application.
Wednesday, October 1, 2008
Java: CharSi Update #9
It turns out an array of arrays was the best way to contain all of the information needed for the Runeword Wizard. This allowed me to use For and While loops for any comparison purposes as I had an array for all of the selected options and then compared each slot to its corresponding slots in the array of arrays. Somewhat of a brute force method but I'm satisfied with the results.
To start off I needed to create the main variable of this program, the array of Strings that would hold all of my selection choices.
String[] selectionArray = {"", "", "1", "0", "2", "1", "0", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"};
There are 58 slots to this array, one for each rune, base item and search modifier. A value of "1" equals true while a "0" equals false. All runes are initially selected while the base items are not. As components are selected their corresponding Listeners will alter the necessary value in this array. Along with the selectionArray, a separate array was created for each possible runeword, of which there are eighty-three. To that end there were quite a few arrays that looked similiar to this:
String[] heartOfTheOak = {"heartoftheoak.txt", "Heart of the Oak", "1", "0", "4", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "1", "0", "0", "0", "0", "0", "0", "0", "1", "0", "0", "1", "0", "0", "0", "0", "1", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "1", "0", "0", "0", "0", "0", "0", "0", "1"};
After creation each array is then added to a slot in main runeword array to create the needed array of arrays. This becomes key when doing the actual comparison between what is needed and the runewords available. The workhorse of this program is a method named CompareRunewordCriteria(). This method is called when the Display Jbutton is pressed. To start it sets a boolean variable to false, assuming the runeword won't fit the criteria given. Then it compares the base items needed with those selected, if there is a match then the variable is set to true, if there isn't a match then we move on to the next runeword. Then runes available are compared to those needed, as well as if the runeword has the right number of slots, contains an aura and all the other selection criteria are compared. If after all that the boolean variable is set to true, then the runeword name is added to the DefaultListModel so that it is displayed as an option in the JList component.
That was the hard part. After that it was simply hooking up the JList component Listener to display the right text file when an option in the JList is selected. The code for displaying the text was borrowed from the AMAS Rune panel, as was the text files containing the runeword information.

After everything was in place I did run some comparisons between my program and the online runeword calculator to ensure my results were accurate. A few changes had to be made, I apparently didn't consider all weapon types when melee weapons are concerned. Also Mauls were removed as a selection since those are incoporated into the Hammer option and Daggers were put in place instead. When originally thinking about daggers I assumed one socket was all they could have, which turned out to be incorrect. But a few quick variable name changes and daggers are now an available option.
This Runeword Wizard now replaces the runeword list from the AMAS program as this one is much more robust. I can search on specific runes and it provides a much larger pool of available base items beyond the four originally available (shield, helm, armor, weapon). Gradually I'll be phasing AMAS out of use, but I don't see doing so for quite a while as I want to finish the character simulator portion of CharSi before adding any other reference tools to the program.
To start off I needed to create the main variable of this program, the array of Strings that would hold all of my selection choices.
String[] selectionArray = {"", "", "1", "0", "2", "1", "0", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"};
There are 58 slots to this array, one for each rune, base item and search modifier. A value of "1" equals true while a "0" equals false. All runes are initially selected while the base items are not. As components are selected their corresponding Listeners will alter the necessary value in this array. Along with the selectionArray, a separate array was created for each possible runeword, of which there are eighty-three. To that end there were quite a few arrays that looked similiar to this:
String[] heartOfTheOak = {"heartoftheoak.txt", "Heart of the Oak", "1", "0", "4", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "1", "0", "0", "0", "0", "0", "0", "0", "1", "0", "0", "1", "0", "0", "0", "0", "1", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "1", "0", "0", "0", "0", "0", "0", "0", "1"};
After creation each array is then added to a slot in main runeword array to create the needed array of arrays. This becomes key when doing the actual comparison between what is needed and the runewords available. The workhorse of this program is a method named CompareRunewordCriteria(). This method is called when the Display Jbutton is pressed. To start it sets a boolean variable to false, assuming the runeword won't fit the criteria given. Then it compares the base items needed with those selected, if there is a match then the variable is set to true, if there isn't a match then we move on to the next runeword. Then runes available are compared to those needed, as well as if the runeword has the right number of slots, contains an aura and all the other selection criteria are compared. If after all that the boolean variable is set to true, then the runeword name is added to the DefaultListModel so that it is displayed as an option in the JList component.
That was the hard part. After that it was simply hooking up the JList component Listener to display the right text file when an option in the JList is selected. The code for displaying the text was borrowed from the AMAS Rune panel, as was the text files containing the runeword information.

After everything was in place I did run some comparisons between my program and the online runeword calculator to ensure my results were accurate. A few changes had to be made, I apparently didn't consider all weapon types when melee weapons are concerned. Also Mauls were removed as a selection since those are incoporated into the Hammer option and Daggers were put in place instead. When originally thinking about daggers I assumed one socket was all they could have, which turned out to be incorrect. But a few quick variable name changes and daggers are now an available option.
This Runeword Wizard now replaces the runeword list from the AMAS program as this one is much more robust. I can search on specific runes and it provides a much larger pool of available base items beyond the four originally available (shield, helm, armor, weapon). Gradually I'll be phasing AMAS out of use, but I don't see doing so for quite a while as I want to finish the character simulator portion of CharSi before adding any other reference tools to the program.
Subscribe to:
Posts (Atom)