diff --git a/Subsurface/Characters/Character.cs b/Subsurface/Characters/Character.cs index 76356b75c..c9eff264b 100644 --- a/Subsurface/Characters/Character.cs +++ b/Subsurface/Characters/Character.cs @@ -356,7 +356,7 @@ namespace Subsurface /// /// Control the characte /// - public void Control(Camera cam, bool forcePick=false) + public void Control(float deltaTime, Camera cam, bool forcePick=false) { if (isDead) return; @@ -383,15 +383,15 @@ namespace Subsurface if (selectedItems[i] == null) continue; if (i == 1 && selectedItems[0] == selectedItems[1]) continue; - if (actionKeyDown.State) selectedItems[i].Use(this); - if (secondaryKeyDown.State && selectedItems[i] != null) selectedItems[i].SecondaryUse(this); + if (actionKeyDown.State) selectedItems[i].Use(deltaTime, this); + if (secondaryKeyDown.State && selectedItems[i] != null) selectedItems[i].SecondaryUse(deltaTime, this); } if (selectedConstruction != null) { - if (actionKeyDown.State) selectedConstruction.Use(this); - if (secondaryKeyDown.State) selectedConstruction.SecondaryUse(this); + if (actionKeyDown.State) selectedConstruction.Use(deltaTime, this); + if (secondaryKeyDown.State) selectedConstruction.SecondaryUse(deltaTime, this); } if (IsNetworkPlayer) @@ -522,8 +522,8 @@ namespace Subsurface } if (controlled == this) ControlLocalPlayer(cam); - - Control(cam); + + Control(deltaTime, cam); UpdateSightRange(); aiTarget.SoundRange = 0.0f; @@ -781,7 +781,7 @@ namespace Subsurface new NetworkEvent(NetworkEventType.KillCharacter, ID, false); } - if (Game1.GameSession.crewManager!=null) + if (Game1.GameSession!=null && Game1.GameSession.crewManager != null) { Game1.GameSession.crewManager.KillCharacter(this); } diff --git a/Subsurface/Characters/DelayedEffect.cs b/Subsurface/Characters/DelayedEffect.cs index 1ecb3098c..1b1646083 100644 --- a/Subsurface/Characters/DelayedEffect.cs +++ b/Subsurface/Characters/DelayedEffect.cs @@ -14,9 +14,7 @@ namespace Subsurface private Item item; private Character character; - - private Limb limb; - + public float Timer { get { return timer; } @@ -28,13 +26,12 @@ namespace Subsurface delay = ToolBox.GetAttributeFloat(element, "delay", 1.0f); } - public override void Apply(ActionType type, float deltaTime, Item item, Character character = null, Limb limb = null) + public override void Apply(ActionType type, float deltaTime, Item item, Character character = null) { if (this.type != type) return; this.item = item; this.character = character; - this.limb = limb; timer = delay; @@ -47,7 +44,7 @@ namespace Subsurface if (timer > 0.0f) return; - base.Apply(1.0f, character, item, limb); + base.Apply(1.0f, character, item); list.Remove(this); } diff --git a/Subsurface/Characters/StatusEffect.cs b/Subsurface/Characters/StatusEffect.cs index 2fa7fca9c..eea50dc26 100644 --- a/Subsurface/Characters/StatusEffect.cs +++ b/Subsurface/Characters/StatusEffect.cs @@ -1,4 +1,5 @@ -using System; +using Microsoft.Xna.Framework; +using System; using System.Collections.Generic; using System.Linq; using System.Xml.Linq; @@ -10,7 +11,7 @@ namespace Subsurface [Flags] public enum Target { - This = 1, Parent = 2, Character = 4, Contained = 8, Nearby = 16 + This = 1, Parent = 2, Character = 4, Contained = 8, Nearby = 16, UseTarget=32 } private Target targets; @@ -142,14 +143,34 @@ namespace Subsurface } - public virtual void Apply(ActionType type, float deltaTime, Item item, Character character = null, Limb limb = null) + public virtual void Apply(ActionType type, float deltaTime, Item item, Character character = null) { if (this.type == type) Apply(deltaTime, character, item); - } - - protected virtual void Apply(float deltaTime, Character character, Item item, Limb limb = null) + public virtual void Apply(ActionType type, float deltaTime, Vector2 position, IPropertyObject target) + { + if (!targetNames.Contains(target.Name)) return; + if (this.type == type) Apply(deltaTime, position, target); + } + + protected virtual void Apply(float deltaTime, Vector2 position, IPropertyObject target) + { + if (explosion != null) explosion.Explode(position); + + if (sound != null) sound.Play(1.0f, 1000.0f, position); + + for (int i = 0; i < propertyNames.Count(); i++) + { + ObjectProperty property; + if (target.ObjectProperties.TryGetValue(propertyNames[i], out property)) + { + ApplyToProperty(property, propertyEffects[i], deltaTime); + } + } + } + + protected virtual void Apply(float deltaTime, Character character, Item item) { if (explosion != null) explosion.Explode(item.SimPosition); diff --git a/Subsurface/Content/Items/Diving/divinggear.xml b/Subsurface/Content/Items/Diving/divinggear.xml index cdd318394..79cdf2cfb 100644 --- a/Subsurface/Content/Items/Diving/divinggear.xml +++ b/Subsurface/Content/Items/Diving/divinggear.xml @@ -12,10 +12,12 @@ + + diff --git a/Subsurface/Content/Items/OxygenTank/item.xml b/Subsurface/Content/Items/Diving/item.xml similarity index 100% rename from Subsurface/Content/Items/OxygenTank/item.xml rename to Subsurface/Content/Items/Diving/item.xml diff --git a/Subsurface/Content/Items/OxygenTank/oxygentank.png b/Subsurface/Content/Items/Diving/oxygentank.png similarity index 100% rename from Subsurface/Content/Items/OxygenTank/oxygentank.png rename to Subsurface/Content/Items/Diving/oxygentank.png diff --git a/Subsurface/Content/Items/Tools/fueltank.png b/Subsurface/Content/Items/Tools/fueltank.png new file mode 100644 index 000000000..f26b70ebe Binary files /dev/null and b/Subsurface/Content/Items/Tools/fueltank.png differ diff --git a/Subsurface/Content/Items/Tools/plasmacutter.png b/Subsurface/Content/Items/Tools/plasmacutter.png new file mode 100644 index 000000000..25fdfaa60 Binary files /dev/null and b/Subsurface/Content/Items/Tools/plasmacutter.png differ diff --git a/Subsurface/Content/Items/Tools/tools.xml b/Subsurface/Content/Items/Tools/tools.xml index ecf919bda..d6ca8fe5f 100644 --- a/Subsurface/Content/Items/Tools/tools.xml +++ b/Subsurface/Content/Items/Tools/tools.xml @@ -7,16 +7,64 @@ - + - + - + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Subsurface/IPropertyObject.cs b/Subsurface/IPropertyObject.cs index 618fad5c2..be8de376d 100644 --- a/Subsurface/IPropertyObject.cs +++ b/Subsurface/IPropertyObject.cs @@ -4,6 +4,11 @@ namespace Subsurface { interface IPropertyObject { + string Name + { + get; + } + Dictionary ObjectProperties { get; diff --git a/Subsurface/Items/Components/Container.cs b/Subsurface/Items/Components/Container.cs index e1ebdd5a4..63c6a12db 100644 --- a/Subsurface/Items/Components/Container.cs +++ b/Subsurface/Items/Components/Container.cs @@ -162,7 +162,7 @@ namespace Subsurface.Items.Components { base.Draw(spriteBatch); - if (hideItems) return; + if (hideItems || (item.body!=null && !item.body.Enabled)) return; Vector2 transformedItemPos = itemPos; Vector2 transformedItemInterval = itemInterval; @@ -175,7 +175,7 @@ namespace Subsurface.Items.Components } else { - item.body.Enabled = true; + //item.body.Enabled = true; Matrix transform = Matrix.CreateRotationZ(item.body.Rotation); diff --git a/Subsurface/Items/Components/Controller.cs b/Subsurface/Items/Components/Controller.cs index e5b455468..1e4f2c072 100644 --- a/Subsurface/Items/Components/Controller.cs +++ b/Subsurface/Items/Components/Controller.cs @@ -134,14 +134,14 @@ namespace Subsurface.Items.Components } } - public override bool Use(Character activator = null) + public override bool Use(float deltaTime, Character activator = null) { character = activator; foreach (MapEntity e in item.linkedTo) { Item linkedItem = e as Item; if (linkedItem == null) continue; - linkedItem.Use(activator); + linkedItem.Use(deltaTime, activator); } ApplyStatusEffects(ActionType.OnUse, 1.0f, character); @@ -149,7 +149,7 @@ namespace Subsurface.Items.Components return true; } - public override void SecondaryUse(Character character = null) + public override void SecondaryUse(float deltaTime, Character character = null) { if (character == null) return; @@ -157,7 +157,7 @@ namespace Subsurface.Items.Components { Item linkedItem = e as Item; if (linkedItem == null) continue; - linkedItem.SecondaryUse(character); + linkedItem.SecondaryUse(deltaTime, character); } } diff --git a/Subsurface/Items/Components/Door.cs b/Subsurface/Items/Components/Door.cs index bc212d7f5..69d84c23a 100644 --- a/Subsurface/Items/Components/Door.cs +++ b/Subsurface/Items/Components/Door.cs @@ -19,6 +19,21 @@ namespace Subsurface.Items.Components ConvexHull convexHull; ConvexHull convexHull2; + private float stuck; + public float Stuck + { + get { return stuck; } + set + { + if (isOpen) return; + stuck = MathHelper.Clamp(value, 0.0f, 100.0f); + if (stuck == 0.0f) isStuck = false; + if (stuck == 100.0f) isStuck = true; + } + } + + private bool isStuck; + Gap LinkedGap { get @@ -35,8 +50,9 @@ namespace Subsurface.Items.Components return linkedGap; } } - + bool isOpen; + float openState; [HasDefaultValue("0.0,0.0,0.0,0.0", false)] @@ -293,6 +309,8 @@ namespace Subsurface.Items.Components public override void ReceiveSignal(string signal, Connection connection, Item sender) { + if (isStuck) return; + if (connection.name=="toggle") { isOpen = !isOpen; diff --git a/Subsurface/Items/Components/Holdable.cs b/Subsurface/Items/Components/Holdable.cs index 84b375006..47d054880 100644 --- a/Subsurface/Items/Components/Holdable.cs +++ b/Subsurface/Items/Components/Holdable.cs @@ -166,7 +166,7 @@ namespace Subsurface.Items.Components return true; } - public override bool Use(Character character = null) + public override bool Use(float deltaTime, Character character = null) { if (!attachable || item.body==null) return false; @@ -213,7 +213,7 @@ namespace Subsurface.Items.Components public override void OnMapLoaded() { - if (attached) Use(); + if (attached) Use(1.0f); } } } diff --git a/Subsurface/Items/Components/ItemComponent.cs b/Subsurface/Items/Components/ItemComponent.cs index c7d41824d..9e79166f7 100644 --- a/Subsurface/Items/Components/ItemComponent.cs +++ b/Subsurface/Items/Components/ItemComponent.cs @@ -146,6 +146,7 @@ namespace Subsurface switch (subElement.Name.ToString().ToLower()) { case "requireditem": + case "requireditems": RelatedItem ri = RelatedItem.Load(subElement); if (ri != null) requiredItems.Add(ri); break; @@ -264,13 +265,13 @@ namespace Subsurface //called when the item is equipped and left mouse button is pressed //returns true if the item was used succesfully (not out of ammo, reloading, etc) - public virtual bool Use(Character character = null) + public virtual bool Use(float deltaTime, Character character = null) { return false; } //called when the item is equipped and right mouse button is pressed - public virtual void SecondaryUse(Character character = null) { } + public virtual void SecondaryUse(float deltaTime, Character character = null) { } //called when the item is placed in a "limbslot" public virtual void Equip(Character character) { } @@ -347,12 +348,21 @@ namespace Subsurface return true; } - public void ApplyStatusEffects(ActionType type, float deltaTime, Character character = null, Limb limb = null) + public void ApplyStatusEffects(ActionType type, float deltaTime, Character character = null) { foreach (StatusEffect effect in statusEffects) { if (effect.type != type) continue; - item.ApplyStatusEffect(effect, type, deltaTime, character, limb); + item.ApplyStatusEffect(effect, type, deltaTime, character); + } + } + + public void ApplyStatusEffects(ActionType type, float deltaTime, Vector2 position, IPropertyObject target) + { + foreach (StatusEffect effect in statusEffects) + { + if (effect.type != type) continue; + effect.Apply(type, deltaTime, position, target); } } diff --git a/Subsurface/Items/Components/Pickable.cs b/Subsurface/Items/Components/Pickable.cs index c466126aa..2815ecd97 100644 --- a/Subsurface/Items/Components/Pickable.cs +++ b/Subsurface/Items/Components/Pickable.cs @@ -48,7 +48,7 @@ namespace Subsurface.Items.Components if (!picker.HasSelectedItem(item) && item.body!=null) item.body.Enabled = false; this.picker = picker; - ApplyStatusEffects(ActionType.OnPicked, 1.0f, picker, null); + ApplyStatusEffects(ActionType.OnPicked, 1.0f, picker); //foreach (StatusEffect effect in item.Prefab.statusEffects) //{ diff --git a/Subsurface/Items/Components/Projectile.cs b/Subsurface/Items/Components/Projectile.cs index 8857103a7..6a2f04b70 100644 --- a/Subsurface/Items/Components/Projectile.cs +++ b/Subsurface/Items/Components/Projectile.cs @@ -75,11 +75,11 @@ namespace Subsurface.Items.Components //} - public override bool Use(Character character = null) + public override bool Use(float deltaTime, Character character = null) { if (character != null && !characterUsable) return false; - ApplyStatusEffects(ActionType.OnUse, 1.0f, character); + //ApplyStatusEffects(ActionType.OnUse, 1.0f, character); Debug.WriteLine(item.body.Rotation); diff --git a/Subsurface/Items/Components/RangedWeapon.cs b/Subsurface/Items/Components/RangedWeapon.cs index c82aeb818..5affe69de 100644 --- a/Subsurface/Items/Components/RangedWeapon.cs +++ b/Subsurface/Items/Components/RangedWeapon.cs @@ -14,10 +14,11 @@ namespace Subsurface.Items.Components private Vector2 barrelPos; - //[Initable(new Vector2(0.0f, 0.0f))] - public Vector2 BarrelPos + [HasDefaultValue("0.0,0.0", false)] + public string BarrelPos { - get { return new Vector2(barrelPos.X * item.body.Dir, barrelPos.Y); } + get { return ToolBox.Vector2ToString(ConvertUnits.ToDisplayUnits(barrelPos)); } + set { barrelPos = ConvertUnits.ToSimUnits(ToolBox.ParseToVector2(value)); } } public Vector2 TransformedBarrelPos @@ -25,7 +26,9 @@ namespace Subsurface.Items.Components get { Matrix bodyTransform = Matrix.CreateRotationZ(item.body.Rotation); - return (Vector2.Transform(BarrelPos, bodyTransform) + item.body.Position); + Vector2 flippedPos = barrelPos; + if (item.body.Dir < 0.0f) flippedPos.X = -flippedPos.X; + return (Vector2.Transform(flippedPos, bodyTransform) + item.body.Position); } } @@ -47,7 +50,7 @@ namespace Subsurface.Items.Components } } - public override bool Use(Character character = null) + public override bool Use(float deltaTime, Character character = null) { if (character == null) return false; if (!character.SecondaryKeyDown.State || reload > 0.0f) return false; @@ -78,7 +81,7 @@ namespace Subsurface.Items.Components projectile.SetTransform(TransformedBarrelPos, (item.body.Dir == 1.0f) ? item.body.Rotation : item.body.Rotation - MathHelper.Pi); - projectile.Use(); + projectile.Use(deltaTime); item.RemoveContained(projectile); //recoil diff --git a/Subsurface/Items/Components/RepairTool.cs b/Subsurface/Items/Components/RepairTool.cs index de5cfc1bd..37049cb64 100644 --- a/Subsurface/Items/Components/RepairTool.cs +++ b/Subsurface/Items/Components/RepairTool.cs @@ -5,6 +5,7 @@ using FarseerPhysics; using FarseerPhysics.Dynamics; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; +using Subsurface.Particles; namespace Subsurface.Items.Components { @@ -16,29 +17,49 @@ namespace Subsurface.Items.Components Vector2 pickedPosition; + Vector2 barrelPos; + float structureFixAmount, limbFixAmount; - [HasDefaultValue(100.0f, false)] + [HasDefaultValue(0.0f, false)] public float Range { get { return ConvertUnits.ToDisplayUnits(range); } set { range = ConvertUnits.ToSimUnits(value); } } - [HasDefaultValue(1.0f, false)] + [HasDefaultValue(0.0f, false)] public float StructureFixAmount { get { return structureFixAmount; } set { structureFixAmount = value; } } - [HasDefaultValue(1.0f, false)] + [HasDefaultValue(0.0f, false)] public float LimbFixAmount { get { return limbFixAmount; } set { limbFixAmount = value; } } + [HasDefaultValue("0.0,0.0", false)] + public string BarrelPos + { + get { return ToolBox.Vector2ToString(ConvertUnits.ToDisplayUnits(barrelPos)); } + set { barrelPos = ConvertUnits.ToSimUnits(ToolBox.ParseToVector2(value)); } + } + + public Vector2 TransformedBarrelPos + { + get + { + Matrix bodyTransform = Matrix.CreateRotationZ(item.body.Rotation); + Vector2 flippedPos = barrelPos; + if (item.body.Dir < 0.0f) flippedPos.X = -flippedPos.X; + return (Vector2.Transform(flippedPos, bodyTransform) + item.body.Position); + } + } + public RepairTool(Item item, XElement element) : base(item, element) { @@ -69,16 +90,18 @@ namespace Subsurface.Items.Components //} - public override bool Use(Character character = null) + public override bool Use(float deltaTime, Character character = null) { if (character == null) return false; + isActive = true; + Vector2 targetPosition = item.body.Position; //targetPosition = targetPosition.X, -targetPosition.Y); targetPosition += new Vector2( - (float)Math.Cos(item.body.Rotation) * range, - (float)Math.Sin(item.body.Rotation) * range) * item.body.Dir; + (float)Math.Cos(item.body.Rotation), + (float)Math.Sin(item.body.Rotation)) * range * item.body.Dir; List ignoredBodies = new List(); foreach (Limb limb in character.animController.limbs) @@ -86,13 +109,12 @@ namespace Subsurface.Items.Components ignoredBodies.Add(limb.body.FarseerBody); } - - Body targetBody = Map.PickBody(item.body.Position, targetPosition, ignoredBodies); + Body targetBody = Map.PickBody(TransformedBarrelPos, targetPosition, ignoredBodies); pickedPosition = Map.LastPickedPosition; - if (targetBody==null || targetBody.UserData==null) return false; + if (targetBody==null || targetBody.UserData==null) return true; - ApplyStatusEffects(ActionType.OnUse, 1.0f, character); + //ApplyStatusEffects(ActionType.OnUse, 1.0f, character); Structure targetStructure; @@ -100,18 +122,14 @@ namespace Subsurface.Items.Components Item targetItem; if ((targetStructure = (targetBody.UserData as Structure)) != null) { - if (!fixableEntities.Contains(targetStructure.Name)) return false; + if (!fixableEntities.Contains(targetStructure.Name)) return true; int sectionIndex = targetStructure.FindSectionIndex(ConvertUnits.ToDisplayUnits(pickedPosition)); - if (sectionIndex < 0) return false; + if (sectionIndex < 0) return true; targetStructure.HighLightSection(sectionIndex); - if (character.SecondaryKeyDown.State) - { - targetStructure.AddDamage(sectionIndex, -structureFixAmount); - isActive = true; - } + } else if ((targetLimb = (targetBody.UserData as Limb)) != null) @@ -119,26 +137,55 @@ namespace Subsurface.Items.Components if (character.SecondaryKeyDown.State) { targetLimb.character.Health += limbFixAmount; - isActive = true; + //isActive = true; } } - else if ((targetItem = (targetBody.UserData as Item)) !=null) + else if ((targetItem = (targetBody.UserData as Item)) != null) { - targetItem.Condition -= structureFixAmount; + //targetItem.Condition -= structureFixAmount; + targetItem.IsHighlighted = true; + + foreach (StatusEffect effect in statusEffects) + { + if (Array.IndexOf(effect.TargetNames, targetItem.Name) == -1) continue; + effect.Apply(ActionType.OnUse, deltaTime, targetItem); + //targetItem.ApplyStatusEffect(effect, ActionType.OnUse, deltaTime); + } + //ApplyStatusEffects(ActionType.OnUse, 1.0f, null, targ); } + //if (character.SecondaryKeyDown.State) + //{ + // IPropertyObject propertyObject = targetBody.UserData as IPropertyObject; + // if (propertyObject!=null) ApplyStatusEffects(ActionType.OnUse, 1.0f, item.SimPosition, propertyObject); + // //isActive = true; + //} + return true; } + public override void Update(float deltaTime, Camera cam) + { + base.Update(deltaTime, cam); + + //isActive = true; + } + public override void Draw(SpriteBatch spriteBatch) { if (!isActive) return; - Vector2 startPos = ConvertUnits.ToDisplayUnits(item.body.Position); - Vector2 endPos = ConvertUnits.ToDisplayUnits(pickedPosition); - endPos = new Vector2(endPos.X + Game1.localRandom.Next(-2, 2), endPos.Y + Game1.localRandom.Next(-2, 2)); + Vector2 particleSpeed = new Vector2( + (float)Math.Cos(item.body.Rotation), + (float)Math.Sin(item.body.Rotation)) *item.body.Dir * 5.0f; - GUI.DrawLine(spriteBatch, startPos, endPos, Color.Orange, 0.0f); + Game1.particleManager.CreateParticle("weld", TransformedBarrelPos, particleSpeed); + + //Vector2 startPos = ConvertUnits.ToDisplayUnits(item.body.Position); + //Vector2 endPos = ConvertUnits.ToDisplayUnits(pickedPosition); + //endPos = new Vector2(endPos.X + Game1.localRandom.Next(-2, 2), endPos.Y + Game1.localRandom.Next(-2, 2)); + + //GUI.DrawLine(spriteBatch, startPos, endPos, Color.Orange, 0.0f); isActive = false; } diff --git a/Subsurface/Items/Components/Rope.cs b/Subsurface/Items/Components/Rope.cs index 2d89415d5..0f541e78a 100644 --- a/Subsurface/Items/Components/Rope.cs +++ b/Subsurface/Items/Components/Rope.cs @@ -40,8 +40,8 @@ namespace Subsurface.Items.Components { Vector2 barrelPos = Vector2.Zero; - RangedWeapon weapon = item.GetComponent(); - if (weapon != null) barrelPos = weapon.BarrelPos; + //RangedWeapon weapon = item.GetComponent(); + //if (weapon != null) barrelPos = weapon.barrelPos; return barrelPos; } @@ -120,7 +120,7 @@ namespace Subsurface.Items.Components } - public override void SecondaryUse(Character character = null) + public override void SecondaryUse(float deltaTime, Character character = null) { if (reload > 0.0f) return; diff --git a/Subsurface/Items/Components/Signal/Wire.cs b/Subsurface/Items/Components/Signal/Wire.cs index ced4a556c..56553d701 100644 --- a/Subsurface/Items/Components/Signal/Wire.cs +++ b/Subsurface/Items/Components/Signal/Wire.cs @@ -142,7 +142,7 @@ namespace Subsurface.Items.Components //} } - public override bool Use(Character character = null) + public override bool Use(float deltaTime, Character character = null) { if (newNodePos!= Vector2.Zero && nodes.Count>0 && Vector2.Distance(newNodePos, nodes[nodes.Count - 1]) > nodeDistance) { @@ -155,7 +155,7 @@ namespace Subsurface.Items.Components return true; } - public override void SecondaryUse(Character character = null) + public override void SecondaryUse(float deltaTime, Character character = null) { if (nodes.Count > 1) { diff --git a/Subsurface/Items/Components/Throwable.cs b/Subsurface/Items/Components/Throwable.cs index a17372f1c..78faa506f 100644 --- a/Subsurface/Items/Components/Throwable.cs +++ b/Subsurface/Items/Components/Throwable.cs @@ -25,7 +25,7 @@ namespace Subsurface.Items.Components //throwForce = ToolBox.GetAttributeFloat(element, "throwforce", 1.0f); } - public override bool Use(Character character = null) + public override bool Use(float deltaTime, Character character = null) { if (character == null) return false; if (!character.SecondaryKeyDown.State || throwing) return false; @@ -36,7 +36,7 @@ namespace Subsurface.Items.Components return true; } - public override void SecondaryUse(Character character = null) + public override void SecondaryUse(float deltaTime, Character character = null) { if (throwing) return; throwPos = 0.25f; diff --git a/Subsurface/Items/Components/Turret.cs b/Subsurface/Items/Components/Turret.cs index aca69bcdf..a5d5d3d31 100644 --- a/Subsurface/Items/Components/Turret.cs +++ b/Subsurface/Items/Components/Turret.cs @@ -123,7 +123,7 @@ namespace Subsurface.Items.Components //cam.OffsetAmount = prefab.OffsetOnSelected; } - public override void SecondaryUse(Character character = null) + public override void SecondaryUse(float deltaTime, Character character = null) { if (character == null) return; Vector2 centerPos = new Vector2(item.Rect.X + barrelPos.X, item.Rect.Y - barrelPos.Y); @@ -142,7 +142,7 @@ namespace Subsurface.Items.Components } } - public override bool Use(Character character = null) + public override bool Use(float deltaTime, Character character = null) { if (reload > 0.0f) return false; @@ -202,7 +202,7 @@ namespace Subsurface.Items.Components //if (useSounds.Count() > 0) useSounds[Game1.localRandom.Next(useSounds.Count())].Play(1.0f, 800.0f, item.body.FarseerBody); - projectileComponent.Use(); + projectileComponent.Use(deltaTime); item.RemoveContained(projectile); return true; diff --git a/Subsurface/Items/Components/Wearable.cs b/Subsurface/Items/Components/Wearable.cs index 8f59f09f6..ae3bb018f 100644 --- a/Subsurface/Items/Components/Wearable.cs +++ b/Subsurface/Items/Components/Wearable.cs @@ -119,13 +119,13 @@ namespace Subsurface.Items.Components for (int i = 0; i < limb.Length; i++) { if (limb[i] == null) continue; - ApplyStatusEffects(ActionType.OnWearing, deltaTime, picker, limb[i]); + ApplyStatusEffects(ActionType.OnWearing, deltaTime, picker); if (containedItems == null) continue; for (int j = 0; j PreserveNewest + + PreserveNewest + + + PreserveNewest + PreserveNewest @@ -400,10 +406,10 @@ PreserveNewest - + PreserveNewest - + PreserveNewest @@ -657,6 +663,7 @@ + diff --git a/Subsurface_Solution.v12.suo b/Subsurface_Solution.v12.suo index 259ad4098..248f75092 100644 Binary files a/Subsurface_Solution.v12.suo and b/Subsurface_Solution.v12.suo differ