Help - Search - Members - Calendar
Full Version: Warbot 2.15 released to userware
AC Tools Everything Macro > Other Scripting Tools > Skunkworks
Maud-Dib
I forgot to update the changes page, but the only addition is a checkbox on the S1 tab of the config panel. When 'Use keyboard to change combat mode' is checked, then warbot will use a keypress (skapi.Keys) to change from peace to spell casting mode. Unchecked uses method skapi.SetCombatMode which was the previous behaviour.

This option was added because rarely some people over the years would get 'you cannot enter melee mode while wielding the [your wand name]', and with the latest patch it was happening to a lot more people.

Maud-Dib

PS. This problem still happens with the the 3.5.485 release with the box unchecked, so check it if warbot can't swtich from peace to spell casting mode.
Dark Dude
Thanks Maud, This is by far the best script i have ever used/seen, keep up the good work smile.gif


I have one small question

Is it possible to run 2 chars on the same computer useing warbot? if so how?

I have been away from the game for a year or more and i seem to remeber you couldent but was just wondering if you can now?
Maud-Dib
Dark, no idea if two instances can run on same computer. I use multiple computers myself with a kvm switch.

Maud-Dib
Jscho32
Hi, i'm trying to figure out my my warbot shuts off after 20 minutes or so. I have stealth mode off, attack mode on, and only Log on comps( i have plenty). here's the last 2 mins or so of my Log.


