Blasco's Fair Kill XP System:
Created: January 2009
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
CREDITS/THANKS:
Scarface: The vast majority of this is his anyway (with some modifications) so he deserves
a great deal of credit. Even if I had not stuck with his excellent ideas it was only through
reading and rereading his code that I got an understanding of how all this comes together.
Knatt: For his formula for getting Level based on XP. (Never would have figured that out
on my own). And for his ECL system concering SubRaces as it is the foundation upon which
my own Class XP Modifier and SubRace XP Modifier functions are built.
Nightwing and his loyal band of players/followers on the "Dawn of Nordock" module: For thier
exhaustive testing and honest, forthright commentaries on the pros/cons of this system.
Fleshmelter: For a sensible request that inspired a new float constant.
DM-Taino: For suggesting some form of ECL support. (Now provided through Class and SubRace
XP Modifiers)
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
FEATURES:
1) Modifed version of Scarface's PARTY_BONUS constant. Allows a set bonus for simply being
in a party, and then a seperate bonus per PC in the Party.
2) Floating Text of the xp and/or gold earned. (From Scarface's XP System)
3) Ability to turn on/off the following features: Gold reward, Killer bonus, Summon Penalty,
Floating Text.
4) Special_XP_Bonus variable that can be used to give specific PCs an extra percentage of XP.
(Useful as a reward for completing certain quests or anything you desire) More details
on this special variable can be found just below the listing of constants.
5) Only 4 functions (6 in version 2):
void SendKillerMessage(object oKiller); //Send Killer Message included just for an extra element of fun.
The killer is awarded seperately from the party members in order to
cut down on any confusion and accidental cross association of variables.
6) Special KillerMessage function that sends a randomly selected message to the Killer and
ten percent of the time will play a bit of fanfare when a creature is slain. (Just for fun)
7) This system does not rely on the average party level to award xp. XP is determined by the
PC's individual level in relation to the Slain creature's Challenge Rating.
8) The ability to override many of your own predefined settings for specific areas or
creatures. Including:
I)The Base XP.
II)Maximum XP.
III)Minimum XP.
IV)Party Level Gap.
V) Fair Kill Range
9) Class XP Modifier to modify the amount of XP a PC collects based on his/her class. (In Version 2)
10) SubRace XP Modifier to modify the amount of XP a PC collects based on his/her subrace. (In Version 2)
I set this up to be as user freindly as possible and out of a desire to make an XP script
that is easier to understand. Which is the reason for using the FAIR_KILL_XP constant.
I felt it was more intuitive to work with a number representing an actual amount of XP and
to adjust from that number as needed.
Other than that, it is based heavily upon Scarface's XP script. (With some modifications).
It also uses Knat's forumla for determining Level based on XP.
I found Scarface's XP system to be an easier one to understand and kept most of his ideas in
this one.
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
CHANGE LOG:
February 2, 2009:
1) Fixed a typo in the Untested OnActivateItem example script.
2) Modified AwardKillerXP and AwardPartyXP to do a more gradual drop in XP awarded
to PCs who fall outside the FAIR_KILL_RANGE. (As a result of player feedback from
NightWing's "Dawn of Nordock" module.
3) Modified default values of the constants.
4) Modified the Credits.
////////////////////////////////////////////////////////////////////////////////
February 10, 2009:
1) Added the constant float: MAXIMUM_CREATURE_CR (As a result of a request by Fleshmelter)
////////////////////////////////////////////////////////////////////////////////
March 1, 2009:
1)Added the ability to override the FAIR_KILL_XP float constant for individual creatures
or for specific areas.
2)Added the ability to override the MAX_XP float constant for individual creatures or for
specific areas.
3) Added the ability to override the MIN_XP float constant for individual creatures or for
specific areas.
4) Added the ability to override the MAXIMUM_PARTY_LEVEL_GAP constant for specific
areas so that PCs of ALL levels can party together in that area.
5) Modified the SendKillerMessage function to give a 10 percent chance of playing the
fanfare music on any of the messages rather than just the "Hero Bonus" message.
6) Added 5 new messages to the SendKillerMessage function.
////////////////////////////////////////////////////////////////////////////////
March 3, 2009
1) Two bug fixes.
2) Added the ability to override the FAIR_KILL_RANGE constant for individual creatures or
for specific areas.
////////////////////////////////////////////////////////////////////////////////
March 13, 2009
(Version 2)
1) Added XP Modifier based on Class
2) Added XP Modifier based on SubRace
////////////////////////////////////////////////////////////////////////////////
PERSONAL NOTE:
I am not attempting to compete with Scarface, or with Knatts XP system. Both are excellent
in my opinion. My only real purpose in this system was to make something that I could
understand a little better and thus implement more properly in my own module. Hopefully,
it will be of use to you for the same reasons. If I had wanted something truly original
then I wouldn't have used so much of Scarface's ideas.
////////////////////////////////////////////////////////////////////////// /////
////////////////////////////////////////////////////////////////////////////////
Thank you for the kind comments and the vote DM Taino.
I have an updated version of this system that should be posting to the vault shortly.
It should post as Blasco's Fair Kill XP System 3.
The only real update to the xp script itself is a very minor bug that had to do with the "Special_XP_Bonus" variable.
Anyone who has taken advantage of that variable would have discovered that Players who are not in a party would not have benefited from the extra xp.
Since no one has brought this up I am assuming that no one has yet used that nifty little variable.
If you are not aware of the usefulness of that variable and a few others that I've added to the system, you can download the newest version soon here at the vault.
It comes complete with the updated (bug fixed) version of the XP script (This one supports the Subrace and Class Modifiers)
Plus:
One Builder's XP Testing Tool for the purpose of fine tuning your xp output while in game.
Three Rings of Experience that take advantage of the "Special_XP_Bonus" feature. These rings increase the xp earned by 5 percent, 10 percent, and 15 percent when worn and the xp bonuses do stack.
Three Hero's Medallions that are quite powerful in that they increase the xp earned by 25 percent,50 percent, and double xp once activated.
Because the medallions have such high xp earning potential they are a single use item and the effect lasts only 2 minutes real time. (Suitable as DM rewards I suppose)
I would not have found the bug myself had I not begun working on the Rings of Experience.
With the new Blasco's Fair Kill XP System 3 each of the 4 parts are optional downloads.
1) The Updated XP Script
2) The Builder's XP Tool
3) The 3 Rings of Experience
4) The 3 Hero's Medallions
You may download any one or a combination of the four.
(Although for the items to work you will need the bug fixed version 3 of the XP script)
My thanks to all of you for your testing, your comments, and honest evaluations of the system.
Posted by DM-Taino at 2009-05-31 20:19:12 Voted 10.00 on 05/31/09
I give you a 10, because it was easy to use and install.
Let me first tell you. THIS IS AWESOME!! Works lovely, thus far no problems at all and the bonus for the subraces already in place also works.
Once again thanks for making a xp/gp system that is flexible for any subraces, classes, etc.. amongst other options you have in here. Well done! I also think the route you have chosen is very flexible to use with any subrace engine. The subrace engine I'm using is SSE, so I will defiantly add more subraces to your script. I have also added a bit of color to the floating text that tells the players how much xp/gp they recieved.
I very happy with it and I'm sure other will be as well. It is a must for any PW Modules!!
Yes Genisys originally voted an eight here and posted his opinions on the system.
Though I have no problem with someone voting an eight, I felt that 90 percent of his reasons "why" were based on erroneous conclusions.
He and I spoke privately (and civily) on the matter and he agreed that perhaps he had not given the system as thorough an inspection as it deserved.
I have seen his posts in the scripting forum and the responses he has been recieving.
Though he has at times frustrated me and left me gaping in awe at his ability to utterly alienate people I have refrained from pitching my voice into the fray. (God knows thare are enough people jumping into it already)
For whatever reasons, his vote and comments on the Fair Kill XP System are now gone.
Nightwing/Pattycake and his loyal band of players have tested the system quite extensively and many improvements were made as a result of player feedback from his server "Dawn of Nordock".
If you have any issues or problems with this system please feel free to leave a comment here or contact me on the forums and I will do everything possible to rectify the situation.
Posted by Ondaderthad at 2009-05-07 07:59:00 Voted 10.00 on 05/07/09
I just found this after a recommendation by Pattycake/nightwing.
I have been using Knat's system for a long time and got used to it but I will consider yours maybe just because of the Class subrace bonuses. I can see a use for that.
I wouldn't pay too much attention to Genysis. You probably didn't vote for his work before he deleted the lot. LOL
Even his comments have been deleted I think.
_________________________ The Best PW system is getting even better. PLATEMAIL Tech Preview
Frankly I'm surprised that its that close since I completely disregarded the bioware xp system entirely.
It was never meant to be in line with bioware's system.
With this system you set your own base XP and the script calculates bonuses/penatlties to the awarded xp dependant on the party member's level in relation to the slain creature's CR.
The bonuses and penalties are also adjustable according to the builder's desire.
You can even adjust the bonuses/penalties for individual PCs according to thier primary class.
Not only does it provide the user with the ability to fine tune his XP output module wide, it also implements a system whereby the builder can completely override his module wide settings per area or per individual creature.
It's up to the builder to set the options appropriate for his module.
The system has been tested extensively not only by myself, but by others as well.
I think perhaps the only reason no one has mentioned the fact that it is not in line with Bioware's xp output is that no one expected it to be.
But I suppose you're right, that may not have been as obvious to everyone as I thought and I should have mentioned that.
It is certainely true that not only in scripting, but in real life as well, you just can't take things for granted.
1) If there are issues within the script that are not correct (and that actually negatively effect the useability of the system) I would be most sincerely grateful if you could point them out to me so that I can hopefully put them right.
2) You said that the Fair Kill XP is a restriction, not an option, its all or nothing and that I should have made a switch for options:
Either I do not understand you correctly when you say that or we have our wires crossed somehow:
The Fair Kill XP can actually be set to what ever you choose and is used only as a base for the actual XP awarded. Through the many, many other optional settings you can tweak XP awards to a very fine degree.
3) As far as the script being extremely long.... lol. I have to agree whole heartedly, but it's not so much the actual code itself that makes it appear so long. It's all the comments. I made it with newer scripters in mind and it is very heavily commented on how to use it.
The PWFXP system (Great script) is far longer than mine and it has far less helpful commenting.
The Fair Kill XP System has only 4 custom functions (6 in the 2nd version) and one of those is just a fun little function to send random messages to the killer. That is far less than PWFXP. Scarface's system has 5 functions I believe.
I actually posted here that I am considering making another version without all the heavy commenting. I'm just waiting for feedback from users on that.
Please do not misunderstand me..... I am not taking offense at your post and trying to defend anything here.
I welcome your advice and input on this as it is only through constructive criticism such as this that I can actually modify/improve the system.
I am merely trying to clarify some of the issues you have pointed out. (and as I said earlier...... I may be misunderstanding what you've said)
I appreciate the fact that you have refrained from voting until you test it out.
I am fairly confident that once you get past all the overly abundant comments you will find the actual system to be quite versatile.
I'm certainely not going to sit here and tell you that it is a better system than Scarface's or than Knatt's. Both are excellent and have their own virtues.
Again... I thank you for taking the time to look this over and offer your advice.
Looking foward to hearing from you again.
Posted by Fleshmelter at 2009-03-16 06:26:54 Voted 10.00 on 02/01/09
Super neato! Shall try it out. _________________________ PW Action Server:
| Chaosgate |
From all that I could tell, most ECL support was for subraces.
It essentially appeared to amount to nothing more than modifying a SubRaced PCs level. (due to the subrace being tougher than most equal level "normal" raced PCs I presume)
But it appeared to only be an important factor when it came to deterrmining the amount of XP the subraced PC collected when a creature is slain.
I chose to simplify the process with the ability to apply modifiers to the PCs' gained XP based on his subrace.
You can modify gained xp in either direction..... either a bonus or a penalty, and you can add subraces to the currently limited list.
I also added in the option to modify XP gained based on a PC's primary class.
This second one comes with the option to turn it off once the PC reaches a specified level.
Those two new additions are only available in version 2 of the Fair Kill XP system.
Both versions are heavily commented and though I find all of the comments sometimes distracting I decided to leave them in for those who need them.
I am tempted to make a third version with nearly all the comments removed and toss in a "readme" file conatining all that currently commented information.
(But I will wait for a response from you folks before I decide to forge ahead with that one)
I've been working longer hours these days so I've been in a bit of a "daze" lately.
Hopefully that hasn't carried over to this new version and caused me to forget something vital.
Please let me know if you come across any issues and I will tackle it as quickly I can.
(And throw a vote my way if you're feeling generous)
Okay. Thanks to Knatt's PWFXP system and his quite gifted knack for scripting I am begining to come to grips with ECL.
I like the manner in which he deals with it by storing the pertinent information on the PC. (only two variables)
In fact, It's nothinig short of a perfect way to go about doing this and in the end I suspect I will do it exactly the same.
So once it's done, if it looks familiar.... that will be most likely because its a blatant rip off of Knatts ECL handling. (I see no reason to mess with something that someone else has already perfected)
I may make some changes to the variable naming and add some more detailed comments so that it is more comprehensible to myself and newer scripters, but other than that, pretty much the same.
The only obstacle now is to merge it with my system. That may take a bit of time, but I will get it done.
So I guess that in the end, a good description of the Fair Kill XP System would be:
A heavily modified version of Scarface's XP System with options to override many of the default settings,(and some new content) merged with at least two of Knatt's PWFXP System's concepts:
The GetLevelFromXP function and the ECL Support. (ECL Support hopefully coming soon for the Fair Kill System)
So if you like this system I would ask you to keep in mind that without Scarface and Knatt it simply would not have been possible.
My thanks and gratitude most certainely goes out to both of them.
Yea, I know. lol. I find that somewhat aggravating, although understandable.
After all, if it has been updated then technically, it's not the same script.
I've been digging up what little information I can find on ECL, but there seems to be a gap in the interpretation of it.
I have absolutely no working experience with it and am rather in the dark.
From the very little I have found the best description I can give for ECL is:
A means where by an ingame character is considered as a higher/lower level character for the purposes of gaining experience points.
The determination for what level that character is considered is dependant upon its' race and/or subrace and/or class.
"If" that definition is correct I think I can figure this out and add this option into the script, but it may take some time.
Posted by Fleshmelter at 2009-03-03 14:39:59 Voted 10.00 on 02/01/09
Nice updates, although you seem to be killing your download count hehe, at least the votes stay.
And yes the ECL would be awesome addition, I asked scarface about it some time ago on his script guess he never got around to it. _________________________ PW Action Server:
| Chaosgate |
Two bug fixes and another special variable for even more flexibility.
Appears I was lucky enough to have caught the bugs before anyone downloaded the newest version.
There were actually some fundamental changes to the script to create the many options to override the base settings.
Because of that, the potential for error is certainely there (though other than the two relatively minor bugs I discovered, I haven't come across anything else in my tests)
Please be certain to post any bugs, errors, or issues you find right here so I can get to it as quickly as possible.
I am open to adding to /modifying this script in any way that suits the average builder as long as I can keep it fairly simple for new scripters.
Much of my own personal difficulties with the other script systems was not the scripting itself. (Those guys are excellent)
My issues were in understanding how to implement those systems to suit my own needs with my vast lack of knowledge at the time.
So I have attempted (as much as is possible with something as complex as an XP system) to keep this as user friendly and understandable as I am able.
Having said that, I must also add that I have absolutely no experience with scripting Effective Class Level systems.
This "Fair Kill XP System", in and of itself would have been impossible for me had I not spent many hours taking apart Scarface's system and studying it over intensely to garner some understanding of how an XP system should actually operate.
So in the end, Yes, I am willing to add it in, but I will have to go take a look at the only ECL supported system I currently know of..... that being Knatts PWFXP system.
Once I have a better understanding of it and how to merge it with what I have here I would be happy to do so, but even that is a bit further down the line as I still have some upcoming modifications to this system to work out.
(I will also add that if you or anyone else are willing to make this modification to the Fair Kill System while continuing in the vein of keeping it simple, that you will not only have my gratitude, but you will find that I am more than willing to share the credit.)
My thanks to you DM-Taino for sharing your thoughts.
Posted by DM-Taino at 2009-02-25 14:37:38 Voted 10.00 on 05/31/09
I do like Scarface Killer XP System, but just one thing I did disagree with it. And that was that it didn't support ECL.
So I will ask you, Blasco-Yang. Is there a chance you may add ECL support in your system here?
DMT
Posted by Fleshmelter at 2009-02-15 01:42:54 Voted 10.00 on 02/01/09
Yeah, I have been making adjustments for most mobs with CR adjustment (max however is -125), but I will continue to monitor it as Players are quick to point out when they don't get any XP =)
My apologies for taking so long to get to back to this FM.
I went back to the toolset and did some further testing.
It appears that the GetLevelByXP function actually does continue to figure the PC into levels ABOVE 40 all on its own.
So the MAXIMUM_CREATURE_CR constant isn't really neccessary in your case.
As long as your PCs are within the FairKillRange they should continue to collect XP just as they always have.
So a level 50 PC (as calculated by Knatts' GetLevelByXP function could be involved in the slaying of Creatures with a CR of anywhere from 45 to 54 perhaps and still get decent XP (as long as all other requirements are met).
Now if you have a situation where your creature's are of a CR that is vastly greater than you expect your PCs to ever attain (even with the fact that with Knatts' function they still continue to gain levels beyond 40) one simple solution would be:
Decide on a decent range of levels you expect your PCs to be when they confront these creatures and in the creatures "advanced" tab use "adjustment" to bring the creature's challenge rating down to the median of that range.
This won't affect the strength of your creature in any way.
Just be certain to set the new MAXIMUM_CREATURE_CR constant back up to a high number or it will continue to treat all creatures of a higher level as level 40.
One other thing, I did reset the variable "int nLowLevel" to 80 for testing as it only seemed the logical thing to do.
That is an integer variable you find within the void main. I'm not quite certain what effect it will have if it remains with the default value of 40.
It may even be best to not give it a default value at all. Just leave it as:
int nLowLevel;
instead of int nLowLevel = 40;
I am taking all of this into consideration for the next update so your questions, suggestions, and ideas are all quite welcome and most appreciated.
Posted by Fleshmelter at 2009-02-13 21:08:54 Voted 10.00 on 02/01/09
Ok fair nuff, so that works as planned now (initially I moved the constant upto 60.....which meant my players still needed to be within range of max constant which well they can't at that level).
Of course the question is, will it penalize PC's when they are in Legendary Levels. Your system grabs XP as a calculation for level correct. Will your XP system penalize for each legendary level over 40, if MAXIMUM_CREATURE_CR = 40.
If that is the case then, I would then ask if it's possible for a Local float be used to override the global, for the purpose of managing the MAXIMUM_CREATURE_CR float.
Reason being if I have level 80 CR mob in an area for level 40 PC's a MAXIMUM_CREATURE_CR = 40 is perfect, but if I have level 180 CR mob in area for level 50 PC's a MAXIMUM_CREATURE_CR = 40 would be not so good.
Ahhh well I prolly wrote too much, and it's all convoluted. Hope you get my drift.....still love the script, and thanks for your time.
Sorry FM. I should have been more forthcoming in how to use the new constant.
Actually as it's curretnly set up you shouldn't have to add the constant to your creatures.
It's being applied directly within the body of the script.
Anytime a creature is slain that has a CR above 40 the script should be treating the creature as though it is a level 40 for the purpose of determining XP gained for the killer and his party members.
This is, of course, subject to all other rules of the script (one being your FAIR_KILL_RANGE constant). If the Fair kill range constant is set to 5 for instance then all PCs ranging from level 35 to 40 should recieve XP based on thier level in comparison to the Creature's CR (Which in the case of any creature equal to or above CR 40.... with the new constant they are always equal to CR 40)
If the PCs fall outside of your Fair Kill Range then penalties begin to apply and you will eventually begin to see Players getting only the Minimum XP.
Posted by Fleshmelter at 2009-02-12 18:02:00 Voted 10.00 on 02/01/09
It seems the float constant isn't working as intended, may be that i'm not using it correctly.
I place MAXIMUM_CREATURE_CR on creature set float constant to 40 for example, and the mob still gives minimum xp, and sends message about being too high mob level.
So correct me if I'm not executing it right. _________________________ PW Action Server:
| Chaosgate |
Posted by Jackrabbit Slim at 2009-02-11 10:01:35 Voted 10.00 on 02/10/09
Close but no cigar. *grin*
Yes I am using the base settings and those are all tweaks i had tried prior to posting.
All my encounters are set to normal and spawn between 1-4 monsters. So here is the problem i have:
Those aren't exact numbers but i think you get the idea. I would like it to scale close to the original base xp value without going over the previos amounts. So killing 2 or 3 or 4 would get you gradually lower than the base xp.
Again this is just a wish wist list as i'm not sure what i'm asking can even be done *smile*. I'm using your script as is and it is working beautifully.
If so, then I think a minor tweaking of your FAIR_KILL_ADJUSTMENT constant
should do the trick for you. (An important note though: Your current issue is dealing with 3 spawns of CR 15 each. If at some point it's anything other than that then
further adjustment and experimentation may be needed)
Here are some examples I experimented with after reading your post:
(These examples are based on the assumption that your FAIR_KILL_XP constant is set to 300.0)
0.133; //Gives 100 XP to a level 20 PC Killing a Creature with a CR of 15.
0.134 //Gives 99 XP to a level 20 PC Killing a Creature with a CR of 15.
0.135 // Gives 97 XP to a level 20 PC Killing a Creature with a CR of 15.
0.14 // Gives 90 XP to a level 20 PC Killing a Creature with a CR of 15
0.15 //Gives 75 XP to a level 20 PC Killing a Creature with a CR of 15.
As long as your FAIR_KILL_XP remains set to 300.0 then you should recieve 300 xp for killing a creature the same level as yourself.
But as you can see, the greater the value you give your FAIR_KILL_ADJUSTMENT
constant the lower the XP you recieve for killing a creature lower level than yourself.
Keep in mind though that this setting will also affect the amount of XP you recieve for killing creatures that are HIGHER level than your character.
Play around with that setting till it feels right to you. Post back here if there are any other issues and I will do my best to help.
Actually, I have been considering splitting that constant into two seperate constants...
One for Adjusting the XP recieved when you are higher than the creatures CR, and a second for when your level is lower than the creature's CR. Thus making the two possible scenarios independent of one another.
Fleshmelter's suggestion has given me a couple of new ideas as well.
Maybe in the next update.
Posted by Jackrabbit Slim at 2009-02-10 10:54:35 Voted 10.00 on 02/10/09
Downloaded this last night and I really like it. Very well commented which makes it easy for folks like me to understand *grin*.
Question though. I use encounters in my mod and I cannot seem to get this to scale the xp for multiple monsters.
Example: Currently level 20 PC spawns 1 CR 20, kills it gets 300 XP. Same PC spawns in 3 CR 15, kills each at 150 XP each,thus gaining 450 xp, 150 xp more than the CR 20. Can i scale it so that the 3 CR 15's total xp would average to the CR 20 or below?
Hope that makes sense.
I tried playing with some of the settings but could not achieve the result.
Guess I need more experience posting things to the vault. I didn't mean to overwrite the original. I meant to simply add another version (only slightly modified from the original), but no harm done I suppose. Let me know if the new float constant solves your issue Fleshmelter.
Perfectly reasonable request Fleshmelter. Was just about to post an updated version anyway and then saw your suggestion and went back to it and added in a new constant. Details are in the script.
Of course, now I'm seeing that there are no files up there for download. Either I did something wrong when posting the updated version or its an admin thing and we just have to wait for approval.
Posted by Fleshmelter at 2009-02-09 10:58:03 Voted 10.00 on 02/01/09
Ok, I was wondering was there any way of turning it off for certain creatures basically, I have creatures on my server which are designed to be extreme levels, and players could never hope to obtain these levels, but would need to fight these monsters in groups.
Example would be a CR of 100 or so, with this script inplace no player would get xp beyond the minimum.
Posted by Pattycake1 at 2009-02-02 12:46:38 Voted 10.00 on 02/02/09
We have been testing this on Dawn of Nordock for Blaso-Yang. The players really love it. It is very easy to use and gives you tools to handle power gaming, either to allow it or disallow it. I suggest this system to all the PW worlds out there.
Posted by Fleshmelter at 2009-02-01 01:43:21 Voted 10.00 on 02/01/09
Great I always loved scarface's xp script, this is an excellent adaptation. I like the special XP as well, I've added tokens to my server that players can obtain as just great loot.
The players I have love the xp script since it's been added.
Great Job! _________________________ PW Action Server:
| Chaosgate |
Posted by Saduj at 2009-01-29 20:21:34 Voted 10.00 on 01/29/09