diff --git a/src/app/app.cpp b/src/app/app.cpp index 70bec815..51f1e424 100644 --- a/src/app/app.cpp +++ b/src/app/app.cpp @@ -112,7 +112,7 @@ CApplication::CApplication() m_debugModes = 0; m_customDataPath = false; - m_windowTitle = "COLOBOT"; + m_windowTitle = "COLOBOT GOLD"; m_simulationSuspended = false; diff --git a/src/physics/physics.cpp b/src/physics/physics.cpp index a7e1e6cc..c84040ee 100644 --- a/src/physics/physics.cpp +++ b/src/physics/physics.cpp @@ -107,6 +107,9 @@ CPhysics::CPhysics(CObject* object) m_bFreeze = false; m_bForceUpdate = true; m_bLowLevel = false; + m_fallingHeight = 0.0f; + m_fallDamageFraction = 0.0f; + m_minFallingHeight = 0.0f; memset(&m_linMotion, 0, sizeof(Motion)); memset(&m_cirMotion, 0,sizeof(Motion)); @@ -912,9 +915,15 @@ void CPhysics::MotorUpdate(float aTime, float rTime) if ( m_reactorRange < 0.5f ) m_bLowLevel = true; } + m_minFallingHeight = 20.0f; + m_fallDamageFraction = 0.007f; + if ( m_reactorRange == 0.0f ) // reactor tilt? { motorSpeed.y = -1.0f; // grave + + if (m_fallingHeight == 0.0f && m_floorHeight >= m_minFallingHeight) + m_fallingHeight = m_floorHeight; } } @@ -974,6 +983,13 @@ void CPhysics::MotorUpdate(float aTime, float rTime) m_cirMotion.motorSpeed.y = 0.0f; } + if ( m_bLand && m_fallingHeight != 0.0f ) // if fell + { + float force = m_fallingHeight * m_fallDamageFraction; + m_object->ExploObject(EXPLO_BOUM, force); + m_fallingHeight = 0.0f; + } + if ( m_type == TYPE_FLYING && m_bLand ) // flying on the ground? { if ( type == OBJECT_HUMAN || diff --git a/src/physics/physics.h b/src/physics/physics.h index 834d7b82..cf15b138 100644 --- a/src/physics/physics.h +++ b/src/physics/physics.h @@ -248,5 +248,8 @@ protected: bool m_bSoundSlow; bool m_bForceUpdate; bool m_bLowLevel; + float m_fallingHeight; + float m_fallDamageFraction; + float m_minFallingHeight; };