Beyond the search feature there were a few other minor changes I wanted to make to the En Guard program. First off the "Contact Info" JTextField is currently a required field to submit a new record. This field turned out to be less useful than I had intended so I am making it an optional field instead. At first I thought I would need to alter the code checking which fields are filled as well as the code that opens and saves the records. As it turns out none of this was necessary. All I needed to do was set the text of the JTextField to be a space character. By doing this the field is technically "filled" and saving/opening records works just as it did before. Good reminder to always look for the simple solution first and then work towards more complex resolutions.
The second feature I wanted to work on was making the skin chooser a bit more viable. Currently it works great to change the background color of the application, however whenever the app is closed it reverts back to the original color. This can get tedious to change such information every time the program is opened. Therefore I added a log in to the program that forces the user to choose a representative name before gaining access. This method is called before the properties of the JFrame are set.
JOptionPane.showConfirmDialog(aFrame, loginPanel, "Select Name", JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE);
loginIndex = loginBox.getSelectedIndex();
The log in sets the loginIndex variable to the index corresponding to the rep's name. This information is then used to designate the file name that the program will need to open in order to determine what color to set the background to. Each rep has their own text file containing their color information, such as:
150
200
250
The file is then opened and each line of text assigned to the background color variables red, green and blue. Once done the SetBackground() method is called to change all of the JPanel's color accordingly. The text file will be updated whenever the ColorChanger() method is called as well, to ensure that the next time the program is opened it does so with the most recently selected color combination. As an added bonus, as the rep's name is being stored for this process, the Entered By field is automatically populated with the rep's name once the program is opened.
Thursday, October 30, 2008
Tuesday, October 28, 2008
Java: En Guard Update #5
Two hundred and sixty-one lines of code later the Search tab is complete. The components were easily modified from other programs I have already made so putting the GUI together was a piece of cake. A combination of BorderLayouts and GroupLayouts were used for the look-and-feel portion. Once that was done the workhorses of this tab, the Listeners, needed to be created.

The Listener associated with the JList was copied along with the JList component itself and only small modifications were required to allow it to function properly. The JButton Listener however had to be created from scratch. Once the button was pressed several things needed to happen. First I needed to populate an array of file names for those currently present in the data directory. Originally I had gone with a brute force method since all of the file names are numbers ranging from 1 to 2.5 million. I had a For loop checking which files existed and if they did adding them to the JList component.
Obviously this took quite a bit of time to complete and slowed down the program considerably, enough so that it actually crashed the program on more than one occasion. Therefore a rewrite of the method (called by the Listener) was required. In reviewing the File Class I noticed a nice method named list() that would output a String array of the files present in a given directory. Exactly what I was looking for. Then calling a length method on the created arrays produced the exact number of files present so the slots used in the array is known and an exception isn't caused by trying to access a nonexistent array slot.
This search method was much faster than the previous one and does not crash the program at all, which was a nice bonus. Now a few other minor details need to be completed to have this version of En Guard finished. Specifically I want to add a log in dialogue to the program that will register which representative is using that version. This will allow me to auto populate the Submitted By field as well as save the user's skin color preference.

