Sunday, May 10, 2009

Diablo II: Matriarch Esmay

Esmay will be a Fishyzon, which is an Amazon that utilizes the Freezing Arrow and Lightning Fury skills to damage her enemies. She will not have a valkyrie available to tank monsters, so will have to rely on her mercenary and a low level decoy to keep herself safe.

None of Esmay's main skills are available for much later in the game so she started off life poking everything to death with her javelins. Luckily for her a set of rare javelins fell early, but still she had great trouble getting through the beginning of Normal. Even when she received a mercenary for support both were not using any special skills and instead only a normal attack to damage the monsters. As a result progress was extremely slow, and remained that way all the way until the middle of Act III.

Finally around the end of the Flayer Jungle Esmay started to use her skills. Up to this point her mercenary was doing several times the damage per hit as she was and she was tired of being a second-class character. She had finally gotten Charged Strike up to a respectable level so that it would deal a great deal of damage. This was key as it is mana intensive and the reward had to equal the payment necessary. It turns out this was the case, even though Esmay had to start running around with half her inventory taken up by mana potions. She picked up every single one that dropped and still had to return to town often to replenish her stock.

However as a result Esmay began to simply roll over all monsters packs encountered. Between one to three pokes with a javelin and a monster was dead, and sometimes the ones behind as well if some of the bolts missed the initial target. She did have an issue with getting stun locked, since she didn't have any faster run/walk she had to try and keep her mercenary between her and the monsters so that she would not be interrupted. As long as that was done Esmay and co ripped through to the end of Normal.

At this point she was able to equip a few pieces of equipment that are intended for endgame use, such as Titan's Revenge, Moser's Blessed Circle and M'avina's belt and gloves. With these added Esmay's blocking increased dramatically and as such she was in much less danger of getting stunlocked. Act I was pretty much a continuation of the end of Normal in that nothing could stand in her way. She did run into one or two situations where the monsters were lightning resistant, such as Misshappen, and there she had to switch to utilizing Freezing Arrow. This worked because by this point that skill was pretty much maxed and the monsters dropped like flies.

As Esmay progressed through Nightmare she progressively began to use Freezing Arrow more and more, until it was her main skill near the end of Act II, which is when it was finally maxed. This came in handy when dealing with packs of skeletons, since the corpses shattered upon death they couldn't be resurrected. Esmay did have issues however with dealing with packs now that she didn't have a reliable tank in the valkyrie. The mercenary simply couldn't cut it by himself against the worst of packs and as a result Esmay have some issues. Most notable was in the Viper Temple where the first level had a stair trap of about two dozen snakes. Esmay tried to escape them by running farther into the temple to gain some breathing room, but every turn simply loosed more monsters upon her until she was cornered and eliminated.

That was more overconfidence than anything else, she should have taken things slower and would have survived her first attempt into the temple. Regardless she was successful the second time around. Freezing Arrow is much more mana intensive than Charged Strike however, so Esmay is running out of mana potions frequently, requiring more trips back to town. However once I got the hand of it she progressed nicely through to Act V, where she ran into more problems.

Her issues in the Barbarian homeland didn't start until the Crystalline Passage. There she kept encountering back spawns of snakes, frenzytaurs or some combination thereof. Her mercenary simply wasn't capable of tanking two champion frenzytaurs at a time and as a result Esmay found herself running dangerously low on gold for resurrections. She had to start picking up all the items that gave good money returns to keep things going, but it was quite close for a little while. Eventually she did finally make her way to Baal and dispatched him with relative ease.

Hell, it turns out, didn't start off so bad. Esmay started off at P1 assuming all the immunities would make it too difficult otherwise. That turned out to be a mistake, so she ramped things up to P3 from the Cold Plains onward. Now she could no longer stay with a single skill for the majority of the time. Esmay found herself switching from Charged Strike, to Freezing Arrow, back to Charged Strike and then a few Lightning Furies to finish things off on a constant basis. She is questing with FA as the primary skill, but that's as much for the cool aura that Mavinas set gives than anything else. Besides, she'd be a lightning Amazon otherwise and that's not her point. She's a Frost Maiden first, with a CS backup skill and I intend to play her that way as much as possible. Besides, the frozen monsters makes the mercenary job of tanking so much easier.