06/28 18:37:03.593 DoState_Kill: War success, Arc [0] WarSpellCnt [2]
06/28 18:37:03.703 DoState_Kill: Cre coords [0.554S 0.528E] range [0.007569368928670883]
06/28 18:37:03.734 DoState_Kill: Casting war spell [Shock Arc VI]
06/28 18:37:07.406 DoState_Kill: War failed. CC: 2 CF: 6/Resist CF2: 0 A: 0 FC: 1 CFC: 0
06/28 18:37:07.500 DoState_Kill: Cre coords [0.554S 0.528E] range [0.007569368928670883]
06/28 18:37:07.515 DoState_Kill: Casting war spell [Shock Arc VI]
06/28 18:37:10.265 UnspentExp: New [263379828] Diff [62760]
06/28 18:37:10.296 KillDone: Kill attempt on [Pestilence Rat] done, Att.Oid [0xaaf04d7c] Att.CreExp [1]
06/28 18:37:10.312 Main_OnDeathMessage: End, Seems to be primary target, Exp [1] Total kill exp [253]
06/28 18:37:11.125 DoState_Kill: War success, Arc [0] WarSpellCnt [3]
06/28 18:37:11.187 DoState_Select: Candidate found. Creature [Pestilence Rat/0xaafa9c21] SelIndex [261] AttemptPrio [5251]
06/28 18:37:11.203 DoState_Select: SelPrio [1] SelLocked [false] SelDist [0.007576884236186743]
06/28 18:37:11.328 Target: Creature [Pestilence Rat/0xaafa9c21] targeted, starting kill attempt
06/28 18:37:11.406 DoState_Kill: Cre coords [0.560S 0.524E] range [0.007576884236186743]
06/28 18:37:11.453 DoState_Kill: Casting war spell [Shock Arc VI]
06/28 18:37:15.703 DoState_Kill: War success, Arc [0] WarSpellCnt [1]
06/28 18:37:15.812 DoState_Kill: Cre coords [0.560S 0.524E] range [0.007576884236186743]
06/28 18:37:15.875 DoState_Kill: Casting war spell [Shock Arc VI]
06/28 18:37:19.609 DoState_Kill: War success, Arc [0] WarSpellCnt [2]
06/28 18:37:19.703 DoState_Kill: Cre coords [0.560S 0.524E] range [0.007576884236186743]
06/28 18:37:19.750 DoState_Kill: Casting war spell [Shock Arc VI]
06/28 18:37:22.421 UnspentExp: New [263442588] Diff [62760]
06/28 18:37:22.437 KillDone: Kill attempt on [Pestilence Rat] done, Att.Oid [0xaafa9c21] Att.CreExp [1]
06/28 18:37:22.453 Main_OnDeathMessage: End, Seems to be primary target, Exp [1] Total kill exp [254]
06/28 18:37:23.296 DoState_Kill: War success, Arc [0] WarSpellCnt [3]
06/28 18:37:23.421 DoState_Select: Candidate found. Creature [Pestilence Rat/0xaade41b5] SelIndex [261] AttemptPrio [5033]
06/28 18:37:23.437 DoState_Select: SelPrio [1] SelLocked [false] SelDist [0.007573011796921492]
06/28 18:37:23.546 Target: Creature [Pestilence Rat/0xaade41b5] targeted, starting kill attempt
06/28 18:37:23.656 DoState_Kill: Cre coords [0.556S 0.527E] range [0.007573011796921492]
06/28 18:37:23.687 DoState_Kill: Casting war spell [Shock Arc VI]
06/28 18:37:29.093 DoState_Kill: War success, Arc [0] WarSpellCnt [1]
06/28 18:37:29.187 DoState_Kill: Cre coords [0.556S 0.527E] range [0.007573011796921492]
06/28 18:37:29.234 DoState_Kill: Casting war spell [Shock Arc VI]
06/28 18:37:32.906 DoState_Kill: War success, Arc [0] WarSpellCnt [2]
06/28 18:37:33.000 DoState_Kill: Cre coords [0.556S 0.527E] range [0.007573011796921492]
06/28 18:37:33.046 DoState_Kill: Casting war spell [Shock Arc VI]
06/28 18:37:35.687 UnspentExp: New [263505348] Diff [62760]
06/28 18:37:35.703 KillDone: Kill attempt on [Pestilence Rat] done, Att.Oid [0xaade41b5] Att.CreExp [1]
06/28 18:37:35.703 Main_OnDeathMessage: End, Seems to be primary target, Exp [1] Total kill exp [255]
06/28 18:37:36.593 DoState_Kill: War success, Arc [0] WarSpellCnt [3]
06/28 18:37:36.687 DoState_Select: Candidate found. Creature [Ripper Grievver/0xaafa8bde] SelIndex [961] AttemptPrio [5822]
06/28 18:37:36.703 DoState_Select: SelPrio [0] SelLocked [false] SelDist [0.00958250742405653]
06/28 18:37:36.812 Target: Creature [Ripper Grievver/0xaafa8bde] targeted, starting kill attempt
06/28 18:37:36.921 DoState_Kill: Cre coords [0.563S 0.522E] range [0.00958250742405653]
06/28 18:37:36.953 DoState_Kill: Casting war spell [Shock Arc VI]
06/28 18:37:41.250 DoState_Kill: War success, Arc [0] WarSpellCnt [1]
06/28 18:37:41.375 DoState_Kill: Cre coords [0.563S 0.522E] range [0.00958250742405653]
06/28 18:37:41.421 DoState_Kill: Casting war spell [Shock Arc VI]
06/28 18:37:45.062 DoState_Kill: War success, Arc [0] WarSpellCnt [2]
06/28 18:37:45.156 DoState_Kill: Cre coords [0.563S 0.522E] range [0.00958250742405653]
06/28 18:37:45.187 DoState_Kill: Draining creatures health, Cur health [294] Last Drain Health [100]
06/28 18:37:47.000 DoState_Kill: Drain health failed. CC: 2 CF: 6/Resist CF2: 0 A: 0 FC: 1 CFC: 0
06/28 18:37:47.046 DoState_Kill: Casting war spell [Shock Arc VI]
06/28 18:37:50.656 DoState_Kill: War failed. CC: 2 CF: 6/Resist CF2: 0 A: 0 FC: 2 CFC: 0
06/28 18:37:50.750 CheckVitals: Mana/Stam [333/354] Casting Stam2Mana
06/28 18:37:54.390 CheckVitals: Stam2Mana success, Arc [0]
06/28 18:37:54.421 DoState_Kill: Cre coords [0.563S 0.522E] range [0.00958250742405653]
06/28 18:37:54.453 DoState_Kill: Casting war spell [Shock Arc VI]
06/28 18:37:57.156 UnspentExp: New [263546603] Diff [41212]
06/28 18:37:57.171 KillDone: Kill attempt on [Ripper Grievver] done, Att.Oid [0xaafa8bde] Att.CreExp [0]
06/28 18:37:57.203 Main_OnDeathMessage: End, Seems to be primary target, Exp [0] Total kill exp [255]
06/28 18:37:58.062 DoState_Kill: War success, Arc [0] WarSpellCnt [3]
06/28 18:37:58.156 CheckVitals: Mana/Stam [533/207] Casting Revitalize Self
06/28 18:37:59.546 Main_OnObjDestroy: current creature we are attacking was destroyed
06/28 18:38:01.765 CheckVitals: Revit success, Arc [0]
06/28 18:38:01.859 DoState_Select: Candidate found. Creature [Pestilence Rat/0xaab118e5] SelIndex [261] AttemptPrio [5758]
06/28 18:38:01.890 DoState_Select: SelPrio [1] SelLocked [false] SelDist [0.007575336843729019]
06/28 18:38:02.015 Target: Creature [Pestilence Rat/0xaab118e5] targeted, starting kill attempt
06/28 18:38:02.125 DoState_Kill: Cre coords [0.561S 0.521E] range [0.007575336843729019]
06/28 18:38:02.187 DoState_Kill: Casting war spell [Shock Arc VI]
06/28 18:38:06.000 DoState_Kill: War success, Arc [0] WarSpellCnt [1]
06/28 18:38:06.078 DoState_Kill: Cre coords [0.561S 0.521E] range [0.007575336843729019]
06/28 18:38:06.125 DoState_Kill: Casting war spell [Shock Arc VI]
06/28 18:38:08.796 UnspentExp: New [263609363] Diff [62760]
06/28 18:38:08.812 KillDone: Kill attempt on [Pestilence Rat] done, Att.Oid [0xaab118e5] Att.CreExp [1]
06/28 18:38:08.828 Main_OnDeathMessage: End, Seems to be primary target, Exp [1] Total kill exp [256]
06/28 18:38:09.703 DoState_Kill: War success, Arc [0] WarSpellCnt [2]
06/28 18:38:09.859 DoState_Select: Candidate found. Creature [Diseased Phyntos Wasp/0xaade3431] SelIndex [960] AttemptPrio [5645]
06/28 18:38:09.875 DoState_Select: SelPrio [0] SelLocked [false] SelDist [0.008511576801538467]
06/28 18:38:09.968 Target: Creature [Diseased Phyntos Wasp/0xaade3431] targeted, starting kill attempt
06/28 18:38:10.093 DoState_Kill: Cre coords [0.558S 0.527E] range [0.008511576801538467]
06/28 18:38:10.125 DoState_Kill: Casting war spell [Shock Arc VI]
06/28 18:38:14.437 DoState_Kill: War success, Arc [0] WarSpellCnt [1]
06/28 18:38:14.531 DoState_Kill: Cre coords [0.558S 0.527E] range [0.008511576801538467]
06/28 18:38:14.546 DoState_Kill: Draining creatures health, Cur health [287] Last Drain Health [100]
06/28 18:38:15.281 Main_OnChatServer: Drain health result [60]
06/28 18:38:16.437 DoState_Kill: Drain health failed. CC: 2 CF: 10/TooShort CF2: 0 A: 0 FC: 1 CFC: 0
06/28 18:38:16.453 DoState_Kill: Casting war spell [Shock Arc VI]
06/28 18:38:20.109 DoState_Kill: War success, Arc [0] WarSpellCnt [2]
06/28 18:38:20.187 DoState_Kill: Cre coords [0.558S 0.527E] range [0.008511576801538467]
06/28 18:38:20.234 DoState_Kill: Casting war spell [Shock Arc VI]
06/28 18:38:22.265 Main_OnEnd3D: Begin
06/28 18:38:22.281 Main_OnEnd3D: Unexpected event, exiting macro...
06/28 18:38:22.312 Main_OnEnd3D: End
06/28 18:38:22.437 OnMeleeEvadeSelf: Old state [19], changing state to select...
06/28 18:38:22.453 StateChange: Current State Locked, Current [19/Exit] Desired state [4/Select]
06/28 18:38:22.484 OnMeleeDamageSelf: Old state [19], changing state to select...
06/28 18:38:22.500 StateChange: Current State Locked, Current [19/Exit] Desired state [4/Select]
06/28 18:38:22.984 OnMeleeDamageSelf: Old state [19], changing state to select...
06/28 18:38:23.000 StateChange: Current State Locked, Current [19/Exit] Desired state [4/Select]
06/28 18:38:23.156 OnMeleeDamageSelf: Old state [19], changing state to select...
06/28 18:38:23.156 StateChange: Current State Locked, Current [19/Exit] Desired state [4/Select]
06/28 18:38:23.625 Main_OnMeleeDamageSelf: Attacker [Diseased Phyntos Wasp] Damage [27] Type [0x00000001] Body Part [Head]
06/28 18:38:23.625 OnMeleeDamageSelf: Old state [19], changing state to select...
06/28 18:38:23.625 StateChange: Current State Locked, Current [19/Exit] Desired state [4/Select]
06/28 18:38:24.531 OnMeleeDamageSelf: Old state [19], changing state to select...
06/28 18:38:24.546 StateChange: Current State Locked, Current [19/Exit] Desired state [4/Select]
06/28 18:38:24.750 OnMeleeDamageSelf: Old state [19], changing state to select...
06/28 18:38:24.765 StateChange: Current State Locked, Current [19/Exit] Desired state [4/Select]
06/28 18:38:24.937 OnMeleeDamageSelf: Old state [19], changing state to select...
06/28 18:38:24.937 StateChange: Current State Locked, Current [19/Exit] Desired state [4/Select]
06/28 18:38:24.984 OnMeleeDamageSelf: Old state [19], changing state to select...
06/28 18:38:25.000 StateChange: Current State Locked, Current [19/Exit] Desired state [4/Select]
06/28 18:38:25.062 DoState_Kill: War success, Arc [0] WarSpellCnt [3]
06/28 18:38:25.171 Macro shutting down...
Jscho32
OK, it worked fine for a few hours today when i was in a slow spawn area, 5 monsters total, tops.