The Listener associated with the JList was copied along with the JList component itself and only small modifications were required to allow it to function properly. The JButton Listener however had to be created from scratch. Once the button was pressed several things needed to happen. First I needed to populate an array of file names for those currently present in the data directory. Originally I had gone with a brute force method since all of the file names are numbers ranging from 1 to 2.5 million. I had a For loop checking which files existed and if they did adding them to the JList component.
Obviously this took quite a bit of time to complete and slowed down the program considerably, enough so that it actually crashed the program on more than one occasion. Therefore a rewrite of the method (called by the Listener) was required. In reviewing the File Class I noticed a nice method named list() that would output a String array of the files present in a given directory. Exactly what I was looking for. Then calling a length method on the created arrays produced the exact number of files present so the slots used in the array is known and an exception isn't caused by trying to access a nonexistent array slot.
This search method was much faster than the previous one and does not crash the program at all, which was a nice bonus. Now a few other minor details need to be completed to have this version of En Guard finished. Specifically I want to add a log in dialogue to the program that will register which representative is using that version. This will allow me to auto populate the Submitted By field as well as save the user's skin color preference.
Thursday, October 23, 2008
Diablo II: Matriarch Theia
Up to this point I have a single MFer that I use as all of my other characters are retired, except the strafer that may make some Pit runs in the future. I wanted to make a character that could do many types of MF runs, such as Pindle, level 85 areas but mostly NM Flayer Jungle and onward as well as NM Cows in search of Skiller Grand Charms. Currently I have maybe 7 of them total so a larger stash would be very helpful.
To that end Theia was born. She takes her name from the Greek Titaness who
ruled the sun. Her name brings overtones of brightness and that is very fitting for a pure lightning sorceress. I decided on zero backup skills as getting through Hell won't be too difficult with a well equipped Act II desert warrior by her side. Beside which she'll be living in NM most of the time and therefore doesn't need to worry about immunities.
Normal was fairly uneventful. The going was very slow at first with Charged Bolt the main weapon of choice until Lightning became available. Very early on mana consumption became a problem and will remain one until I either equip the mercenary with an Insight weapon or find lots of +mana items. Either way she leaves town with an inventory filled with mana pots and returns quite frequently.
She didn't run into any issues besides one against Infector of Souls in the Chaos Sanctuary. Up to this point she fried everything easily so while the monsters surrounded the mercenary she simply fired Chain Lightning at them over and over. I wasn't paying complete attention and apparently Theia was standing a little too close. One of the monsters wandered her way and hit her with a blast of flaming breath that simply drained her life to zero and killed her off. Didn't help she had zero fire resistance up to this point.
I was very annoyed at myself for such a stupid mistake, and another reason I don't play Hardcore outside of tournaments. Regardless Theia avenged that death by frying everything from that point onwards with a vengeance. The rest of Normal was finished with little fuss and no interesting drops.
Nightmare was a bit more difficult. Lightning immunes started to appear and the mercenary's weapon wasn't really up to dealing with them in more than 3 monster packs. Going was a bit slower and a few more deaths occurred, mostly due to player inattention than anything else. Still, progress was made all the way the end of Nightmare without too much fuss. The WSK did have Gloams on 2 levels, Minatours on 3 levels and dolls on the final level. But since there weren't any stair traps Theia was able to clear all of them without dying. She leveled up on Baal to be able to wear all of her endgame equipment, minus the Archainds Mesh, before venturing into Hell difficulty.
Once gear was twinkled on Theia became a one-woman wrecking crew. She simply ripped apart and non-LIs and used Frost Nova to chill (slow) the LIs encountered so the mercenary could take them out. Lots of monsters died in one hit, very few needed more than three. Absolutely nothing stood in her way, including LIster and company. Oddly enough, she didn't die a single time all in Hell, while in Nightmare she must have died a dozen times. Mostly due to impatience, and purely because I can (Softcore ftw).
Overall a decently fun character and definitely my most powerful one to date. Her future plans are to do cow and NM Act III runs in the search for more skiller grand charms. She's making good progress as she found two while questing, a Martial Arts and a Shape-Shifting skiller.
Stats:
Level 82
Strength - 142(167)
Dexterity - 25(27)
Vitality - 298(352)
Energy - 35(57)
Life - 757(988)
Mana - 197(472)
Lightning Resistance - 20
Fire Resistance - -9
Cold Resistance - 29
Poison Resistance - 20
Skills:
Charged Bolt - 20(32)
Lightning - 20(32)
Chain Lightning - 20(32)
Lightning Mastery - 20(32)
Nova - 6 (rest)
Teleport - 1(13)
Thunder Storm - 1(13)
Frozen Armor - 1(10)
Frost Nova - 1(10)
Warmth - 1(10)
Equipment:
Weapon: The Oculus
Armor: Skin of the Vipermagi
Boots: War Traveler
Belt: Arachnid Mesh
Gloves: Chance Guards
Helm: Harlequin Crest
Ring 1: Nagelring
Ring 2: 6% FR, 9% CR, 1 strength, 10% FCR
Amulet: 12 strength, +3 lightning skills
Mercenary (Might Holy Freeze Warrior)
Helm: Tal Rasha's Helm
Armor: Shaftstop
Weapon: Cryptic Axe 'Insight'
Hellforge
NM: Sol
Hell: Hel
To that end Theia was born. She takes her name from the Greek Titaness who

