Well, here's my fancy little changelog that I made especially for the saber system. I'm not sure if this is a complete listing or not. Most noteably, I also rewrote the saber throw code to have a more realistic behavior.
==================================
Enhanced v0.0.2 b6:
Super Duper Interplotation system - This gives you a higher level of hit detection without having to boost the sv_fps. We recommend you try this first before you touch the sv_fps. Is controlled by d_saberInterpolate. The game defaults to Super Duper interplotation.
d_saberInterpolate 0 = no interpolation
d_saberInterpolate 1 = Raven's interpolation
d_saberInterpolate 2 = Super Duper interpolation
Enhanced v0.0.2 b5:
- Fixed a major bug in the Real Trace function code.
- Fixed bug preventing saber bounces from occurring.
- idle sabers don't go into bounce anymore.
- added "bot_fps" cvar. This controls the fps of the bot ai code so you can raise the server fps without increasing the bot ai's. defaults to 20 (fps).
- fixed partial dodge math errors.
- Faking system tweaking:
- to abort an attack, simply let go of the attack button.
- to perform a fake hold down attack + block + movement key for the attack you wish to use. You need to already have started/be in an attack for this to work.
- Force Fall starting fall speed tweaked
- Fixed Bug in impact (fall) damage code logic. Client 0 was getting free pass. I beleive this is due Raven accidently leaving some SP code in MP. (BugFix3)
- Saber Clash Effects now use the saber wound debounce (g_saberDmgDelay_Wound) to prevent effect spazzing at different sv_fps.
Enhanced v0.0.2 b4:
- Removed manual blocking button. Replaced it with block/parry button. Hold to block incoming saber attacks. To parry incoming attacks, press and hold the block button right before an attack will hit. Entering block/parry mode costs 1 FP but you can stay in it as long as you want without cost. However, remember that your parry bonuses (chances of forcing your attacker into a knockaway, etc.) go way down after a second or so off holding the block button.
- Totally hacked the bots to walk instead of run everywhere.
- Remember to make sure that...
sv_fps is set to 50 or 100.
g_saberDmgDelay_Wound = at least 100
cl_maxpackets = sv_fps
- g_debugsabercombat 7 = Debug messages for the parry bonus results.
- g_dodgeRegenTime changed to 1000
- g_forceRegenTime changed to 500
Enhanced v0.0.2 b3:
- Dodge Blocking works now.
- PreCog (IE dodging before something happens) Dodges for thermal weapons and other explosive weapons.
- Walk speed increased.
- You can now use the block button to override the manual blocking.
Enhanced v0.0.2b2:
- g_saberDmgDelay_Idle & g_saberDmgDelay_Wound now control how often often hits against the exact same target will register. This is to prevent the damage levels and saber/dodge behavior from acting differently when you're using a higher sv_fps setting. This translates to more consistant damage as well.
- Players now become fatigued at 10% of max FP. When fatigued, players make attacks much slower.
- You can now only walk during a Knockaway.
- Default value for g_saberanimspeed changed to .5.
- Fixed issue with g_saberanimspeed affecting some of the wall animations.
- Activated the two hidden stances (tavion's and Dasain's). They are now part of the single saber's stance cycle but they don't have seperate hud icons yet. (HiddenStances)
- Proto Visual weapons code - While you're not using your saber, it will appear on your belt. This only works for specially prepared models. (VisualWeapons)
- Dodge guage now flashes and makes sound when dodge is under 30.
- Both Dodge and Fatigue guages flash when low.
- Moded Force Fall so that it gradually slows down = instant slow down.
- Saber Fakes - pressing the block button before an attack starts will make your player do a fake. Using Block + a direction will transistion the swing into different attack (based on the direction pressed). Using Block without movement will cause the player to abort the attack and resume the ready position.
Enhanced v0.0.2:
- Teammates' Sabers now collide with each other even if friendly fire damage is turned off.
- Teammate NPC blades now collide with other teammate blades.
- saberthrow is now binded to button12 (+button12 for binding purposes) and/or selectable thru the force menu. Either will still operate the kicks with the saber staff.
- Turning off g_saberBladeFaces will result in poor viewlocking on saber impacts so don't do that.
- changed d_saberSPStyleDamage to 0 for the default. It was causing problems with viewlocking with idle saber damage.
- Viewlocking!
- Manual Blocking. Hold down secondary fire and use your movement keys to set a direction. The current controls are inverted (backwards for upper positions, forwards for lower) The availible positions are Lower Left, Lower Right, Upper Right,Upper Left, Top.
- Hilt bash should in theory work now.
- Fixed issue with the double/dual saber animation spazing while standings still and holding block position. It was due to the block animation trying to restart each time the block position was refreshed. Since this is no longer the case, blocking will now take up less bandwidth. Yeah!
- Moved all the movement set code for the blocking to PM_SetBlock(). It should be easier to edit now.
- For now, I've made the special moves go at normal speed. We can mess with that stuff later.
- Added Movement locking.
- Sabers now bounces off players (and other damageable objects) when the saber does non-lethal damage. Layman translation: NO MORE GROSS SABER PASSTHRU.
- Added Corpse and saber throw checks to view/movement locking. Also, added a check to prevent moves from view/move locking when you hit the ground (since many animations do that naturally).
- saber throw button (button12) added to idle client checks.
- sabers now use actual saber radiuses for saber collision checks.
- Rewrote saber tracing system (I call it a Real Trace now) for better performance and accuracy. it's not 100% (there's some crazy situation where it isn't guarnteed to be perfect, like when multiple players and sabers touching the same saber @ the same time), but it's perfect enough for all the SANE situations that I could think of.
- sv_fps is now set to 50 for improved hit detection. Please note that you might have to do some setting tweaks (that I can't do for you) to get the most out of the change. See
http://www.techspot.com/tweaks/jedioutcast/jedi-6.shtml) for details.
- AI now uses saber throw correctly.
- anglar and linear movement now affects saber damage levels. Running towards an opponent while spinning into an attack is do more damage. Each element does about %60 +- when at maximum.
- Saber behavior completely rewrote.
- Running or moving faster than a walk greatly increases your chances of screwing up.
- Manually block an attack has a high probability of creating an openning in your opponent's defenses
- New Saber Defines can be found in w_saber.c under the tag "SaberDefines".
- new debug mode cvar - g_debugsabercombat 0 in debug mode. This cvar is used to test the new saber behavior.
0 = none
1 = attacker butter fingers
2 = attacker knockaway
3 = attacker knockdown
4 = defender butter fingers
5 = defender knockaway
6 = defender knockdown
- new saber hit detection cvar - d_saberBodyCheck 1. Determines weither or not a RealTrace does an additional ghoul2 trace to determine if the player body was hit when the saberEntity was hit. Layman translation: It takes a little bit more CPU (shouldn't be noticeable) to ensure that the player hit detection is accurate whenever sabers are colliding.
- Fatigue:
Your Force Points now regenerate at a slower rate and most combat actions cause Force/Fatigue Points. Attempting a saber move that costs more than your current FP will result in you doing the move much slower than normal. The objective of this system is to make players concentrate on fighting smartly by effective mixes of attacking and defending.
Fatigue Regen Rates (dependant on g_ForceRegen setting):
Standing = Standard (= 1 FP per g_ForceRegen milliseconds)
Running = No Regen
Walking = Standard/2
Meditate (using the meditate taunt) = Standard * 3
Fatigue Costs:
Standard Saber Attack = 1
Standard Saber Spin (transition) = 1
- I've set up some easy to find tags for the defines that determine their behavior.
Saber System (SaberSys) = SaberDefines
Fatigue System (FatigueSys) = FatigueDefines
Dodge System (DodgeSys) = DodgeDefines
Dodge:
Dodge is a brand new system that prevents you from taking damage. Whenever an attack is going to hit you, Dodge takes over and either automatically moves your saber to block the attack (Dodge Block) or Evades out of the way. Dodge operates from a Dodge reserve that is seperated from the other stats (health, ammo, etc). The new Hud in the upper left part of the screen displays how many Dodge Points (DP) you have. Dodge has a maximum of 100 points and is refilled by draining energy from your Fatigue (Force) Points at a ratio of 6 DP to 1 FP. Dodge regens at a much faster rate than Fatigue (is controlled by g_dodgeRegenTime).
There are several different types of Dodge:
Dodge Block - If the player is using a light saber and not attacking, he will automatically attempt to block incoming light saber attacks. This is the first line of Dodge defense. This currently doesn't have an DP cost but it also doesn't have the parry bonus of a manual block.
Dodge - The player physically evades an attack. This currently only works for saber attacks. Cost is dependant on method of attack.
Sabers = 30 DP.
Dodge Roll - When normal Dodge fails, like say when a very solid saber swing continues to hit the player, the player will launch into a Dodge Roll
Situations where Dodge doesn't work:
Choking
Knocked to the ground
In mid air
It's very important to remember these situations as sabers are VERY lethal without Dodge.
Dodge Cvars:
g_debugdodge 0 = debug cvar for Dodge. Set to 1 to receive messages whenever Dodge is used.
g_dodgeRegenTime 555 = Controls the rate at which Dodge regens. The value is in msecs between regens.
Base JKA Saber System Terms:
Knockaway - You (defender) just blasted an attacker into a Broken parry. The animation start points seem to be from the parry positions. (BOTH_K animations)
Broken Parry - Your saber just got blased pretty hard. (BOTH_V animations)
=============================