Things went smoothly for the most part, although single cold immune monsters take a while to eliminate with CS if they aren't very large (think vampires). Still Esmay wasn't noticing the fact she was questing without a valkyrie, something none of my Amazons have done up to this point. Esmay was having a grand old time until she was ambushed out in the desert of Act II. Apparently there was a vulture extra strong, might enhanced boss hiding behind a palm tree where it couldn't be seen. Esmay, thinking she had nothing to fear stood nearby and plucked away at the minions. Suddenly Esmay's life was practically zero and then it was gone, two hit knockout. After that Esmay was a bit more careful to stand out in the middle of nowhere so monsters didn't have anywhere to hide.

Everything through Act III was done at P3, but it was dropped down to P1 from Act IV onwards as it was time to end Esmay's quest. She ripped through Act IV like it wasn't even there. Hordes of maggots dropped in a single FA and LFs took out any CI stragglers. Diablo didn't even require a single health potion, although the mercenary didn't need about a dozen resurrections due to IM just to get to Big D. Nothing of interest was dropped of course, why would Hell be any different than the rest of the areas up to this point.

Act V was a bit tougher than the previous act, but not enough to give Esmay any real problems. She did find herself using the decoy to keep ranged monster packs busy while she dealt with someone else, something she rarely had to do up to this point. While that became common practice, for the most part everything else stayed the same, with one exception. From the Crystaline Passage onward Esmay no longer quested with her bow as the main weapon, instead her javelins were the main weapon as cold immune monsters outnumber non-CIs in all areas except the WSK. So while there was less freezing of monster packs to keep the mercenary alive, this was replaced by LF strikes that wiped out the packs faster than they could hurt the mercenary, so it evened out in the end.

No champion packs of Frenzytaurs were encountered so Esmay had no trouble all the way through Baal and his minions. The WSK threw at her the obligatory monster spawns of Unravellers, Dolls, Oblivion knights and Souls but in Esmay successfully engaged them all. The minions when down with a whimper and Baal, while he did remain cloned the entire fight, was defeated without too much hassle.

A few parting thoughts about the Fishyzon. She's a very overpowered build. Even untwinkled she'd be able to handle all of Hell at P3. The equipment that Esmay wore wasn't the most optimal for her skills, as she was more a themed build for the Mavinas set than anything else. She could have been even more deadly with a few choice gear changes and could perhaps had dealt with Hell at P5. With this being my first Amazon without a valkyrie sidekick I found the experience odd but didn't notice her absence too much. The fact that FA worked even better for tanking monster packs had a lot to do with it, as did the chance to decrepify that the mercenary's Reapers Toll provided. Overall a very safe and powerful build, exactly as advertised.

Stats:
Level 84
Strength - 92(122)
Dexterity - 130(199)
Vitality - 273(273)
Energy - 15(15)

Life - 1035(1035)
Mana - 139(294)

Lightning Resistance - 75
Fire Resistance - 75
Cold Resistance - 75
Poison Resistance - 75

Skills:
Freezing Arrow - 20(26)
Cold Arrow - 20(26)
Decoy - 1(7)
Pierce - 1(7)
Lightning Fury - 20(25)
Charged Strike - 20(25)
Lightning Bolt - 4(9)

Equipment:
Weapon: Mavinas Caster (shael)
Switch Weapon: Titan's Revenge
Switch Shield: Mosers Blessed Circle (2 Pdiamonds)
Armor: Mavinas Embrace (cold facet)
Belt: Mavinas Tenet
Helm: Mavinas True Sight
Boots: light plated boots - LR 28%, PR 27%, 23% MF, 20% FRW
Gloves: Mavinas Icy Clutch
Amulet: All resist 30%
Ring 1: Raven Frost
Ring 2: FR 18%, CR 17%, 4 Dex, 24 AR

Mercenary ( Desert Warrior)
Helm: Tal Rashas Horadric Crest
Armor: Shaftstop
Weapon: Reaper's Toll

Hellforge:
NM: Sol
Hell: Ko

Wednesday, May 6, 2009

