diff --git a/Subsurface/Content/Items/Electricity/signalitems.xml b/Subsurface/Content/Items/Electricity/signalitems.xml index 8128c1d74..d4ebf5678 100644 --- a/Subsurface/Content/Items/Electricity/signalitems.xml +++ b/Subsurface/Content/Items/Electricity/signalitems.xml @@ -305,6 +305,7 @@ + diff --git a/Subsurface/Content/Items/Tools/tools.xml b/Subsurface/Content/Items/Tools/tools.xml index 560e8c436..be03cf31b 100644 --- a/Subsurface/Content/Items/Tools/tools.xml +++ b/Subsurface/Content/Items/Tools/tools.xml @@ -43,7 +43,7 @@ - + @@ -88,7 +88,7 @@ - + diff --git a/Subsurface/Source/Items/Components/Projectile.cs b/Subsurface/Source/Items/Components/Projectile.cs index 4e271594e..fbe4b69dd 100644 --- a/Subsurface/Source/Items/Components/Projectile.cs +++ b/Subsurface/Source/Items/Components/Projectile.cs @@ -149,6 +149,16 @@ namespace Barotrauma.Items.Components AttackResult attackResult = new AttackResult(0.0f, 0.0f); if (attack != null) { + var submarine = f2.Body.UserData as Submarine; + if (submarine != null) + { + item.Move(-submarine.Position); + item.Submarine = submarine; + item.body.Submarine = submarine; + item.FindHull(); + return false; + } + Limb limb; Structure structure; if ((limb = (f2.Body.UserData as Limb)) != null) diff --git a/Subsurface/Source/Items/Components/Signal/LightComponent.cs b/Subsurface/Source/Items/Components/Signal/LightComponent.cs index 0b1c251a8..7ad1ed8f0 100644 --- a/Subsurface/Source/Items/Components/Signal/LightComponent.cs +++ b/Subsurface/Source/Items/Components/Signal/LightComponent.cs @@ -92,10 +92,8 @@ namespace Barotrauma.Items.Components public override void Update(float deltaTime, Camera cam) { base.Update(deltaTime, cam); - if (item.CurrentHull != null) - { - light.Submarine = item.CurrentHull.Submarine; - } + + light.Submarine = (item.CurrentHull == null) ? null : item.CurrentHull.Submarine; if (item.Container != null) { @@ -105,7 +103,13 @@ namespace Barotrauma.Items.Components if (item.body != null) { - light.Position = item.WorldPosition; + light.Position = item.Position; + + if (!item.body.Enabled) + { + light.Color = Color.Transparent; + return; + } } if (powerConsumption == 0.0f) diff --git a/Subsurface/Source/Map/SubmarineBody.cs b/Subsurface/Source/Map/SubmarineBody.cs index 9fb1fcbb9..7246e820e 100644 --- a/Subsurface/Source/Map/SubmarineBody.cs +++ b/Subsurface/Source/Map/SubmarineBody.cs @@ -150,7 +150,7 @@ namespace Barotrauma body.BodyType = BodyType.Dynamic; body.CollisionCategories = Physics.CollisionMisc | Physics.CollisionWall; - body.CollidesWith = Physics.CollisionLevel | Physics.CollisionCharacter; + body.CollidesWith = Physics.CollisionLevel | Physics.CollisionCharacter | Physics.CollisionProjectile; body.Restitution = Restitution; body.Friction = Friction; body.FixedRotation = true;