Logs me off eventually every time i'm in a large spawn spot, with 10-15+ monsters in the area.


In the log i read something about Danger something, is there an option i need to turn ON of OFF to keep me from logging off due to monsters or damage i take?
Maud-Dib
The messages in the log looks like either AC crashed, you logged out manually, or you logged due to inactivity. Note inactivity is not what it seems. If you don't press a key within 20 minutes or so, ac will log you out. Unfortunately warbot mostly bypasses keypresses by using skapi calls that do direct memory access to perform actions.

To get around this warbot will press the left key (cmidTurnLeft) every 10 minutes. But if are in an area where you are killing nonstop or creatures are always within your danger radius, the left key will not be pressed because that routine is part of the idle processing. You won't loot either, or buff unless buff while danger box is checked.

To see if this is the problem, try setting your inactivity timer to a high value by defining the following in your userconfig.dat file...

inactTimer = x;

where x is the number of seconds to set the timer, so for example...

inactTimer = 60*60*24*7;

would set the timer to 1 week.

Maud-Dib
Magicon
is there still a place to post warbot215 inquiries? didn't want to post in the wrong forum. thanks.
GKusnick
Magicon: I've merged your question into the appropriate thread.
Magicon
ok its been a while since I played around with ac tool and skunkworks etc. I love the macro. I have a problem with targeting things on the edge of the radar. I only want to target things right next to me. seems as if the range variables arent kicking in properly for some reason when i am in a dungeon cause it targets thing way off and starts shooting ars at them.