Diablo II: Fishyzon Skill Layout

A Fishyzon is an Amazon character that utilizes Freezing Arrow and Lightning Fury/Charged Strike attacks to deal damage to her enemies. Along with this a backup skill of a single point Jab or even relying on the mercenary provide this character the ability to deal with any monsters encountered. Unlike many other Amazon builds, the valkyrie minion is not utilized, which does make this build a little bit more fragile than most, but not enough to cause any real concern. The skill setup is as follows:

Jab - 1
Inner Sight - 1
Power Strike - 1
Cold Arrow - 1
Poison Javelin - 1

At level six several interesting skills are available to the character. None of them however will be a final skill so for the time being none of them will receive more than a single point. As such the character will be utilizing normal attacks for the beginning of the game with a single Poison Javelin or Cold Arrow thrown in for tough bosses or large packs that can't be dealt with one at a time.

Critical Strike - 1
Lightning Bolt - 1
Slow Missile - 1

At level twelve only prerequisites are being filled so battles are still fought in the same manner. Mostly normal attacks with the odd Poison Javelin thrown in against packs or Cold Arrow against bosses.

Ice Arrow - 1
Charged Strike - 1
Plague Javelin - 1
Penetrate - 1

At level eighteen one of the main skills does finally become available, Charged Strike. However at such a low level the mana requirements for the damage dealt are not very character friendly and as such the skill is used only in dire emergencies. Otherwise tactics remain the same.

Decoy - 1
Charge Strike - 7

At level twenty-four a very good monster distraction becomes available in Decoy. With only a single point it won't last very long but the few seconds of peace should be enough at this point in questing to allow the character to regroup her wits. Charged Strike has become a bit more viable, still mana hunger enough that it isn't in use all of the time, but working it's way towards that goal.

Lightning Fury - 1
Freezing Arrow - 1
Charged Strike - 13
Pierce - 1

At level thirty all skills are now available, including two of the main ones in FA/LF. Also, Charged Strike has become powerful enough that it may be used on a constant basis. Half of the inventory will need to be filled with mana potions before venturing out, in order to ensure a decent amount of territory can be crossed before a trip back to town is required.

Charged Strike - 20
Freezing Arrow - 6

At level thirty-seven Charged Strike is now maxed and dealing significant damage. While CS is the main attack Freezing Arrow has been added to the skillset and comes into play whenever a pack approaches. One or two quick FA shots freezes the group for a short period of time, but normally enough for the character to eliminate a few with CS. Then the process is repeated until the pack is gone.

Freezing Arrow - 20

At level fifty Freezing Arrow is maxed. Finally the character has a choice as to which skill will be the main one, FA or CS. Either will work quite well and purely depends on the characters personal preference. Either way scouting ahead with the random Decoy from time to time is advisable, especially in areas such as the Durance and WSK were very nasty monsters can pop out of nowhere.

Cold Arrow - 10
Lightning Fury - 10

At level sixty-five the synergy for Freezing arrow is increased, as is one of the mains skills in Lightning Fury. As the character is still in Nightmare difficulty having LF maxed is not an absolute priority, Charged Strike and Freezing Arrow do quite fine at this point.

Cold Arrow - 20
Lightning Fury - 20

By level eighty-one all of the skills are complete and the character should be able to deal with any monster pack encountered. Liberal use of Decoy in Hell difficulty is suggested to avoid any nasty traps, although granted stair traps will still be unavoidable. But without a valkyrie to soak up the damage the character needs to be a tad cautious when moving through areas. From here on the extra skill points can be placed in a few different areas. Decoy could be increased to give a more powerful, and instantly summonable, tank. Or one of the CS/LF synergies could be increased to provide more power to those attacks. Or Pierce can be increased to add to the current percentage. Which route is taken purely depends on the character's play style and what situations have caused the character difficulties up to this point.

Final Skill Distribution:

Cold Arrow - 20
Freezing Arrow - 20
Lightning Fury - 20
Charged Strike - 20
Decoy - 1
Pierce - 1

Tuesday, April 28, 2009

Java: IP Analyzer Update #2