Normal was fairly uneventful. The going was very slow at first with Charged Bolt the main weapon of choice until Lightning became available. Very early on mana consumption became a problem and will remain one until I either equip the mercenary with an Insight weapon or find lots of +mana items. Either way she leaves town with an inventory filled with mana pots and returns quite frequently.
She didn't run into any issues besides one against Infector of Souls in the Chaos Sanctuary. Up to this point she fried everything easily so while the monsters surrounded the mercenary she simply fired Chain Lightning at them over and over. I wasn't paying complete attention and apparently Theia was standing a little too close. One of the monsters wandered her way and hit her with a blast of flaming breath that simply drained her life to zero and killed her off. Didn't help she had zero fire resistance up to this point.
I was very annoyed at myself for such a stupid mistake, and another reason I don't play Hardcore outside of tournaments. Regardless Theia avenged that death by frying everything from that point onwards with a vengeance. The rest of Normal was finished with little fuss and no interesting drops.
Nightmare was a bit more difficult. Lightning immunes started to appear and the mercenary's weapon wasn't really up to dealing with them in more than 3 monster packs. Going was a bit slower and a few more deaths occurred, mostly due to player inattention than anything else. Still, progress was made all the way the end of Nightmare without too much fuss. The WSK did have Gloams on 2 levels, Minatours on 3 levels and dolls on the final level. But since there weren't any stair traps Theia was able to clear all of them without dying. She leveled up on Baal to be able to wear all of her endgame equipment, minus the Archainds Mesh, before venturing into Hell difficulty.

Overall a decently fun character and definitely my most powerful one to date. Her future plans are to do cow and NM Act III runs in the search for more skiller grand charms. She's making good progress as she found two while questing, a Martial Arts and a Shape-Shifting skiller.
Stats:
Level 82
Strength - 142(167)
Dexterity - 25(27)
Vitality - 298(352)
Energy - 35(57)
Life - 757(988)
Mana - 197(472)
Lightning Resistance - 20
Fire Resistance - -9
Cold Resistance - 29
Poison Resistance - 20
Skills:
Charged Bolt - 20(32)
Lightning - 20(32)
Chain Lightning - 20(32)
Lightning Mastery - 20(32)
Nova - 6 (rest)
Teleport - 1(13)
Thunder Storm - 1(13)
Frozen Armor - 1(10)
Frost Nova - 1(10)
Warmth - 1(10)
Equipment:
Weapon: The Oculus
Armor: Skin of the Vipermagi
Boots: War Traveler
Belt: Arachnid Mesh
Gloves: Chance Guards
Helm: Harlequin Crest
Ring 1: Nagelring
Ring 2: 6% FR, 9% CR, 1 strength, 10% FCR
Amulet: 12 strength, +3 lightning skills
Mercenary (Might Holy Freeze Warrior)
Helm: Tal Rasha's Helm
Armor: Shaftstop
Weapon: Cryptic Axe 'Insight'
Hellforge
NM: Sol
Hell: Hel
Wednesday, October 15, 2008
Diablo II: Guardian Bob
Note: Proper repost from a previous one
Bob is a Fishymancer out of the No Vitality tournament. He also has the distinction of being my very first guardian so yes I am very proud of him. I only play HC in tournaments, and my next closest guardian was a lightning sorceress in Skunkbelly's Six of One, Half Dozen of the Other tournament that died in Act V Hell.
Anyway, for those that aren't in the tournament, the basic premise is that no
stat points may be placed into vitality. Equipment and charms that give vitality are fine, just no hard points. This means Bob ended his quest with 284 unused stat points, but all of the skill points were used as they became available. This is a single pass, no twinkling tournament (as is the norm).
Bob is a traditionally build Fishymancer, so:
Skeleton Mastery: 20
Raise Skeleton: 20
Raise Skeletal Mage: 20
Corpse Explosion: 20
Decrepify: 1
Revive: 1
Summon Resist: 1
Dim Vision: 1
Bone Armor: 1
One in all the prerequisites as well. That last one (Bone Armor) was quite key, I'm sure it saved Bob more times than I can count, especially in the beginning of the tournament when Bob had so little life.
Obviously +life and +vitality items were prized and those were equipped before anything else, except maybe lightning/fire resistance items. This resulted in some interesting stat numbers:
Strength: 151 (156)
Dexterity: 25 (31)
Vitality: 15 (57)
Energy: 25 (45)
Life: 226 (621)
Mana: 187 (397)
Equipment:
Helm: Peasant Crown (Ort)
Weapon: Ume's Lament
Shield: Spirit Monarch
Armor: Gothic - 38 life, 60% FR, 30% LR
Gloves: Trang-Oul's Claws
Boots: Tearhaunch
Belt: Plated - 96 life
Amulet: 33 mana, +2 summoning skills
Ring 1: 30% FR
Ring 2: 12% resist all
Mercenary
Helm: Circlet - 15 life, 98 AR, 36% FR, 14% LR, 14% CR, 14% PR
Weapon: Hwanin's Justice
Armor: Hwanin's Refuge
Overall Bob was quite fun, and frustrating to play. I've never actually gotten a Fishymancer all the way through Hell before, HC or SC, as I got bored. However I believe being a tournament and HC was enough incentive to keep me glued to playing him. His minions kept running all over the place and I truly wished I had found a teleport amulet to organize things easier. By far the hardest places were the indoor areas with narrow corridors: Act II tombs, Catacombs, Act III dungeons/sewers. More often than not the army didn't want to walk through the door until Bob had, which isn't very healthy for Bob as I couldn't see what was on the other side. I ended up using the clay golem as a scout, casting it into the next room and then watching what it did. Slow, but fairly safe.
Going was fairly slow but constant in Normal and NM, it was in Hell that he really shined. Reason for this is that Normal/NM was run on /p8 while Hell at /p1, so Corpse Explosion became available and viable in Hell. By the end of it Bob had quite the army going:
1 might mercenary (Mizan)
1 clay golem
11 skeleton warriors
11 skeleton mages
8 revives
Enough meat shields to keep elemental attacks away from Bob. His three worst enemies were Gloams (of course), Slingers (piercing attack) and Oblivion Knights (IM). Thankfully they never all appeared at the same time.
Bob is a Fishymancer out of the No Vitality tournament. He also has the distinction of being my very first guardian so yes I am very proud of him. I only play HC in tournaments, and my next closest guardian was a lightning sorceress in Skunkbelly's Six of One, Half Dozen of the Other tournament that died in Act V Hell.
Anyway, for those that aren't in the tournament, the basic premise is that no

