Test 1: throwing at a gunner
I did a test where I had a Cargo Wookiee stand in one spot of the map and had a D Jedi stand straight in front of him. I used teleport binds and didn't move my mouse at all (I bound +altattack to the keyboard), so that I could saber throw with the exact same conditions every time. Throwing four times under identical conditions, the HW had resulting HPs of:
- 27
- 67
- 11
- 59
Test 2: throwing at a saberist
Throwing against a jedi is even worse. For one, if you have a saber throw level that is lower than the target's saber defense level (happens on Cargo and Urban), there is a random calculation as to whether you get disarmed. I mean the game literally calls a function that picks a random number between 1 and 10, and if the chosen number is ≤ 4, you get disarmed. However, in my testing, even when I disabled this random roll behavior, it was STILL totally random whether your saber did damage or not. Similar to the Cargo test above, throwing my saber at an enemy jedi in the exact same spot repeatedly, sometimes I did damage and sometimes I didn't. So basically, sometimes you roll 40% for disarm, sometimes you do damage, and sometimes you do nothing at all. It's all over the place.
Why does this happen?
I don't really know. The saber code is a gigantic spaghetti mess and I don't really feel like trying to decipher it. Maybe Alpha or someone with more sabering experience can explain why. Perhaps it has something to do with nanometer variations in animation frames, or string theory or some shit. But as far as I'm concerned, this damage is all completely fucking random. The 100% same exact throw done multiple times should not have wildly different random results each time.
How can we improve this?
I'm open to ideas for how to improve this system. Here is my own idea: first of all, we completely trash the existing damage and blocking logic for throws and replace it with a brand new system. Under the new system, certain conditions are checked, and points are added based on these conditions. Higher points means the attack will be more successful; lower points means the attack won't be very effective.
- Is the target being pulled/pushed? If yes, +1 point.
- Is the target in a special hand/arm animation (e.g. hacking a panel, demp animation locked in a funny pose, etc.)? If yes, +1 point.
- Is the target moving toward the thrown saber? If yes, +1 point. (Note: this includes movement caused by pull!)
- Is the saber hitting a saberist within a 12 degree cone of their vision? (Is the target looking precisely at the incoming saber? This is the same cone used for level 1 defense's disrupt blocking.) If yes, -2 points.
- Is the saber hitting a saberist beyond a 146 degree cone of their vision? (Is the target basically not looking at the saber at all? This is the same cone used for level 3 defense's disrupt blocking.) If yes, +2 points.
- Is the target a saberist who is currently swinging a saber? If yes, +1 point.
- Is the target ≥10m away from the point at which the throw originated? If yes, +1 point (rewards high skill MLG saberthrow snipes).
Against saberists:
≥ 2 points: 50 damage
1 point: 25 damage
0 points: 15 damage
-1 points: 5 damage
≤ -2 points: 0 damage (blocked)
Against gunners:
≥ 1 point: 100 damage
0 points: 60 damage
≤ -1 points: 30 damage
So by using the above criteria, you can figure out various scenarios and see how much damage it would cause. No randomness, just simple cause-and-effect.
This is just a prototype idea I came up with today; totally WIP. I'm open to feedback or alternative suggestions. As far as I'm concerned, virtually any idea would be better than this random ass bullshit system we currently have. Let me know what you think.