diff --git a/Barotrauma/BarotraumaClient/Source/Items/Components/StatusHUD.cs b/Barotrauma/BarotraumaClient/Source/Items/Components/StatusHUD.cs
index 148e1a4e3..9bc1f2af4 100644
--- a/Barotrauma/BarotraumaClient/Source/Items/Components/StatusHUD.cs
+++ b/Barotrauma/BarotraumaClient/Source/Items/Components/StatusHUD.cs
@@ -115,6 +115,7 @@ namespace Barotrauma.Items.Components
if (target.IsDead)
{
texts.Add("Deceased");
+ texts.Add("Cause of Death: " + target.CauseOfDeath.ToString());
}
else
{
diff --git a/Barotrauma/BarotraumaShared/Content/Items/Medical/medical.xml b/Barotrauma/BarotraumaShared/Content/Items/Medical/medical.xml
index ff3a5885d..8f1521911 100644
--- a/Barotrauma/BarotraumaShared/Content/Items/Medical/medical.xml
+++ b/Barotrauma/BarotraumaShared/Content/Items/Medical/medical.xml
@@ -175,7 +175,6 @@
-
@@ -502,7 +501,7 @@
category="Material"
spritecolor="1.0,0.3,0.3,1.0"
Tags="smallitem,chem,medical"
- description="A devious poison with a delayed effect.">
+ description="A devious poison with a delayed effect. Requires higher dosage to be lethal.">
@@ -515,7 +514,7 @@
-
+
diff --git a/Barotrauma/BarotraumaShared/Source/Characters/Character.cs b/Barotrauma/BarotraumaShared/Source/Characters/Character.cs
index 6819a412f..9193e6813 100644
--- a/Barotrauma/BarotraumaShared/Source/Characters/Character.cs
+++ b/Barotrauma/BarotraumaShared/Source/Characters/Character.cs
@@ -371,6 +371,7 @@ namespace Barotrauma
{
if (!MathUtils.IsValid(value)) return;
if (GameMain.Client != null) return;
+ if (!DoesBleed) return;
float newBleeding = MathHelper.Clamp(value, 0.0f, 5.0f);
if (newBleeding == bleeding) return;
@@ -1585,8 +1586,11 @@ namespace Barotrauma
if (needsAir) UpdateOxygen(deltaTime);
- Health -= bleeding * deltaTime;
- Bleeding -= BleedingDecreaseSpeed * deltaTime;
+ if (DoesBleed)
+ {
+ Health -= bleeding * deltaTime;
+ Bleeding -= BleedingDecreaseSpeed * deltaTime;
+ }
if (health <= minHealth) Kill(CauseOfDeath.Bloodloss);
diff --git a/Barotrauma/BarotraumaShared/Source/Characters/DelayedEffect.cs b/Barotrauma/BarotraumaShared/Source/Characters/DelayedEffect.cs
index e0d68a6be..1b5a90848 100644
--- a/Barotrauma/BarotraumaShared/Source/Characters/DelayedEffect.cs
+++ b/Barotrauma/BarotraumaShared/Source/Characters/DelayedEffect.cs
@@ -3,23 +3,19 @@ using System.Xml.Linq;
namespace Barotrauma
{
+ class DelayedListElement
+ {
+ public DelayedEffect Parent;
+ public Entity Entity;
+ public List Targets;
+ public float StartTimer;
+ }
class DelayedEffect : StatusEffect
{
- public static List List = new List();
+ public static List List = new List();
private float delay;
- private float startTimer;
-
- private Entity entity;
-
- private List targets;
-
- public float StartTimer
- {
- get { return startTimer; }
- }
-
public DelayedEffect(XElement element)
: base(element)
{
@@ -29,24 +25,28 @@ namespace Barotrauma
public override void Apply(ActionType type, float deltaTime, Entity entity, List targets)
{
if (this.type != type) return;
-
- startTimer = delay;
- this.entity = entity;
+ DelayedListElement element = new DelayedListElement();
+ element.Parent = this;
+ element.StartTimer = delay;
+ element.Entity = entity;
+ element.Targets = targets;
- this.targets = targets;
-
- List.Add(this);
+ List.Add(element);
}
- public void Update(float deltaTime)
+ public static void Update(float deltaTime)
{
- startTimer -= deltaTime;
+ for (int i = DelayedEffect.List.Count - 1; i >= 0; i--)
+ {
+ DelayedListElement element = DelayedEffect.List[i];
- if (startTimer > 0.0f) return;
+ element.StartTimer -= deltaTime;
- base.Apply(1.0f, entity, targets);
- List.Remove(this);
+ if (element.StartTimer > 0.0f) continue;
+
+ element.Parent.Apply(1.0f, element.Entity, element.Targets);
+ List.Remove(element);
+ }
}
-
}
-}
+}
\ No newline at end of file
diff --git a/Barotrauma/BarotraumaShared/Source/Characters/StatusEffect.cs b/Barotrauma/BarotraumaShared/Source/Characters/StatusEffect.cs
index 1ef9c181f..af6bac60f 100644
--- a/Barotrauma/BarotraumaShared/Source/Characters/StatusEffect.cs
+++ b/Barotrauma/BarotraumaShared/Source/Characters/StatusEffect.cs
@@ -190,7 +190,7 @@ namespace Barotrauma
}
}
- private bool HasRequiredItems(Entity entity)
+ public virtual bool HasRequiredItems(Entity entity)
{
if (requiredItems == null) return true;
foreach (RelatedItem requiredItem in requiredItems)
@@ -218,7 +218,7 @@ namespace Barotrauma
List targets = new List();
targets.Add(target);
- Apply(deltaTime, entity, targets);
+ Apply(type, deltaTime, entity, targets);
}
public virtual void Apply(ActionType type, float deltaTime, Entity entity, List targets)
@@ -359,10 +359,7 @@ namespace Barotrauma
public static void UpdateAll(float deltaTime)
{
- for (int i = DelayedEffect.List.Count-1; i>= 0; i--)
- {
- DelayedEffect.List[i].Update(deltaTime);
- }
+ DelayedEffect.Update(deltaTime);
}
public static void StopAll()