diff --git a/Subsurface/Barotrauma.csproj b/Subsurface/Barotrauma.csproj index cb3b9d7a5..a5b098ca6 100644 --- a/Subsurface/Barotrauma.csproj +++ b/Subsurface/Barotrauma.csproj @@ -1123,6 +1123,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest diff --git a/Subsurface/Content/Items/Fabricators/fabricators.xml b/Subsurface/Content/Items/Fabricators/fabricators.xml index 271179d1c..08d3cf413 100644 --- a/Subsurface/Content/Items/Fabricators/fabricators.xml +++ b/Subsurface/Content/Items/Fabricators/fabricators.xml @@ -53,6 +53,8 @@ + + diff --git a/Subsurface/Content/Items/Medical/medical.xml b/Subsurface/Content/Items/Medical/medical.xml index aacf20bdf..4ad18cc4c 100644 --- a/Subsurface/Content/Items/Medical/medical.xml +++ b/Subsurface/Content/Items/Medical/medical.xml @@ -319,7 +319,7 @@ - + @@ -375,7 +375,7 @@ - + diff --git a/Subsurface/Content/Items/Tools/flare.ogg b/Subsurface/Content/Items/Tools/flare.ogg new file mode 100644 index 000000000..79286ac86 Binary files /dev/null and b/Subsurface/Content/Items/Tools/flare.ogg differ diff --git a/Subsurface/Content/Items/Tools/tools.xml b/Subsurface/Content/Items/Tools/tools.xml index 74b1236f6..2cabcfb7b 100644 --- a/Subsurface/Content/Items/Tools/tools.xml +++ b/Subsurface/Content/Items/Tools/tools.xml @@ -250,19 +250,29 @@ category="Equipment" pickdistance="150" price="5" + spritecolor="1.0,0.0,0.0,1.0" tags="smallitem"> - + + + + - - + - + + + - + + + + + + diff --git a/Subsurface/Content/Particles/ParticlePrefabs.xml b/Subsurface/Content/Particles/ParticlePrefabs.xml index 126df77ef..d2be342c8 100644 --- a/Subsurface/Content/Particles/ParticlePrefabs.xml +++ b/Subsurface/Content/Particles/ParticlePrefabs.xml @@ -219,4 +219,19 @@ velocitychange="0.0, -0.5"> + + + + diff --git a/Subsurface/Source/Characters/StatusEffect.cs b/Subsurface/Source/Characters/StatusEffect.cs index 273db9420..a694f926b 100644 --- a/Subsurface/Source/Characters/StatusEffect.cs +++ b/Subsurface/Source/Characters/StatusEffect.cs @@ -1,4 +1,5 @@ -using Microsoft.Xna.Framework; +using Barotrauma.Particles; +using Microsoft.Xna.Framework; using System; using System.Collections.Generic; using System.Linq; @@ -36,6 +37,8 @@ namespace Barotrauma private Explosion explosion; + private List particleEmitters; + public readonly float FireSize; private Sound sound; @@ -68,6 +71,7 @@ namespace Barotrauma protected StatusEffect(XElement element) { requiredItems = new List(); + particleEmitters = new List(); IEnumerable attributes = element.Attributes(); List propertyAttributes = new List(); @@ -156,6 +160,9 @@ namespace Barotrauma case "useitem": useItem = true; break; + case "particleemitter": + particleEmitters.Add(new ParticleEmitterPrefab(subElement)); + break; case "requireditem": case "requireditems": RelatedItem newRequiredItem = RelatedItem.Load(subElement); @@ -253,12 +260,28 @@ namespace Barotrauma if (explosion != null) explosion.Explode(entity.WorldPosition); + + Hull hull = null; + if (entity is Character) + { + hull = ((Character)entity).AnimController.CurrentHull; + } + else if (entity is Item) + { + hull = ((Item)entity).CurrentHull; + } + if (FireSize > 0.0f) { - var fire = new FireSource(entity.WorldPosition); + var fire = new FireSource(entity.WorldPosition, hull); fire.Size = new Vector2(FireSize, fire.Size.Y); } + + foreach (ParticleEmitterPrefab emitter in particleEmitters) + { + emitter.Emit(entity.WorldPosition, hull); + } } private IEnumerable ApplyToPropertyOverDuration(float duration, ObjectProperty property, object value) diff --git a/Subsurface/Source/Items/Components/Holdable/Holdable.cs b/Subsurface/Source/Items/Components/Holdable/Holdable.cs index caf61341f..fffafd02e 100644 --- a/Subsurface/Source/Items/Components/Holdable/Holdable.cs +++ b/Subsurface/Source/Items/Components/Holdable/Holdable.cs @@ -241,22 +241,16 @@ namespace Barotrauma.Items.Components public override void Update(float deltaTime, Camera cam) { - if (item.body==null || !item.body.Enabled) return; + if (item.body == null || !item.body.Enabled) return; if (!picker.HasSelectedItem(item)) IsActive = false; ApplyStatusEffects(ActionType.OnActive, deltaTime, picker); if (item.body.Dir != picker.AnimController.Dir) Flip(item); - AnimController ac = picker.AnimController; - item.Submarine = picker.Submarine; - //if (picker.SelectedConstruction != null && picker.SelectedConstruction.GetComponent() != null) return; - - //item.sprite.Depth = picker.AnimController.GetLimb(LimbType.RightHand).sprite.Depth + 0.01f; - - ac.HoldItem(deltaTime, item, handlePos, holdPos, aimPos, picker.IsKeyDown(InputType.Aim), holdAngle); + picker.AnimController.HoldItem(deltaTime, item, handlePos, holdPos, aimPos, picker.IsKeyDown(InputType.Aim), holdAngle); } protected void Flip(Item item) diff --git a/Subsurface/Source/Items/Components/Holdable/Throwable.cs b/Subsurface/Source/Items/Components/Holdable/Throwable.cs index 0b173ac95..7342fea09 100644 --- a/Subsurface/Source/Items/Components/Holdable/Throwable.cs +++ b/Subsurface/Source/Items/Components/Holdable/Throwable.cs @@ -82,6 +82,8 @@ namespace Barotrauma.Items.Components AnimController ac = picker.AnimController; + item.Submarine = picker.Submarine; + if (!throwing) { if (picker.IsKeyDown(InputType.Aim)) diff --git a/Subsurface/Source/Particles/ParticleEmitter.cs b/Subsurface/Source/Particles/ParticleEmitter.cs index 0b9509020..593f9abc5 100644 --- a/Subsurface/Source/Particles/ParticleEmitter.cs +++ b/Subsurface/Source/Particles/ParticleEmitter.cs @@ -35,7 +35,7 @@ namespace Barotrauma.Particles } AngleMin = MathHelper.ToRadians(AngleMin); - AngleMin = MathHelper.ToRadians(AngleMax); + AngleMax = MathHelper.ToRadians(AngleMax); if (element.Attribute("velocity") == null) {