// Selecting Creatures
selRangeOut = 0.30; // Select creatures within this range when outdoors
selRangeDung = 0.10; // Select creatures within this range when in a dungeon
selRealClose = 0.09; // Creatures within this range will be processed first. 0.09 units
// is the distance where most creatures will recognize you and attack


any suggestions would be great thanks (maybe i should just change the range to selRangeDung = 0.05;)


***EDIT*** ok i changed the dung and close ranges, its giving me what I want now
Magicon
ok seems like it loots sometimes, then sometimes it doesn't. there are corpses in the list but it doesn't loot them at times even when I am in peace mode, no critters around. any ideas on this? other than that everything working like a dream

got it sorted
Raxer
I just found War bot and I want to say thanks for the macro. I like to see how things work rather than just use them and this gives me that opportunity.

That being said, I have a few questions as to where I can change or find the info associated with the following:

1. I am getting a 'No Imperil known below level 0' message when I attack. I think it is calculated that based on the creatures health and magic D I don't need an imperil, but I'd like to know how to change/disable this so I can imperil everything or adjust the levels.

2. I am currently working an area that has monsters behind a wall. How can I adjust settings so after X attacks it will 'blacklist' the target until it comes in range.

3. I am also not acquiring targets that are right on top of me - the bot continues to attack further targets. I adjusted the distance variable associated with the danger zone, but it is still attacking further targets.