Bob is a traditionally build Fishymancer, so:
Skeleton Mastery: 20
Raise Skeleton: 20
Raise Skeletal Mage: 20
Corpse Explosion: 20
Decrepify: 1
Revive: 1
Summon Resist: 1
Dim Vision: 1
Bone Armor: 1
One in all the prerequisites as well. That last one (Bone Armor) was quite key, I'm sure it saved Bob more times than I can count, especially in the beginning of the tournament when Bob had so little life.
Obviously +life and +vitality items were prized and those were equipped before anything else, except maybe lightning/fire resistance items. This resulted in some interesting stat numbers:
Strength: 151 (156)
Dexterity: 25 (31)
Vitality: 15 (57)
Energy: 25 (45)
Life: 226 (621)
Mana: 187 (397)
Equipment:
Helm: Peasant Crown (Ort)
Weapon: Ume's Lament
Shield: Spirit Monarch
Armor: Gothic - 38 life, 60% FR, 30% LR
Gloves: Trang-Oul's Claws
Boots: Tearhaunch
Belt: Plated - 96 life
Amulet: 33 mana, +2 summoning skills
Ring 1: 30% FR
Ring 2: 12% resist all
Mercenary
Helm: Circlet - 15 life, 98 AR, 36% FR, 14% LR, 14% CR, 14% PR
Weapon: Hwanin's Justice
Armor: Hwanin's Refuge
Overall Bob was quite fun, and frustrating to play. I've never actually gotten a Fishymancer all the way through Hell before, HC or SC, as I got bored. However I believe being a tournament and HC was enough incentive to keep me glued to playing him. His minions kept running all over the place and I truly wished I had found a teleport amulet to organize things easier. By far the hardest places were the indoor areas with narrow corridors: Act II tombs, Catacombs, Act III dungeons/sewers. More often than not the army didn't want to walk through the door until Bob had, which isn't very healthy for Bob as I couldn't see what was on the other side. I ended up using the clay golem as a scout, casting it into the next room and then watching what it did. Slow, but fairly safe.
Going was fairly slow but constant in Normal and NM, it was in Hell that he really shined. Reason for this is that Normal/NM was run on /p8 while Hell at /p1, so Corpse Explosion became available and viable in Hell. By the end of it Bob had quite the army going:
1 might mercenary (Mizan)
1 clay golem
11 skeleton warriors
11 skeleton mages
8 revives
Enough meat shields to keep elemental attacks away from Bob. His three worst enemies were Gloams (of course), Slingers (piercing attack) and Oblivion Knights (IM). Thankfully they never all appeared at the same time.
Diablo II: Guardian Atropos
Note: Proper repost from a previous one
Atropos is my second character from the No Vitality Tournament, and as it turns out also my second only Guardian. Some of you may remember Bob.
For those that aren't in the tournament, the basic premise is that no stat points may be placed into vitality. Equipment and charms that give vitality are fine, just no hard points. This is a single pass, no twinkling tournament (as is the norm).
Atropos is a level 82 Frost Maiden that uses Magic Arrow for cold immunes, so:
Cold Arrow - 20
Ice Arrow - 10
Freezing Arrow - 20
Magic Arrow - 13
Valkyrie - 20
Pierce - 1
Decoy - 2
Also one point in all prerequisites. As you can see I did make a major mistake with the Ice Arrow
points. At the time, in Normal, adding points gave me the ability to freeze enemies and deal more damage quicker. I figured that maxing all three cold skills was necessary anyway. After reading up on Frost Maidens a bit more however I realized the freezing length it provides is basically negated in Hell and therefore the 9 extra points there would have been much better off in Magic arrow and Decoy.
Obviously +life and +vitality items were prized and those were equipped before anything else, except maybe lightning/fire resistance items. This resulted in some interesting stat numbers:
Strength: 100 (100)
Dexterity: 330 (345)
Vitality: 20 (20)
Energy: 50 (55)
Life: 272 (749)
Mana: 189 (294)
Equipment
Weapon: Stag Bow - 10-14 cold dmg, 99 poison dmg, +2 bow skills
Boots: Heavy Boots - 40% LR, repair
Helm: Circlet - 27 mana, 14% FR, 14% LR, 44% CR, 14% PR, 17% MF
Armor: 93 life, 30% FR, 30% LR, 21% PR
Amulet: 98 life, 21% resist all
Ring 1: 64 AR, 23% CR
Gloves: Vampirebone - 14% FR, +77% Gold, 23% MF, 5% AR
Ring 2: 9 dex, 30% FR
Belt: Plated - 97 life
Mercenary (Defiance):
Weapon: Cryptic Axe - Malice
Armor: Mesh - 23% FR, 26% CR, 17% FHR
Helm: Tal Rasha's
Bonuses from charms:
189 life, 71 mana, 20 LR, 43 CR, 5 PR, 13 FR, 3 sources of cold dmg
Overall she was a blast to play, but definitely underpowered. Due to being untwinkled the main concern was the dismal amount of non-cold damage she inflicted, so cold immunes in Hell gave her constant headaches. As a completely opposite to Bob, she favored the indoor and cramped areas that forces monsters to bunch up and therefore one arrow would freeze huge packs.
In the beginning only Atropos was a bit overpowered, cold enhanced arrows simply made short work of any monster/boss she encountered. Then Andariel dropped a Dimoak's Hew and suddenly Emilio was even more overpowered, so much so that Atropos wasn't able to add much to any battle before Emilio finished everyone off. As a result until Freezing Arrow was available Atropos was a cheerleader.
As expected cold immunes were terrible, starting in Act V Normal. The terrain had to be used constantly to bottleneck the monster packs so Emilio and the valkyrie could deal with them 2-3 at a time. More than that and Emilio would be in serious need of a doctor...or mortician. This trend continued into Hell until Emilio could get a better weapon. My rune finding was terrible, as I wanted an Insight but never found a Sol nor enough Amns to cube one. So we went with a Malice instead for the OW and increased damage.
For the most part things were safe, but that may have been due to me being extra careful than anything else. Decoy was used liberally as both a scout and a, gasp, decoy to split monster group's attention. Probably cast is a couple thousand times in Hell alone. Also picked up the trick of running away slightly from battle, just enough to get Emilio to follow but not the valkyrie. Allowed me to position him so he wasn't the main focus of attention for the monsters, since he was quite fragile.
There were a few scary moments. City of the Damned contained Stygian Hags, which are cold immune and so are their spawn. They multiplied faster than my crew could kill them. So I took to sprinting through the level looking for the WP. Really not a good idea as I did get cornered at one point, but managed to work my way out. Second troublesome spot was the Ancients, as I just couldn't split them up for the longest time. As a result I almost ran out of gold resurrecting Emilio. Finally I equipped some FRW and that allowed the Ancients to be dealt with one at a time.
Baal himself was an epic battle worth of song, dance and the consumption of much recreational beverages. Atropos had more NDEs than the rest of the Acts put together. Appendages littered the area, Baal was cloned more often than not and Emilio took a dirt nap early (slacker!). But eventually Atropos whittled down Baal's life to nothing after at least 30 trips back to town to restock and heal.
Atropos is my second character from the No Vitality Tournament, and as it turns out also my second only Guardian. Some of you may remember Bob.
For those that aren't in the tournament, the basic premise is that no stat points may be placed into vitality. Equipment and charms that give vitality are fine, just no hard points. This is a single pass, no twinkling tournament (as is the norm).
Atropos is a level 82 Frost Maiden that uses Magic Arrow for cold immunes, so:
Cold Arrow - 20
Ice Arrow - 10
Freezing Arrow - 20
Magic Arrow - 13
Valkyrie - 20
Pierce - 1
Decoy - 2
Also one point in all prerequisites. As you can see I did make a major mistake with the Ice Arrow

