position.X = rangelim(position.X, lwn_f.X-maxd, lwn_f.X+maxd);
position.Z = rangelim(position.Z, lwn_f.Z-maxd, lwn_f.Z+maxd);
- f32 min_y = lwn_f.Y + 0.5*BS;
- if(position.Y < min_y)
+ if(!is_climbing)
{
- position.Y = min_y;
+ f32 min_y = lwn_f.Y + 0.5*BS;
+ if(position.Y < min_y)
+ {
+ position.Y = min_y;
- if(m_speed.Y < 0)
- m_speed.Y = 0;
+ if(m_speed.Y < 0)
+ m_speed.Y = 0;
+ }
}
}
v3f speed = getSpeed();
if(speed.Y >= -0.5*BS)
{
- speed.Y += 6.5*BS;
+ speed.Y = 6.5*BS;
setSpeed(speed);
- m_can_jump = false;
MtEvent *e = new SimpleTriggerEvent("PlayerJump");
m_gamedef->event()->put(e);