From 6895cdbd7df336a7e72a550b40e12add38ef5c93 Mon Sep 17 00:00:00 2001 From: Regalis Date: Mon, 3 Apr 2017 20:48:09 +0300 Subject: [PATCH] Clients don't apply OnFire statuseffects to items. OnFire can cause items to explode, and because the client can't set the condition of the item to 0.0, it'll keep exploding until the server breaks the item. TODO: come up with a proper fix because now clients can't see oxy or fuel tanks exploding at their end. --- Subsurface/Source/Map/Explosion.cs | 3 +-- Subsurface/Source/Map/FireSource.cs | 6 ++---- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/Subsurface/Source/Map/Explosion.cs b/Subsurface/Source/Map/Explosion.cs index ba3a750f3..f4203f939 100644 --- a/Subsurface/Source/Map/Explosion.cs +++ b/Subsurface/Source/Map/Explosion.cs @@ -75,12 +75,11 @@ namespace Barotrauma ApplyExplosionForces(worldPosition, attack.Range, force, attack.GetDamage(1.0f), attack.Stun); - if (flames) + if (flames && GameMain.Client == null) { foreach (Item item in Item.ItemList) { if (item.CurrentHull != hull || item.FireProof || item.Condition <= 0.0f) continue; - //if (item.ParentInventory != null) return; if (Vector2.Distance(item.WorldPosition, worldPosition) > attack.Range * 0.1f) continue; diff --git a/Subsurface/Source/Map/FireSource.cs b/Subsurface/Source/Map/FireSource.cs index 44540daf4..93a583c4d 100644 --- a/Subsurface/Source/Map/FireSource.cs +++ b/Subsurface/Source/Map/FireSource.cs @@ -280,10 +280,8 @@ namespace Barotrauma float range = (float)Math.Sqrt(size.X) * 10.0f; if (item.Position.X < position.X - range || item.Position.X > position.X + size.X + range) continue; if (item.Position.Y < position.Y - size.Y || item.Position.Y > hull.Rect.Y) continue; - - //item.Condition -= (float)Math.Sqrt(size.X) * deltaTime; - - item.ApplyStatusEffects(ActionType.OnFire, deltaTime); + + if (GameMain.Client == null) item.ApplyStatusEffects(ActionType.OnFire, deltaTime); } }