summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/control/Script9.cpp1
-rw-r--r--src/core/World.cpp14
-rw-r--r--src/core/World.h1
-rw-r--r--src/weapons/ShotInfo.cpp6
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);
+ }
}
}