diff options
-rw-r--r-- | src/control/Script9.cpp | 1 | ||||
-rw-r--r-- | src/core/World.cpp | 14 | ||||
-rw-r--r-- | src/core/World.h | 1 | ||||
-rw-r--r-- | src/weapons/ShotInfo.cpp | 6 |
4 files changed, 20 insertions, 2 deletions
diff --git a/src/control/Script9.cpp b/src/control/Script9.cpp index 579626f3..5793ca50 100644 --- a/src/control/Script9.cpp +++ b/src/control/Script9.cpp @@ -376,6 +376,7 @@ int8 CRunningScript::ProcessCommands1500To1599(int32 command) } case COMMAND_CLEAR_OBJECT_LAST_WEAPON_DAMAGE: { + CollectParameters(&m_nIp, 1); CObject* pObject = CPools::GetObjectPool()->GetAt(GET_INTEGER_PARAM(0)); if (!pObject) printf("CLEAR_OBJECT_LAST_WEAPON_DAMAGE - pObject doesn\'t exist"); diff --git a/src/core/World.cpp b/src/core/World.cpp index 8756049d..43af9f12 100644 --- a/src/core/World.cpp +++ b/src/core/World.cpp @@ -2294,3 +2294,17 @@ CWorld::IsWanderPathClear(CVector const& point1, CVector const& point2, float di } return true; } + +void +CWorld::CheckObjectsEffectedByFire(float x, float y, float z, float radius, CEntity* reason) +{ + int32 i = CPools::GetObjectPool()->GetSize(); + while (i--) { + CObject* pObject = CPools::GetObjectPool()->GetSlot(i); + if (pObject) { + if (Abs(pObject->GetPosition().z - z) < 5.0f && Abs(pObject->GetPosition().x - x) < radius && + Abs(pObject->GetPosition().y - y) < radius) + pObject->m_nLastWeaponToDamage = WEAPONTYPE_FLAMETHROWER; + } + } +} diff --git a/src/core/World.h b/src/core/World.h index c90bb3a1..8da080b5 100644 --- a/src/core/World.h +++ b/src/core/World.h @@ -155,6 +155,7 @@ public: static void TriggerExplosion(const CVector& position, float fRadius, float fPower, CEntity* pCreator, bool bProcessVehicleBombTimer); static void TriggerExplosionSectorList(CPtrList& list, const CVector& position, float fRadius, float fPower, CEntity* pCreator, bool bProcessVehicleBombTimer); static void UseDetonator(CEntity *pEntity); + static void CheckObjectsEffectedByFire(float, float, float, float, CEntity*); // NB: following functions are unused (TODO?) static void CastShadow(float, float, float, float); diff --git a/src/weapons/ShotInfo.cpp b/src/weapons/ShotInfo.cpp index 788bcbe1..b98eaf7a 100644 --- a/src/weapons/ShotInfo.cpp +++ b/src/weapons/ShotInfo.cpp @@ -143,7 +143,9 @@ CShotInfo::Update() } } } - if (!((CTimer::GetFrameCounter() + slot) & 3)) - CWorld::SetCarsOnFire(shot.m_startPos.x, shot.m_startPos.y, shot.m_startPos.z, 4.0f, shot.m_sourceEntity); + if (!((CTimer::GetFrameCounter() + slot) & 3)) { + CWorld::SetCarsOnFire(shot.m_startPos.x, shot.m_startPos.y, shot.m_startPos.z, 2.0f, shot.m_sourceEntity); + CWorld::CheckObjectsEffectedByFire(shot.m_startPos.x, shot.m_startPos.y, shot.m_startPos.z, 2.0f, shot.m_sourceEntity); + } } } |