7cc231b...69487a2
commit 69487a2a8596ac24252c12624b40b7ad7a06edb5 Author: Joonas Rikkonen <poe.regalis@gmail.com> Date: Wed Mar 20 15:50:44 2019 +0200 Fixed TargetItemComponentName comparisons in StatusEffect conditionals. Closes #1307 commit 8568bbce1a6d7d809e8e7a63509850387d6d2b91 Merge: b4bd00925 481755c1b Author: itchyOwl <lauri.harkanen@gmail.com> Date: Wed Mar 20 15:46:12 2019 +0200 Merge branch 'dev' of https://github.com/Regalis11/Barotrauma-development into dev commit b4bd0092566cb31239bc8c585d98f4949fdc57b1 Author: itchyOwl <lauri.harkanen@gmail.com> Date: Wed Mar 20 15:45:48 2019 +0200 Reinstate equipped item overrides for all item component instances. commit 481755c1b636794886a38f8503b801df89eeee7e Author: Joonas Rikkonen <poe.regalis@gmail.com> Date: Wed Mar 20 15:37:55 2019 +0200 Don't create network events in the LightComponent.IsOn setter if the round hasn't started (= when loading a game and initializing the items)
This commit is contained in:
@@ -460,14 +460,16 @@ namespace Barotrauma.Items.Components
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Load(XElement componentElement)
|
public override void ReceiveSignal(int stepsTaken, string signal, Connection connection, Item source, Character sender, float power = 0.0f, float signalStrength = 1.0f)
|
||||||
{
|
{
|
||||||
if (componentElement == null) return;
|
if (componentElement == null) return;
|
||||||
base.Load(componentElement);
|
base.Load(componentElement);
|
||||||
var prevRequiredItems = new Dictionary<RelatedItem.RelationType, List<RelatedItem>>(requiredItems);
|
var prevRequiredItems = new Dictionary<RelatedItem.RelationType, List<RelatedItem>>(requiredItems);
|
||||||
bool overrideRequiredItems = false;
|
bool overrideRequiredItems = false;
|
||||||
|
|
||||||
foreach (XElement subElement in componentElement.Elements())
|
bool wasOpen = PredictedState == null ? isOpen : PredictedState.Value;
|
||||||
|
|
||||||
|
if (connection.Name == "toggle")
|
||||||
{
|
{
|
||||||
switch (subElement.Name.ToString().ToLowerInvariant())
|
switch (subElement.Name.ToString().ToLowerInvariant())
|
||||||
{
|
{
|
||||||
@@ -475,42 +477,6 @@ namespace Barotrauma.Items.Components
|
|||||||
if (!overrideRequiredItems) requiredItems.Clear();
|
if (!overrideRequiredItems) requiredItems.Clear();
|
||||||
overrideRequiredItems = true;
|
overrideRequiredItems = true;
|
||||||
|
|
||||||
RelatedItem newRequiredItem = RelatedItem.Load(subElement, item.Name);
|
|
||||||
if (newRequiredItem == null) continue;
|
|
||||||
|
|
||||||
var prevRequiredItem = prevRequiredItems.ContainsKey(newRequiredItem.Type) ?
|
|
||||||
prevRequiredItems[newRequiredItem.Type].Find(ri => ri.JoinedIdentifiers == newRequiredItem.JoinedIdentifiers) : null;
|
|
||||||
if (prevRequiredItem != null)
|
|
||||||
{
|
|
||||||
newRequiredItem.statusEffects = prevRequiredItem.statusEffects;
|
|
||||||
newRequiredItem.Msg = prevRequiredItem.Msg;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!requiredItems.ContainsKey(newRequiredItem.Type))
|
|
||||||
{
|
|
||||||
requiredItems[newRequiredItem.Type] = new List<RelatedItem>();
|
|
||||||
}
|
|
||||||
requiredItems[newRequiredItem.Type].Add(newRequiredItem);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void ReceiveSignal(int stepsTaken, string signal, Connection connection, Item source, Character sender, float power = 0.0f, float signalStrength = 1.0f)
|
|
||||||
{
|
|
||||||
if (isStuck) return;
|
|
||||||
|
|
||||||
bool wasOpen = PredictedState == null ? isOpen : PredictedState.Value;
|
|
||||||
|
|
||||||
if (connection.Name == "toggle")
|
|
||||||
{
|
|
||||||
SetState(!wasOpen, false, true);
|
|
||||||
}
|
|
||||||
else if (connection.Name == "set_state")
|
|
||||||
{
|
|
||||||
SetState(signal != "0", false, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
#if SERVER
|
#if SERVER
|
||||||
if (sender != null && wasOpen != isOpen)
|
if (sender != null && wasOpen != isOpen)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -640,6 +640,38 @@ namespace Barotrauma.Items.Components
|
|||||||
Msg = msg;
|
Msg = msg;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
var prevRequiredItems = new Dictionary<RelatedItem.RelationType, List<RelatedItem>>(requiredItems);
|
||||||
|
bool overrideRequiredItems = false;
|
||||||
|
|
||||||
|
foreach (XElement subElement in componentElement.Elements())
|
||||||
|
{
|
||||||
|
foreach (InputType inputType in Enum.GetValues(typeof(InputType)))
|
||||||
|
{
|
||||||
|
case "requireditem":
|
||||||
|
if (!overrideRequiredItems) requiredItems.Clear();
|
||||||
|
overrideRequiredItems = true;
|
||||||
|
|
||||||
|
RelatedItem newRequiredItem = RelatedItem.Load(subElement, item.Name);
|
||||||
|
if (newRequiredItem == null) continue;
|
||||||
|
|
||||||
|
var prevRequiredItem = prevRequiredItems.ContainsKey(newRequiredItem.Type) ?
|
||||||
|
prevRequiredItems[newRequiredItem.Type].Find(ri => ri.JoinedIdentifiers == newRequiredItem.JoinedIdentifiers) : null;
|
||||||
|
if (prevRequiredItem != null)
|
||||||
|
{
|
||||||
|
newRequiredItem.statusEffects = prevRequiredItem.statusEffects;
|
||||||
|
newRequiredItem.Msg = prevRequiredItem.Msg;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!requiredItems.ContainsKey(newRequiredItem.Type))
|
||||||
|
{
|
||||||
|
requiredItems[newRequiredItem.Type] = new List<RelatedItem>();
|
||||||
|
}
|
||||||
|
requiredItems[newRequiredItem.Type].Add(newRequiredItem);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
Msg = msg;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// Only door override required items
|
// Only door override required items
|
||||||
//var prevRequiredItems = new Dictionary<RelatedItem.RelationType, List<RelatedItem>>(requiredItems);
|
//var prevRequiredItems = new Dictionary<RelatedItem.RelationType, List<RelatedItem>>(requiredItems);
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ namespace Barotrauma.Items.Components
|
|||||||
|
|
||||||
IsActive = value;
|
IsActive = value;
|
||||||
#if SERVER
|
#if SERVER
|
||||||
if (GameMain.Server != null) item.CreateServerEvent(this);
|
if (GameMain.Server != null && GameMain.Server.GameStarted) { item.CreateServerEvent(this); }
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -467,7 +467,7 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
if (!string.IsNullOrEmpty(pc.TargetItemComponentName))
|
if (!string.IsNullOrEmpty(pc.TargetItemComponentName))
|
||||||
{
|
{
|
||||||
if (!(target is ItemComponent ic) || ic.GetType().ToString() != pc.TargetItemComponentName)
|
if (!(target is ItemComponent ic) || ic.Name != pc.TargetItemComponentName)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -484,7 +484,7 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
if (!string.IsNullOrEmpty(pc.TargetItemComponentName))
|
if (!string.IsNullOrEmpty(pc.TargetItemComponentName))
|
||||||
{
|
{
|
||||||
if (!(target is ItemComponent ic) || ic.GetType().ToString() != pc.TargetItemComponentName)
|
if (!(target is ItemComponent ic) || ic.Name != pc.TargetItemComponentName)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user