Previously this program relied upon a brute strength method of comparing a given IP with a list of previously provided IPs. Some of these IPs were classes and large ranges and were converted to a longer list of single IPs before the comparison took place. As one can imagine this is not the ideal way to go about the process as it can take minutes to compare a Class B range and Class C ranges actually crash the program itself.

Recently it became necessary to add a Class B range to the list of IPs to be compared to, so a solution to this problem was needed to allow the program to remain viable. So the entire block of code regarding comparison of IPs was rewritten, with very little of it being reused. Comparison of Ips would be done in steps where each octet was compared to each other rather than the entire IP at once. The input and list IPs were split up into arrays of integers, one slot for each octet of the IP. For those that were classes or ranges there was one array for the beginning of the IP range and one array for the end.

Once the IPs were stored in this manner their first octets were compared and if the given IP range fell within the list's IP range then a boolean variable was set to true, signifying that a match was found.

if(beginUserIP[0] > endCompareIP[0] || endUserIP[0] <>
match1 = false;
else
match1 = true;

This was done for all four octets. Then if all of the variable were true the given IP matched, if not then it did not match the list IP range and the next IP range on the list was taken and the process repeated all over again.

As it turns out this process only requires at most a second to run through the entire restricted IP list, and this includes having some Class A ranges in the list. Also helps that this reduced the amount of code in the program by several dozen lines, considering how small the program is that is rather nice. I don't see any additional changes that need to be made to this program, it is very basic and now all of the bugs are worked out of it so no new updates should be forthcoming.

Monday, April 27, 2009

Java: Hotline Update #10

Another month, another round of changes to the Hotline program. Again, these changes weren't anything significant. Basically three of the options were removed and replaced by three new options. As such this entailed new JButtons to be created with associated listeners, and a new piece to the If-Else statement in the ReportPanel class to handle this new variation to the call options.

Along with this I decided to get cute and inserted an easter egg into the program. Originally I was thinking a blank JButton in the OptionsPanel class to initiate the easter egg. However that seemed a bit obvious and would definitely be noticed by management, so I had to come up with another way. I settled on having the easter egg accessed via the report section, specifically when a report is run covering February 30-31st or some combination of this date range. Since these dates don't exist it won't interfere with legitimate business.

The easter egg is purely a little game. Several windows appear in succession that require an OK button to be clicked. When they are all gone a new window appears displaying the time it took to clear these windows. A lowest score is saved in a text file on the server and is compared to the individual's score, if they are lower then their score replaces the current one.

I'm going to let the reps find it on their own, but may give a slight hint to get them started.

Wednesday, April 22, 2009

Diablo II: Fanatic Zealot Skill Layout

A Fanatic Zealot is a Paladin that utilizes the Zeal attack and Fanatic aura to enhance his physical attack. This build deals purely physical damage to monsters and as such needs a backup skill, such as Vengeance, or specialized equipment, such as Reapers Toll, in order to deal with the physically immune monsters of Hell. The skill setup is as follows:

Might - 1
Sacrifice - 1
Smite - 1
Holy Bolt - 1

At level six this character is utilizing the Might aura in order to amplify his damage. For the low level monsters encountered at this point this is quite adequate to keep progress moving at a decent pace. As Might isn't a synergy for the endgame skills only a single point is placed here.

Blessed Aim - 1
Zeal - 1
Charge - 1

Now at level twelve Zeal becomes available as the character's main attacking skill. This allows multiple monsters to be targeted at the same time, as well as increasing the damage of each attack. Still only a single point Might aura is utilized so progress will most likely slow down a bit at this point as skill points are used mostly on prerequisites so far.

Zeal - 7
Blessed Hammer - 1
Concentration - 1

At level eighteen the character trades in a single point Might aura for a single point Concentration aura. The damage dealt is not increased significantly, but the chance of having the zeal cycle interrupted is reduced dramatically. Along with this the Zeal skill is pumped which adds to the damage done as well as the number of targets that can be hit per cycle. As such the character's progress should increase again to acceptable levels.

Zeal - 13
Holy Shield - 1

At level twenty-four the character is able to utilize the Holy shield skill. As the length of time it will remain is low and mana cost high this skill will only be used in extreme circumstances at this point, such as against Act bosses. Zeal is also increased as the character's level increases, allowing progress to remain smooth.

Zeal - 20
Fanaticism - 2

At level thirty Fanaticism becomes available and replaces Concentration as the aura of choice. At level thirty-one Zeal is maxed as well. With Fanaticism the character's attack becomes faster and additional damage modifiers are added to his attack, helping him deal with the increased Hit Points of the monsters in the later acts.

Fanaticism - 20

At level forty-nine Fanaticism is maxed and the character has received the bulk of the enhanced damage modifiers possible. As such his damage is significant and will allow him to deal with virtually any monster pack encountered.

Holy Shield - 10
Vengeance - 1
Sacrifice - 20

At level seventy-one Holy Shield has been increased to allow it's use in normal questing. Now its charge will last for a few minutes at a time and as such can be used in all circumstances rather than only against act bosses. As such the survival of the character is increased exponentially with the better block rate and multiplied defense rating that Holy shield provides. Vengeance is also given a single point as the answer to physical immune monsters. Preferably the character will have an equipment answer to PIs, but if any unbreakable ones are encountered he will have a way to deal with them with Vengeance. Along with this Sacrifice, a synergy for Zeal, is maxed and as a result increased the damage dealt by the character significantly.

Holy Shield - 20

At level seventy-nine Holy Shield is maxed to allow the highest possible bonus to blocking percentage. This allows the character to have what is basically 75% resistance to physical attacks with a blocking percentage of the same value. Depending on equipment worn this could also push the character's defense rating past the ten thousand mark, which is the magic value when monsters begin to have difficulties successfully attacking the character. That coupled with the max block rating allows the character able to tank even the most dangerous monster packs. From this point onward the character can place points into Defiance as a synergy for Holy Shield. This will increase the defense rating of the character that much more and increase his survivability.

Final Skill Distribution:

Zeal - 20
Sacrifice - 20
Fanaticism - 20
Holy Shield - 20
Vengeance - 1
Defiance - rest

Friday, April 17, 2009

Diablo II: Patriarch Silverbolt

Silverbolt is a Fanatic Zealot, a Paladin that utilizes the Zeal attack and Fanaticism aura to enhance his physical attack. This is the type of character that requires a good, high damaging weapon in order to be effective. It's a very simple build with few variations, normally in the area of how to deal with physically immune monsters. Mine followed the mainstream concept of maximizing damage output above all else.

Silverbolt started off untwinkled, as per the norm, but with the plan to upgrade his weapon early and often in order to keep his damage as high as possible. Progress in the beginning was slow but steady as the first act of Normal normally doesn't have any major obstacles I haven't seen before. Silverbolt progressed through nicely and with the addition of some lightning/fire resistance charms was able to tank the lightning beetles of Act II and shaman of Act III comfortably.

Still his progress the farther into Normal he got was slower and slower. And this with the constant twinkling of weapons: Bladebone to Rusthandle to The Chieftain to Steeldriver to Hand of Blessed Light. As such the mobs of monsters couldn't simply be engaged head on after Act I, they would swarm too much and overwhelm our hero. Instead Silverbolt could be found hiding behind his trusted Desert Warrior mercenary and letting the more hardy companion soak up as much damage as possible. Environmental obstacles were also used to great effect in this regard, such as the doorways of the Act II tombs.

AS expected Act IV lead to a fair amount of close calls, but no NDE until Silverbolt was suddenly surrounded by spawners and their kin. With a pillar to his back Silverbolt had no where to run and ran out of potions before the spawners ran out of kids. Dying in Normal really wasn't part of the plan, but it did show some overconfidence on my part as a boss pack of spawners really needs to be handled a bit more delicately, no matter the difficulty. After that Silverbolt was able to complete out the difficulty without any other dire circumstances, including fights against Diablo and Baal.

This brought him to Nightmare, at level 45. Here just about all of his end game equipment could be worn, and was. All that was missing was his weapon, boots and gloves. Even though his damage output didn't grow considerably, his defensive ability gained an exponential boots. Max block was suddenly very possible along with 90% resistance to all elements. As a result Silverbolt blew through all of Nightmare difficulty with almost no problems. In fact he used only three health potions the entire difficulty, not counting any that went to the merc of course. He did get caught once by an Oblivion Knight in mid-zeal cycle in the Chaos Sanctuary, from which death was the only outcome. I truly thought all of the OKs were farther away, otherwise I would never have tried to zeal in their presence.

Upon entering Hell both Silverbolt and his mercenary, a Might Desert Warrior, were almost full equipped, all that was missing was the merc's Reaper's Toll. This was my answer to the physically immune monsters that would be encountered, namely Ghosts, Swarms and unique bosses. Silverbolt's single point in Vengeance was purely for any unbreakable PIs. Silverbolt took Hell at P3, as I had a feeling he could handle it. He could, all the way through.

Tactics were reversed from NM, Silverbolt was in front tanking the monster mobs while his mercenary hung behind and poked them with his polearm but mainly remained in a safe position. Due to max block and around 11k defense Silverbolt was as much a tank as possible. That coupled with a decent amount of life leech meant he could survive almost any mob encountered head-on. The only monsters he let the mercenary lead was against Ghosts so they didn't drain his mana away.

Silverbolt did keep the trend going with a single death in Act IV. I was being careful and using Vengeance only in the Chaos Sanctuary. However while swinging against a Doom Knight one of those mana draining wisps drained away all of Silverbolt's mana almost instantly (it was low to begin with). At almost the exact same time an Oblivion Knight cursed him with Iron Maiden. So when Silverbolt's swing landed home he died, or his swing after killed him. Either way an unfortunately chain of events conspired to Silverbolt's only death in Hell. From there onward he ripped through the rest of the difficulty without any other unfortunate occurrences. Baal and his minions were almost anti-climatic after all the effort of getting to the World Stone Keep in the first place. Especially since the Throne Room consisted of Dolls, OKs and the Witches that kept Silverbolt cursed the entire level. At least that overrode Iron Maiden, the only plus possible.

No plans to do anything else with Silverbolt. I did find a Lower Kurast map with two campfires for him. It's possible I'll use him for LK running to pop all chests/logs/bodies in the area once and a while. I'm not really going to try for thousands of runs with him, since a single run takes a few minutes easily. Other than that Silverbolt will retire comfortably.

Stats:
Level 84
Strength - 105(126)
Dexterity - 78(106)
Vitality - 317(352)
Energy - 15(15)

Life - 1157(1357)
Mana - 139(317)

Lightning Resistance - 90
Fire Resistance - 90
Cold Resistance - 88
Poison Resistance - 57

Skills:
Zeal - 20(28)
Fanaticism - 20(26)
Sacrifice - 20(28)
Holy Shield - 20(28)
Vengeance - 1(9)
Defiance - 7(13)

Equipment:
Weapon: Heaven's Light (Amn-Shael)
Armor: Guardian Angel (Ort)
Shield: Herald of Zakarum (Pdiamond)
Boots: Gore Rider
Belt: String of Ears
Gloves: Laying of Hands
Helm: Rockstopper (Thul)
Ring 1: Raven Frost
Ring 2: Angelic Halo
Amulet: Angelic Wings

Mercenary (Might Desert Warrior)
Helm: Vampire Gaze
Armor: Duriel's Shell
Weapon: Reaper's Toll

Hellforge
NM - Io
Hell - Fal

Friday, March 27, 2009

Java: Hotline Update #9

Another round of changes was made to the Hotline program. This time around we were adding a single option, "India Inquiries", however two current options were removed as well, "Symbian" and "Blackberry". The reasoning for this is that not very many of either comes into the call center so there isn't any need to track them anymore. That and management has made any decisions they wanted about the devices with this OS.

This time around I was able to make the changes before it had to go live, as a result no need to recreate individual rep data. The changes consisted of removing two JButtons from the display and replacing them with a single one for the new option. Along with that in the ReportPanel class I had to extend the If-Else statement controlling which options were displayed in the report output. The month of March 2009 has a unique display so that had to be taken into account.

(Integer.parseInt(targetMonth) == 3 && Integer.parseInt(targetYear) == 2009)

Beyond that everything else remained the same in the program. This update will be made at the beginning of next month.