Obviously +life and +vitality items were prized and those were equipped before anything else, except maybe lightning/fire resistance items. This resulted in some interesting stat numbers:
Strength: 100 (100)
Dexterity: 330 (345)
Vitality: 20 (20)
Energy: 50 (55)
Life: 272 (749)
Mana: 189 (294)
Equipment
Weapon: Stag Bow - 10-14 cold dmg, 99 poison dmg, +2 bow skills
Boots: Heavy Boots - 40% LR, repair
Helm: Circlet - 27 mana, 14% FR, 14% LR, 44% CR, 14% PR, 17% MF
Armor: 93 life, 30% FR, 30% LR, 21% PR
Amulet: 98 life, 21% resist all
Ring 1: 64 AR, 23% CR
Gloves: Vampirebone - 14% FR, +77% Gold, 23% MF, 5% AR
Ring 2: 9 dex, 30% FR
Belt: Plated - 97 life
Mercenary (Defiance):
Weapon: Cryptic Axe - Malice
Armor: Mesh - 23% FR, 26% CR, 17% FHR
Helm: Tal Rasha's
Bonuses from charms:
189 life, 71 mana, 20 LR, 43 CR, 5 PR, 13 FR, 3 sources of cold dmg
Overall she was a blast to play, but definitely underpowered. Due to being untwinkled the main concern was the dismal amount of non-cold damage she inflicted, so cold immunes in Hell gave her constant headaches. As a completely opposite to Bob, she favored the indoor and cramped areas that forces monsters to bunch up and therefore one arrow would freeze huge packs.
In the beginning only Atropos was a bit overpowered, cold enhanced arrows simply made short work of any monster/boss she encountered. Then Andariel dropped a Dimoak's Hew and suddenly Emilio was even more overpowered, so much so that Atropos wasn't able to add much to any battle before Emilio finished everyone off. As a result until Freezing Arrow was available Atropos was a cheerleader.
As expected cold immunes were terrible, starting in Act V Normal. The terrain had to be used constantly to bottleneck the monster packs so Emilio and the valkyrie could deal with them 2-3 at a time. More than that and Emilio would be in serious need of a doctor...or mortician. This trend continued into Hell until Emilio could get a better weapon. My rune finding was terrible, as I wanted an Insight but never found a Sol nor enough Amns to cube one. So we went with a Malice instead for the OW and increased damage.
For the most part things were safe, but that may have been due to me being extra careful than anything else. Decoy was used liberally as both a scout and a, gasp, decoy to split monster group's attention. Probably cast is a couple thousand times in Hell alone. Also picked up the trick of running away slightly from battle, just enough to get Emilio to follow but not the valkyrie. Allowed me to position him so he wasn't the main focus of attention for the monsters, since he was quite fragile.
There were a few scary moments. City of the Damned contained Stygian Hags, which are cold immune and so are their spawn. They multiplied faster than my crew could kill them. So I took to sprinting through the level looking for the WP. Really not a good idea as I did get cornered at one point, but managed to work my way out. Second troublesome spot was the Ancients, as I just couldn't split them up for the longest time. As a result I almost ran out of gold resurrecting Emilio. Finally I equipped some FRW and that allowed the Ancients to be dealt with one at a time.
Baal himself was an epic battle worth of song, dance and the consumption of much recreational beverages. Atropos had more NDEs than the rest of the Acts put together. Appendages littered the area, Baal was cloned more often than not and Emilio took a dirt nap early (slacker!). But eventually Atropos whittled down Baal's life to nothing after at least 30 trips back to town to restock and heal.
Diablo II: Matriarch Malice
Note: Proper post from a previous one.
Well I recently restarted. This means of course I need a magic finder, so introducing Malice the Meteorb sorceress. She's my very first Meteorb as I normally build a lightning sorceress for magic finding purposes. Wanted something different this time around.
Playing softcore, thankfully. Had I not then Malice's journey would have ended in the Normal Blood Moor, I kid you not. Right at the beginning of the Cold Plains was a pack of 3 Champion Brutes that Flaive attracted my way by shooting at them (and missing I might add). Very tough characters for a level 6 sorceress with purely starting gear and a one point static field/firebolt. Without a merc to distract them I tried to get in close enough to static them a bit, and got too close. A quick stunlock second later Malice was dead, my earliest death ever.
After that auspicious start Malice made good progress through Normal with no other close calls or really interesting issues. Picked up Frozen Orb just before dealing with Mephisto so from then until Nightmare it was a cakewalk.
However Nightmare gave me some problems. Apparently the Diablo gods knows
I've restarted and therefore threw as many bosspacks at me as possible, normally in pairs. This lead to a death in the Dark Wood. A might enhanced bosspack of spearwomen snuck up on me under the trees, didn't see them until Malice was sprawled on the ground. Another death to a super fast lighting beetle bosspack in Act II didn't help my confidence in this build much (or my abilities). However everyone seems to swear by it so I stuck with Malice. She started to slow down considerably in the Kurast areas of Act III, but slowly and surely got to Mephisto. Used the tried and true tactic of leaving the mercenary as bait for the boss. Mephisto killed the merc but at the same time Malice was able to static field him a lot. This lead to several minutes of Malice running circles around Mephisto throwing Frozen Orbs. Same tactic used on Diablo and Baal (with some meteor thrown in).
Hell ended up being as long as I expected, even when run at /p1. Of course the first three bosses Malice encountered were fire/cold immune but after that they got more manageable, but FI/CI guys still showed up regularly. Didn't help that she was wearing her magic find gear until Act IV as I forgot it was equipped (explains why her resistances were negative). Once this was corrected she did a bit better until Act V, where every drop was picked up for gold in order to pay for mercenary resurrections. Must have resurrected him at least 50 times in Act V alone. Oddly enough, the regular monsters gave Malice more trouble than the act bosses, both Diablo, Baal and Baal's Minions fell very fast, with Baal requiring 30 seconds tops, and the Ancients were only rerolled twice due to receiving dual fire/cold resistant opponents.
One thing to note is that the WSK did give one of the nastiest monster grouping possible. Dolls and Gloams backed up by Horadrim Ancients. :yikes: A lot of cat-and-mouse was played to draw monsters away from their packs to deal with them in 2-3 sized groups.
Statistics (before equipment)
Level: 82
Strength: 92(72)
Dexterity: 30(25)
Energy: 66(35)
Vitality: 273(268)
Life: 765
Mana: 342
[100 Stat points unused]
Resistances
Lightning: 75
Fire: 73
Cold: 35
Poison: 66
Skills
Fire Mastery, Fireball, Meteor, Frozen Orb: 20
Cold Mastery, Static Field, Teleport, Warmth: 1
Equipment
Helm: Tarnhelm
Armor: Skin of the Vipermagi
Weapon: +2 Fire skills, 20% FCR, 39% Fire Resist Orb
Shield: Lidless Wall
Belt: 22% Light Resist, 9 Str
Boots: 30% Light Resist, 29% MF
Ring1: Nagelring 29%
Ring2: Cold Resist 30%, Poison Resist 28%, Light Resist 5%, 30 Life
Amulet: Maras 30%
Switch: Gull Dagger, Mil's Orb
Mercenary
Helm: Vampire Gaze
Armor: Griswold's Heart
Weapon: Kelpie Snare
Charms (picked up every one I found with resistances): Poison Resist - 50%, Fire Resist - 28%, Cold Resist - 17%, Light Resist - 31%, Mana - 58, Life - 15
Noteable finds: Maras (H Mephisto), Vipermagi (NM Andariel), Lidless Wall (NM Mephisto), Vampire Gaze (rack in NM Durance Lvl 3)
Malice will be used to run Mephisto and Pindle mostly, with maybe some Baal thrown in since he was so much easier than expected. Thinking the next character might be a Plague Javelin Amazon, as I never got to finish my first one as she was a tournament character.
Well I recently restarted. This means of course I need a magic finder, so introducing Malice the Meteorb sorceress. She's my very first Meteorb as I normally build a lightning sorceress for magic finding purposes. Wanted something different this time around.
Playing softcore, thankfully. Had I not then Malice's journey would have ended in the Normal Blood Moor, I kid you not. Right at the beginning of the Cold Plains was a pack of 3 Champion Brutes that Flaive attracted my way by shooting at them (and missing I might add). Very tough characters for a level 6 sorceress with purely starting gear and a one point static field/firebolt. Without a merc to distract them I tried to get in close enough to static them a bit, and got too close. A quick stunlock second later Malice was dead, my earliest death ever.
After that auspicious start Malice made good progress through Normal with no other close calls or really interesting issues. Picked up Frozen Orb just before dealing with Mephisto so from then until Nightmare it was a cakewalk.
However Nightmare gave me some problems. Apparently the Diablo gods knows
Hell ended up being as long as I expected, even when run at /p1. Of course the first three bosses Malice encountered were fire/cold immune but after that they got more manageable, but FI/CI guys still showed up regularly. Didn't help that she was wearing her magic find gear until Act IV as I forgot it was equipped (explains why her resistances were negative). Once this was corrected she did a bit better until Act V, where every drop was picked up for gold in order to pay for mercenary resurrections. Must have resurrected him at least 50 times in Act V alone. Oddly enough, the regular monsters gave Malice more trouble than the act bosses, both Diablo, Baal and Baal's Minions fell very fast, with Baal requiring 30 seconds tops, and the Ancients were only rerolled twice due to receiving dual fire/cold resistant opponents.
One thing to note is that the WSK did give one of the nastiest monster grouping possible. Dolls and Gloams backed up by Horadrim Ancients. :yikes: A lot of cat-and-mouse was played to draw monsters away from their packs to deal with them in 2-3 sized groups.
Statistics (before equipment)
Level: 82
Strength: 92(72)
Dexterity: 30(25)
Energy: 66(35)
Vitality: 273(268)
Life: 765
Mana: 342
[100 Stat points unused]
Resistances
Lightning: 75
Fire: 73
Cold: 35
Poison: 66
Skills
Fire Mastery, Fireball, Meteor, Frozen Orb: 20
Cold Mastery, Static Field, Teleport, Warmth: 1
Equipment
Helm: Tarnhelm
Armor: Skin of the Vipermagi
Weapon: +2 Fire skills, 20% FCR, 39% Fire Resist Orb
Shield: Lidless Wall
Belt: 22% Light Resist, 9 Str
Boots: 30% Light Resist, 29% MF
Ring1: Nagelring 29%
Ring2: Cold Resist 30%, Poison Resist 28%, Light Resist 5%, 30 Life
Amulet: Maras 30%
Switch: Gull Dagger, Mil's Orb
Mercenary
Helm: Vampire Gaze
Armor: Griswold's Heart
Weapon: Kelpie Snare
Charms (picked up every one I found with resistances): Poison Resist - 50%, Fire Resist - 28%, Cold Resist - 17%, Light Resist - 31%, Mana - 58, Life - 15
Noteable finds: Maras (H Mephisto), Vipermagi (NM Andariel), Lidless Wall (NM Mephisto), Vampire Gaze (rack in NM Durance Lvl 3)
Malice will be used to run Mephisto and Pindle mostly, with maybe some Baal thrown in since he was so much easier than expected. Thinking the next character might be a Plague Javelin Amazon, as I never got to finish my first one as she was a tournament character.
Java: En Guard Update #4
The way the program is currently written it is not very easy to modify or add additional components. Due to all of my work with JTabbedPanes with the CharSi application I decided to make a similar change here. To do this quite a bit of code needed to be altered and consolidated.
Up to this point I had two java files in order to create the GUI portion of the program. I decided to consolidate those two files together into a single java file, especially considering one of them was only 60 lines of code long. Problems came up there as I had used the same variable names for different components in each file so once they were combined the GUI was missing pieces. Eventually everything was ironed out.
The next step was to turn the main panel in to a JTabbedPane and each subsequent tab into it's own java file. Using CharSi as a guide this process was not too complex and left me with two workhorse files, Info.java and Search.java. Info.java contains the GUI portion of the application along with the methods utilized to open and save the informational text files.
Search.java will host a search engine that will allow the informational text files to be searched one at a time for a particular string. The resultant list will be displayed in a JList and when a selection is clicked it's contents will be displayed in a JTextArea. The other change that needs to take place is that the Contact Information field will no longer be a required field. It will still be present but the record may be saved without any information displayed. It simply didn't turn out to be as useful as I had hoped.
Up to this point I had two java files in order to create the GUI portion of the program. I decided to consolidate those two files together into a single java file, especially considering one of them was only 60 lines of code long. Problems came up there as I had used the same variable names for different components in each file so once they were combined the GUI was missing pieces. Eventually everything was ironed out.
The next step was to turn the main panel in to a JTabbedPane and each subsequent tab into it's own java file. Using CharSi as a guide this process was not too complex and left me with two workhorse files, Info.java and Search.java. Info.java contains the GUI portion of the application along with the methods utilized to open and save the informational text files.
Search.java will host a search engine that will allow the informational text files to be searched one at a time for a particular string. The resultant list will be displayed in a JList and when a selection is clicked it's contents will be displayed in a JTextArea. The other change that needs to take place is that the Contact Information field will no longer be a required field. It will still be present but the record may be saved without any information displayed. It simply didn't turn out to be as useful as I had hoped.
Subscribe to:
Posts (Atom)