4. Should the bot use arcs when the monster is close? I would assume that a bolt does more damage, but I have never played a warmage before.

5. At times, the bot does not loot corpses that are within range - where can I find info associated with this routine?

Thanks for your help.
Ball_Cruncher
Anyone still supporting Warbot?

Just wondering how hard it would be to have it check for dual or triple minors on jewelry and underclothes along with the armor it already searches.
Jscho32
I'm busy adding melee support!

edit: and grendades!
GKusnick
Merged recent posts into this thread, as per the sticky.
Ball_Cruncher
If you get a chance, add in the checks for jewelry and underclothes for minors.
Darktide Guy
The latest hotfix and memloc update seems to have broken WarBot.

After a short time running normally, the mouse pointer gets stuck being "busy" and WarBot tries to "unstick" with spamming [esc] over and over while allowing the char to die.

I tried removing that whole function from war_subs and it didnt like that either...

Any suggestions?

Jscho32
Ok so I replaced the PossiblyResetToon function in war_subs with this for now, I know it could cause you to do if you actually ARE stuck doing something, but I've been dying recently because it thinks I'm stuck when I'm not, so skipping the function will be better for me atleast. You can try this if you want, but don't hold me responsible if you die from it =P

Just put comments in before each function so if you go back and undo the edit the code is still there.

CODE
function PossiblyResetToon() {
//   // If players cursor (pointer) is busy, then press the escape key just in case we are
//   // stuck doing an action.  During the idle state nothing should be going on.

//   var WaitStart = new Date();
//   while (skapi.fPointerBusy && ((new Date() - WaitStart) < busyWait)) skapi.WaitEvent(20, wemFullTimeout);

  //  // If pointer not busy, then return false (no action taken)
//   if (!skapi.fPointerBusy) return false;

  //  // Pointer still busy, try to 'unstick' character  
  //  Log.OutDM("PossiblyResetToon", "Pointer busy, pressing escape key twice in case we are stuck...");
  //  skapi.Keys("{ESC}", kmoClick);
  //  skapi.WaitEvent(300, wemFullTimeout);
  //  skapi.Keys("{ESC}", kmoClick);
  //  skapi.WaitEvent(300, wemFullTimeout);
  //  Log.OutDM("PossiblyResetToon", "Unstuck attempt ended.");
//    return true;
} // end func


Upside is that my macros do each action much faster, downside is it might cast a buff instead of a war because it didn't wait long enough for the war to cast before attempting a buff(because it doesn't check the pointer), but it's much better because I'm not constantly going through the unstuck function.
Darktide Guy
QUOTE(Jscho32 @ Nov 2 2007, 04:52 PM) *
Ok so I replaced the PossiblyResetToon function in war_subs with this for now, I know it could cause you to do if you actually ARE stuck doing something, but I've been dying recently because it thinks I'm stuck when I'm not, so skipping the function will be better for me atleast. You can try this if you want, but don't hold me responsible if you die from it =P

Just put comments in before each function so if you go back and undo the edit the code is still there.

CODE
function PossiblyResetToon() {
//   // If players cursor (pointer) is busy, then press the escape key just in case we are
//   // stuck doing an action.  During the idle state nothing should be going on.

//   var WaitStart = new Date();
//   while (skapi.fPointerBusy && ((new Date() - WaitStart) < busyWait)) skapi.WaitEvent(20, wemFullTimeout);

  //  // If pointer not busy, then return false (no action taken)
//   if (!skapi.fPointerBusy) return false;

  //  // Pointer still busy, try to 'unstick' character  
  //  Log.OutDM("PossiblyResetToon", "Pointer busy, pressing escape key twice in case we are stuck...");
  //  skapi.Keys("{ESC}", kmoClick);
  //  skapi.WaitEvent(300, wemFullTimeout);
  //  skapi.Keys("{ESC}", kmoClick);
  //  skapi.WaitEvent(300, wemFullTimeout);
  //  Log.OutDM("PossiblyResetToon", "Unstuck attempt ended.");
//    return true;
} // end func


