Interesting find... I can recreate death stage all the time.
How To...
- get weapon or not;
- step away from decoration;
- start running at decoration;
- when you feel first step over it quickly press Jump Key = Instant Death.
Now I will want to check decoration class...
.
Edit: Nah... I think here is a problem... In PlayerPawn more exactly...
Code: Select all
function DoJump( optional float F )
{
if ( CarriedDecoration != None )
return;
if ( !bIsCrouching && (Physics == PHYS_Walking) )
{
if ( !bUpdating )
PlayOwnedSound(JumpSound, SLOT_Talk, 1.5, true, 1200, 1.0 );
if ( (Level.Game != None) && (Level.Game.Difficulty > 0) )
MakeNoise(0.1 * Level.Game.Difficulty);
PlayInAir();
if ( bCountJumps && (Role == ROLE_Authority) && (Inventory != None) )
Inventory.OwnerJumped();
Velocity.Z = JumpZ;
if ( (Base != Level) && (Base != None) )
Velocity.Z += Base.Velocity.Z;
SetPhysics(PHYS_Falling);
}
}
Section capturing my attention...
Code: Select all
...
if ( (Base != Level) && (Base != None) )
Velocity.Z += Base.Velocity.Z;
SetPhysics(PHYS_Falling);
...
Based on my understanding:
If Player has a "Base" which is not the map, it will add a velocity on z copied from this base (which is Zero). And now the "side effect": Player has no velocity on Z but physics are changed to "Falling" resulting something interesting. If this is done faster, perhaps effect is boosted by other cute function...
For me this code looks stupid. You don't really check if that "Base" has a positive Z velocity but you are forcing a fall after adding ZERO velocity on Z for Jumper-boy.
Edit2: Everything works fine with this...
Code: Select all
....
if ( (Base != Level) && (Base != None && Base.Velocity.Z > 0) )
Velocity.Z += Base.Velocity.Z;
SetPhysics(PHYS_Falling);
Now I have to build another to do list for fixing server(s)...