Upside is that my macros do each action much faster, downside is it might cast a buff instead of a war because it didn't wait long enough for the war to cast before attempting a buff(because it doesn't check the pointer), but it's much better because I'm not constantly going through the unstuck function.


This does seem to work. Apparently I didnt comment out enough lines when I tried. I havent really seen any negative effects as of yet, and am kinda curious as to what the mouse pointer has to do with anything anymore in the WB macro operation since Muad-Dib removed the mouse pointer to salvage. Older WB versions used the mouse pointer to salvage, but 215 does not. I think it may still use it to fellow members, but I rarely use that feature, so not sure.

Ah well, thx for the help & happy salvaging... wink.gif
Jscho32
I find that every once in a while a mob becomes unattackable(by warbot, not manually) and when analyzed, it's stats don't show up like a normal mob should be. When I force attack on that mob, it returns that the target is not a creature. It then just ignores that mob while it pounds away at me.

Here's a comparison between a normal mob and the bugged mob's analyze results:
QUOTE
Bugged Virindi Executor
Oid : 0x391ca15e
fExists : true
szName :
szPlural :
soty : 0x00000000
ocm : 0x00000000
olc : 0x00000008
eqm : 0x00000000
eqmWearer : 0x00000000
mcm : 0x00000000
szMcm :
cpyValue :
0material : 0
workmanship : 0
citemStack : 1
citemMaxStack : 1
cuseLeft : 0
cuseMax : 0
burden : 0
fInInventory : false
iitem : -1
spellid : 0
distApproach : 0
fContainer : false
citemMax : 0
citemMax : 0
citemContents : 0
icon : 0
model : 0
coords : 0.84S 0.35W
kill loc dist : 0.42
Cur loc dist : 0.02
Oid : 0x391ca15e

Compared to normal Executor:
Oid : 0x395d0e9b
fExists : true
szName : Virindi Executor
szPlural : Virindi Executors
oty : 0x00000014
ocm : 0x00000002
olc : 0x00000008
eqm : 0x00000000
eqmWearer : 0x00000000
mcm : 0x00000010
szMcm : Creatures
cpyValue : 0
material : 0
workmanship : 0
citemStack : 1
citemMaxStack : 1
cuseLeft : 0
cuseMax : 0
burden : 0
fInInventory : false
iitem : -1
spellid : 0
distApproach : 0
fContainer : false
citemMax : 255
citemContents : 0
icon : 4647
model : 9264
coords : 0.83S 0.13W
kill loc dist : 0.42
Cur loc dist : 0.01
Oid : 0x395d0e9b
solitus
Ive just tryed warbot.. and it starts ok.. and ive configured my buffs etc..

Startup sequence done, macro active!

but it doesnt buff or attack anything. what have i missed? i have gone throu the configs several times.. but cant find anything wrong.
solitus
QUOTE(solitus @ Jan 15 2008, 11:18 AM) *
Ive just tryed warbot.. and it starts ok.. and ive configured my buffs etc..

Startup sequence done, macro active!

but it doesnt buff or attack anything. what have i missed? i have gone throu the configs several times.. but cant find anything wrong.



Problem Solved,

now its another one =)

Cant get the char to loot. I have check the boxed loot corpses and loot all corpses,, still no looting. read through the readme but couldnt fin any thing. any hints?


lol found the problem.. i started the macro on one spot.. paused it.. and ran to anotherspot for killink.. ofcource, the range to the startloc was to far for looting.


=)
solitus
Bah.. another issue.

warbot worked fine, was in a dungeon.. used stealthmode. I was logged by someone.. and logged on the char. stoped the script (cause it didt start fighting)

efter that the warbot doesnt start. have reinstalled it, doesnt help.

i get this message:

01/15 19:36:11.915 Main: User config loaded.
01/15 19:36:11.962 Main: Applying user modifications to creature database...
>> Script error in war_subs.js line 1114: Objekt krävs.
Script exited with errors.

any ideas?
solitus
Is there any plans to add support for melee characters in warbot?

i would love it.
district
Anyone still using WarBot?

just returned to the game, wanted to fire up warbot for my second account. seems to be having trouble going back into cast mode after looting/salvaging.
I'm assuming its because the default keybindings have changed with a patch at some point but
can't find where to set that, or what the key was that was used previously. any help would be appreciated. thanks smile.gif
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2010 Invision Power Services, Inc.