rebase to origin/unstable-tests
This commit is contained in:
@@ -312,7 +312,7 @@ namespace Barotrauma
|
|||||||
|
|
||||||
public void DrawForeground(SpriteBatch spriteBatch)
|
public void DrawForeground(SpriteBatch spriteBatch)
|
||||||
{
|
{
|
||||||
if (Character is null || GameMain.IsSingleplayer) { return; }
|
if (Character is null || !(GameMain.GameSession?.Campaign is MultiPlayerCampaign)) { return; }
|
||||||
const int million = 1000000;
|
const int million = 1000000;
|
||||||
int xfraction = (int)(HUDLayoutSettings.BottomRightInfoArea.Width * 0.2f);
|
int xfraction = (int)(HUDLayoutSettings.BottomRightInfoArea.Width * 0.2f);
|
||||||
int yoffset = GUI.IntScale(6);
|
int yoffset = GUI.IntScale(6);
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<RootNamespace>Barotrauma</RootNamespace>
|
<RootNamespace>Barotrauma</RootNamespace>
|
||||||
<Authors>FakeFish, Undertow Games</Authors>
|
<Authors>FakeFish, Undertow Games</Authors>
|
||||||
<Product>Barotrauma</Product>
|
<Product>Barotrauma</Product>
|
||||||
<Version>0.17.10.0</Version>
|
<Version>0.17.11.0</Version>
|
||||||
<Copyright>Copyright © FakeFish 2018-2022</Copyright>
|
<Copyright>Copyright © FakeFish 2018-2022</Copyright>
|
||||||
<Platforms>AnyCPU;x64</Platforms>
|
<Platforms>AnyCPU;x64</Platforms>
|
||||||
<AssemblyName>Barotrauma</AssemblyName>
|
<AssemblyName>Barotrauma</AssemblyName>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<RootNamespace>Barotrauma</RootNamespace>
|
<RootNamespace>Barotrauma</RootNamespace>
|
||||||
<Authors>FakeFish, Undertow Games</Authors>
|
<Authors>FakeFish, Undertow Games</Authors>
|
||||||
<Product>Barotrauma</Product>
|
<Product>Barotrauma</Product>
|
||||||
<Version>0.17.10.0</Version>
|
<Version>0.17.11.0</Version>
|
||||||
<Copyright>Copyright © FakeFish 2018-2022</Copyright>
|
<Copyright>Copyright © FakeFish 2018-2022</Copyright>
|
||||||
<Platforms>AnyCPU;x64</Platforms>
|
<Platforms>AnyCPU;x64</Platforms>
|
||||||
<AssemblyName>Barotrauma</AssemblyName>
|
<AssemblyName>Barotrauma</AssemblyName>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<RootNamespace>Barotrauma</RootNamespace>
|
<RootNamespace>Barotrauma</RootNamespace>
|
||||||
<Authors>FakeFish, Undertow Games</Authors>
|
<Authors>FakeFish, Undertow Games</Authors>
|
||||||
<Product>Barotrauma</Product>
|
<Product>Barotrauma</Product>
|
||||||
<Version>0.17.10.0</Version>
|
<Version>0.17.11.0</Version>
|
||||||
<Copyright>Copyright © FakeFish 2018-2022</Copyright>
|
<Copyright>Copyright © FakeFish 2018-2022</Copyright>
|
||||||
<Platforms>AnyCPU;x64</Platforms>
|
<Platforms>AnyCPU;x64</Platforms>
|
||||||
<AssemblyName>Barotrauma</AssemblyName>
|
<AssemblyName>Barotrauma</AssemblyName>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<RootNamespace>Barotrauma</RootNamespace>
|
<RootNamespace>Barotrauma</RootNamespace>
|
||||||
<Authors>FakeFish, Undertow Games</Authors>
|
<Authors>FakeFish, Undertow Games</Authors>
|
||||||
<Product>Barotrauma Dedicated Server</Product>
|
<Product>Barotrauma Dedicated Server</Product>
|
||||||
<Version>0.17.10.0</Version>
|
<Version>0.17.11.0</Version>
|
||||||
<Copyright>Copyright © FakeFish 2018-2022</Copyright>
|
<Copyright>Copyright © FakeFish 2018-2022</Copyright>
|
||||||
<Platforms>AnyCPU;x64</Platforms>
|
<Platforms>AnyCPU;x64</Platforms>
|
||||||
<AssemblyName>DedicatedServer</AssemblyName>
|
<AssemblyName>DedicatedServer</AssemblyName>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<RootNamespace>Barotrauma</RootNamespace>
|
<RootNamespace>Barotrauma</RootNamespace>
|
||||||
<Authors>FakeFish, Undertow Games</Authors>
|
<Authors>FakeFish, Undertow Games</Authors>
|
||||||
<Product>Barotrauma Dedicated Server</Product>
|
<Product>Barotrauma Dedicated Server</Product>
|
||||||
<Version>0.17.10.0</Version>
|
<Version>0.17.11.0</Version>
|
||||||
<Copyright>Copyright © FakeFish 2018-2022</Copyright>
|
<Copyright>Copyright © FakeFish 2018-2022</Copyright>
|
||||||
<Platforms>AnyCPU;x64</Platforms>
|
<Platforms>AnyCPU;x64</Platforms>
|
||||||
<AssemblyName>DedicatedServer</AssemblyName>
|
<AssemblyName>DedicatedServer</AssemblyName>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<RootNamespace>Barotrauma</RootNamespace>
|
<RootNamespace>Barotrauma</RootNamespace>
|
||||||
<Authors>FakeFish, Undertow Games</Authors>
|
<Authors>FakeFish, Undertow Games</Authors>
|
||||||
<Product>Barotrauma Dedicated Server</Product>
|
<Product>Barotrauma Dedicated Server</Product>
|
||||||
<Version>0.17.10.0</Version>
|
<Version>0.17.11.0</Version>
|
||||||
<Copyright>Copyright © FakeFish 2018-2022</Copyright>
|
<Copyright>Copyright © FakeFish 2018-2022</Copyright>
|
||||||
<Platforms>AnyCPU;x64</Platforms>
|
<Platforms>AnyCPU;x64</Platforms>
|
||||||
<AssemblyName>DedicatedServer</AssemblyName>
|
<AssemblyName>DedicatedServer</AssemblyName>
|
||||||
|
|||||||
@@ -1,5 +1,9 @@
|
|||||||
local allPackages = ContentPackageManager.AllPackages
|
local LUA_MOD_REQUIRE_PATH = "/Lua/?.lua"
|
||||||
local localPackages = ContentPackageManager.LocalPackages
|
local LUA_MOD_AUTORUN_PATH = "/Lua/Autorun"
|
||||||
|
local LUA_MOD_FORCEDAUTORUN_PATH = "/Lua/ForcedAutorun"
|
||||||
|
|
||||||
|
local allPackages = ContentPackageManager.AllPackages
|
||||||
|
local localPackages = ContentPackageManager.LocalPackages
|
||||||
local enabledPackages = ContentPackageManager.EnabledPackages.All
|
local enabledPackages = ContentPackageManager.EnabledPackages.All
|
||||||
|
|
||||||
local function EndsWith(str, suffix)
|
local function EndsWith(str, suffix)
|
||||||
@@ -30,52 +34,111 @@ local function RunFolder(folder, rootFolder, package)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function assertTypes(expectedTypes, ...)
|
||||||
|
local args = table.pack(...)
|
||||||
|
assert(
|
||||||
|
#args == #expectedTypes,
|
||||||
|
string.format(
|
||||||
|
"Assertion failed: incorrect number of args\n\texpected = %s\n\tgot = %s",
|
||||||
|
#expectedTypes,
|
||||||
|
#args
|
||||||
|
)
|
||||||
|
)
|
||||||
|
for i = 1, #args do
|
||||||
|
local arg = args[i]
|
||||||
|
local expectedType = expectedTypes[i]
|
||||||
|
assert(
|
||||||
|
type(arg) == expectedType,
|
||||||
|
string.format(
|
||||||
|
"Assertion failed: incorrect argument type (arg #%d)\n\texpected = %s\n\tgot = %s",
|
||||||
|
i,
|
||||||
|
expectedType,
|
||||||
|
type(arg)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
for contentPackage in enabledPackages do
|
local function ExecutionQueue()
|
||||||
if contentPackage then
|
local queue = {}
|
||||||
local d = contentPackage.Path:gsub("\\", "/")
|
local function processQueueFIFO()
|
||||||
d = d:gsub("/filelist.xml", "")
|
while queue[1] ~= nil do
|
||||||
|
RunFolder(
|
||||||
|
table.unpack(
|
||||||
|
table.remove(queue)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local function queueExecutionFIFO(...)
|
||||||
|
assertTypes(
|
||||||
|
{ 'string', 'string', 'userdata' },
|
||||||
|
...
|
||||||
|
)
|
||||||
|
table.insert(
|
||||||
|
queue,
|
||||||
|
table.pack(...)
|
||||||
|
)
|
||||||
|
end
|
||||||
|
return queueExecutionFIFO, processQueueFIFO
|
||||||
|
end
|
||||||
|
|
||||||
table.insert(package.path, (d .. "/Lua/?.lua"))
|
local queueAutorun, processAutorun = ExecutionQueue()
|
||||||
|
local queueForcedAutorun, processForcedAutorun = ExecutionQueue()
|
||||||
|
|
||||||
if File.DirectoryExists(d .. "/Lua/Autorun") then
|
local function processPackages(packages, fn)
|
||||||
RunFolder(d .. "/Lua/Autorun", d, contentPackage)
|
for pkg in packages do
|
||||||
|
if pkg then
|
||||||
|
local pkgPath = pkg.Path
|
||||||
|
:gsub("\\", "/")
|
||||||
|
:gsub("/filelist.xml", "")
|
||||||
|
fn(pkg, pkgPath)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
processPackages(
|
||||||
|
enabledPackages,
|
||||||
|
function(pkg, pkgPath)
|
||||||
|
table.insert(package.path, pkgPath .. LUA_MOD_REQUIRE_PATH)
|
||||||
|
local autorunPath = pkgPath .. LUA_MOD_AUTORUN_PATH
|
||||||
|
if File.DirectoryExists(autorunPath) then
|
||||||
|
queueAutorun(autorunPath, pkgPath, pkg)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
)
|
||||||
|
|
||||||
-- we don't want to execute workshop ForcedAutorun if we have a local Package
|
-- we don't want to execute workshop ForcedAutorun if we have a local Package
|
||||||
local executedLocalPackages = {}
|
local executedLocalPackages = {}
|
||||||
|
|
||||||
for contentPackage in localPackages do
|
processPackages(
|
||||||
if contentPackage then
|
localPackages,
|
||||||
local d = contentPackage.Path:gsub("\\", "/")
|
function(pkg, pkgPath)
|
||||||
d = d:gsub("/filelist.xml", "")
|
table.insert(package.path, pkgPath .. LUA_MOD_REQUIRE_PATH)
|
||||||
|
local forcedAutorunPath = pkgPath .. LUA_MOD_FORCEDAUTORUN_PATH
|
||||||
table.insert(package.path, (d .. "/Lua/?.lua"))
|
if File.DirectoryExists(forcedAutorunPath) then
|
||||||
|
queueForcedAutorun(forcedAutorunPath, pkgPath, pkg)
|
||||||
if File.DirectoryExists(d .. "/Lua/ForcedAutorun") then
|
executedLocalPackages[pkg.Name] = true
|
||||||
RunFolder(d .. "/Lua/ForcedAutorun", d, contentPackage)
|
|
||||||
|
|
||||||
executedLocalPackages[contentPackage.Name] = true
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
)
|
||||||
|
|
||||||
for contentPackage in allPackages do
|
processPackages(
|
||||||
if contentPackage and executedLocalPackages[contentPackage.Name] == nil then
|
allPackages,
|
||||||
local d = contentPackage.Path:gsub("\\", "/")
|
function(pkg, pkgPath)
|
||||||
d = d:gsub("/filelist.xml", "")
|
if not executedLocalPackages[pkg.Name] then
|
||||||
|
table.insert(package.path, pkgPath .. LUA_MOD_REQUIRE_PATH)
|
||||||
table.insert(package.path, (d .. "/Lua/?.lua"))
|
local forcedAutorunPath = pkgPath .. LUA_MOD_FORCEDAUTORUN_PATH
|
||||||
|
if File.DirectoryExists(forcedAutorunPath) then
|
||||||
if File.DirectoryExists(d .. "/Lua/ForcedAutorun") then
|
queueForcedAutorun(forcedAutorunPath, pkgPath, pkg)
|
||||||
RunFolder(d .. "/Lua/ForcedAutorun", d, contentPackage)
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
)
|
||||||
|
|
||||||
setmodulepaths(package.path)
|
setmodulepaths(package.path)
|
||||||
|
processAutorun()
|
||||||
|
processForcedAutorun()
|
||||||
|
|
||||||
Hook.Add("stop", "luaSetup.stop", function ()
|
Hook.Add("stop", "luaSetup.stop", function ()
|
||||||
print("Stopping Lua...")
|
print("Stopping Lua...")
|
||||||
|
|||||||
@@ -341,7 +341,7 @@ namespace Barotrauma
|
|||||||
|
|
||||||
if (levelData.HasBeaconStation && !levelData.IsBeaconActive)
|
if (levelData.HasBeaconStation && !levelData.IsBeaconActive)
|
||||||
{
|
{
|
||||||
var beaconMissionPrefabs = MissionPrefab.Prefabs.Where(m => m.Tags.Any(t => t.Equals("beaconnoreward", StringComparison.OrdinalIgnoreCase)));
|
var beaconMissionPrefabs = MissionPrefab.Prefabs.Where(m => m.Tags.Any(t => t.Equals("beaconnoreward", StringComparison.OrdinalIgnoreCase))).OrderBy(m => m.UintIdentifier);
|
||||||
if (beaconMissionPrefabs.Any())
|
if (beaconMissionPrefabs.Any())
|
||||||
{
|
{
|
||||||
Random rand = new MTRandom(ToolBox.StringToInt(levelData.Seed));
|
Random rand = new MTRandom(ToolBox.StringToInt(levelData.Seed));
|
||||||
@@ -354,7 +354,7 @@ namespace Barotrauma
|
|||||||
}
|
}
|
||||||
if (levelData.HasHuntingGrounds)
|
if (levelData.HasHuntingGrounds)
|
||||||
{
|
{
|
||||||
var huntingGroundsMissionPrefabs = MissionPrefab.Prefabs.Where(m => m.Tags.Any(t => t.Equals("huntinggrounds", StringComparison.OrdinalIgnoreCase)));
|
var huntingGroundsMissionPrefabs = MissionPrefab.Prefabs.Where(m => m.Tags.Any(t => t.Equals("huntinggrounds", StringComparison.OrdinalIgnoreCase))).OrderBy(m => m.UintIdentifier);
|
||||||
if (!huntingGroundsMissionPrefabs.Any())
|
if (!huntingGroundsMissionPrefabs.Any())
|
||||||
{
|
{
|
||||||
DebugConsole.AddWarning("Could not find a hunting grounds mission for the level. No mission with the tag \"huntinggrounds\" found.");
|
DebugConsole.AddWarning("Could not find a hunting grounds mission for the level. No mission with the tag \"huntinggrounds\" found.");
|
||||||
|
|||||||
@@ -397,11 +397,6 @@ namespace Barotrauma.Items.Components
|
|||||||
//Only add valid connections
|
//Only add valid connections
|
||||||
if (otherC.Grid != grid && (otherC.Grid == null || !Grids.ContainsKey(otherC.Grid.ID)) && ValidPowerConnection(c, otherC))
|
if (otherC.Grid != grid && (otherC.Grid == null || !Grids.ContainsKey(otherC.Grid.ID)) && ValidPowerConnection(c, otherC))
|
||||||
{
|
{
|
||||||
if (otherC.Item.Condition <= 0.0f)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
otherC.Grid = grid; //Assigning ID early prevents unncessary adding to stack
|
otherC.Grid = grid; //Assigning ID early prevents unncessary adding to stack
|
||||||
probeStack.Push(otherC);
|
probeStack.Push(otherC);
|
||||||
}
|
}
|
||||||
@@ -665,7 +660,10 @@ namespace Barotrauma.Items.Components
|
|||||||
|
|
||||||
public static bool ValidPowerConnection(Connection conn1, Connection conn2)
|
public static bool ValidPowerConnection(Connection conn1, Connection conn2)
|
||||||
{
|
{
|
||||||
return conn1.IsPower && conn2.IsPower && (conn1.Item.HasTag("junctionbox") || conn2.Item.HasTag("junctionbox") || conn1.Item.HasTag("dock") || conn2.Item.HasTag("dock") || conn1.IsOutput != conn2.IsOutput);
|
return
|
||||||
|
conn1.IsPower && conn2.IsPower &&
|
||||||
|
conn1.Item.Condition > 0.0f && conn2.Item.Condition > 0.0f &&
|
||||||
|
(conn1.Item.HasTag("junctionbox") || conn2.Item.HasTag("junctionbox") || conn1.Item.HasTag("dock") || conn2.Item.HasTag("dock") || conn1.IsOutput != conn2.IsOutput);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -141,7 +141,7 @@ namespace Barotrauma.Items.Components
|
|||||||
|
|
||||||
ApplyStatusEffects(ActionType.OnActive, deltaTime, null);
|
ApplyStatusEffects(ActionType.OnActive, deltaTime, null);
|
||||||
|
|
||||||
if (Voltage > OverloadVoltage && CanBeOverloaded)
|
if (Voltage > OverloadVoltage && CanBeOverloaded && item.Repairables.Any())
|
||||||
{
|
{
|
||||||
item.Condition = 0.0f;
|
item.Condition = 0.0f;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -957,7 +957,18 @@ namespace Barotrauma
|
|||||||
|
|
||||||
public PriceInfo GetPriceInfo(Location.StoreInfo store)
|
public PriceInfo GetPriceInfo(Location.StoreInfo store)
|
||||||
{
|
{
|
||||||
if (!store.Identifier.IsEmpty && StorePrices != null && StorePrices.TryGetValue(store.Identifier, out var storePriceInfo))
|
if (store == null)
|
||||||
|
{
|
||||||
|
string message = $"Tried to get price info for \"{Identifier}\" with a null store parameter!\n{Environment.StackTrace.CleanupStackTrace()}";
|
||||||
|
#if DEBUG
|
||||||
|
DebugConsole.ShowError(message);
|
||||||
|
#else
|
||||||
|
DebugConsole.AddWarning(message);
|
||||||
|
GameAnalyticsManager.AddErrorEventOnce("ItemPrefab.GetPriceInfo:StoreParameterNull", GameAnalyticsManager.ErrorSeverity.Error, message);
|
||||||
|
#endif
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
else if (!store.Identifier.IsEmpty && StorePrices != null && StorePrices.TryGetValue(store.Identifier, out var storePriceInfo))
|
||||||
{
|
{
|
||||||
return storePriceInfo;
|
return storePriceInfo;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,41 @@
|
|||||||
|
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using MoonSharp.Interpreter;
|
||||||
|
|
||||||
|
namespace Barotrauma
|
||||||
|
{
|
||||||
|
class LuaRequire {
|
||||||
|
private Script lua { get; set; }
|
||||||
|
private Dictionary<Tuple<string, Table>, DynValue> LoadedModules { get; set; }
|
||||||
|
|
||||||
|
private bool GetExistingReturnValue(Tuple<string, Table> key, ref DynValue returnValue) {
|
||||||
|
return LoadedModules.TryGetValue(key, out returnValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ExecuteModule(Tuple<string, Table> key, ref DynValue returnValue) {
|
||||||
|
string moduleName = key.Item1;
|
||||||
|
Table globalContext = key.Item2;
|
||||||
|
returnValue = lua.Call(lua.RequireModule(moduleName, globalContext));
|
||||||
|
LoadedModules[key] = returnValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Lua modules that have been previously loaded by require() will
|
||||||
|
// not be loaded again; instead, their initial return value is
|
||||||
|
// preserved and returned again on subsequent attempts.
|
||||||
|
public DynValue Require(string moduleName, Table globalContext) {
|
||||||
|
DynValue returnValue = DynValue.Nil;
|
||||||
|
var key = new Tuple<string, Table>(moduleName, globalContext);
|
||||||
|
|
||||||
|
if (GetExistingReturnValue(key, ref returnValue)) return returnValue;
|
||||||
|
ExecuteModule(key, ref returnValue);
|
||||||
|
return returnValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LuaRequire(Script lua) {
|
||||||
|
this.lua = lua;
|
||||||
|
LoadedModules = new Dictionary<Tuple<string, Table>, DynValue>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -46,6 +46,7 @@ namespace Barotrauma
|
|||||||
public LuaCsHook Hook { get; private set; }
|
public LuaCsHook Hook { get; private set; }
|
||||||
public LuaCsNetworking Networking { get; private set; }
|
public LuaCsNetworking Networking { get; private set; }
|
||||||
public LuaCsModStore ModStore { get; private set; }
|
public LuaCsModStore ModStore { get; private set; }
|
||||||
|
private LuaRequire require { get; set; }
|
||||||
|
|
||||||
public CsScriptLoader CsScriptLoader { get; private set; }
|
public CsScriptLoader CsScriptLoader { get; private set; }
|
||||||
public CsLua Lua { get; private set; }
|
public CsLua Lua { get; private set; }
|
||||||
@@ -71,9 +72,9 @@ namespace Barotrauma
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static ContentPackage GetPackage(Identifier name)
|
public static ContentPackage GetPackage(Identifier name, bool fallbackToAll = true)
|
||||||
{
|
{
|
||||||
foreach (ContentPackage package in ContentPackageManager.LocalPackages)
|
foreach (ContentPackage package in ContentPackageManager.EnabledPackages.All)
|
||||||
{
|
{
|
||||||
if (package.NameMatches(name))
|
if (package.NameMatches(name))
|
||||||
{
|
{
|
||||||
@@ -81,11 +82,22 @@ namespace Barotrauma
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (ContentPackage package in ContentPackageManager.AllPackages)
|
if (fallbackToAll)
|
||||||
{
|
{
|
||||||
if (package.NameMatches(name))
|
foreach (ContentPackage package in ContentPackageManager.LocalPackages)
|
||||||
{
|
{
|
||||||
return package;
|
if (package.NameMatches(name))
|
||||||
|
{
|
||||||
|
return package;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (ContentPackage package in ContentPackageManager.AllPackages)
|
||||||
|
{
|
||||||
|
if (package.NameMatches(name))
|
||||||
|
{
|
||||||
|
return package;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -264,22 +276,18 @@ namespace Barotrauma
|
|||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
public DynValue Require(string moduleName, Table globalContexts)
|
||||||
private DynValue Require(string modname, Table globalContext)
|
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
return lua.Call(lua.RequireModule(modname, globalContext));
|
return require.Require(moduleName, globalContexts);
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
HandleException(e);
|
HandleException(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public object CallLuaFunction(object function, params object[] arguments)
|
public object CallLuaFunction(object function, params object[] arguments)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -362,6 +370,8 @@ namespace Barotrauma
|
|||||||
Lua = new CsLua(this);
|
Lua = new CsLua(this);
|
||||||
CsScript = new CsScriptRunner(this);
|
CsScript = new CsScriptRunner(this);
|
||||||
|
|
||||||
|
require = new LuaRequire(lua);
|
||||||
|
|
||||||
Game = new LuaGame();
|
Game = new LuaGame();
|
||||||
Networking = new LuaCsNetworking();
|
Networking = new LuaCsNetworking();
|
||||||
Hook.Initialize();
|
Hook.Initialize();
|
||||||
|
|||||||
@@ -153,7 +153,10 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
Name = TextManager.GetWithVariable("wreckeditemformat", "[name]", Name);
|
Name = TextManager.GetWithVariable("wreckeditemformat", "[name]", Name);
|
||||||
}
|
}
|
||||||
Name = Name.Fallback(OriginalName);
|
if (!string.IsNullOrEmpty(OriginalName))
|
||||||
|
{
|
||||||
|
Name = Name.Fallback(OriginalName);
|
||||||
|
}
|
||||||
|
|
||||||
var tags = new HashSet<Identifier>();
|
var tags = new HashSet<Identifier>();
|
||||||
string joinedTags = element.GetAttributeString("tags", "");
|
string joinedTags = element.GetAttributeString("tags", "");
|
||||||
|
|||||||
@@ -1229,6 +1229,7 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
if (!connectedSubs.Contains(item.Submarine)) { continue; }
|
if (!connectedSubs.Contains(item.Submarine)) { continue; }
|
||||||
if (!item.HasTag("cargocontainer")) { continue; }
|
if (!item.HasTag("cargocontainer")) { continue; }
|
||||||
|
if (item.NonInteractable || item.HiddenInGame) { continue; }
|
||||||
var itemContainer = item.GetComponent<ItemContainer>();
|
var itemContainer = item.GetComponent<ItemContainer>();
|
||||||
if (itemContainer == null) { continue; }
|
if (itemContainer == null) { continue; }
|
||||||
int emptySlots = 0;
|
int emptySlots = 0;
|
||||||
|
|||||||
@@ -1,3 +1,15 @@
|
|||||||
|
---------------------------------------------------------------------------------------------------------
|
||||||
|
v0.17.11.0
|
||||||
|
---------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Fixes:
|
||||||
|
- Fixed occasional crash when talking to an outpost merchant.
|
||||||
|
- Fixed cargo missions putting cargo in non-interactable and hidden-in-game containers.
|
||||||
|
- Don't show wallet info on character portrait in other multiplayer game modes than the campaign.
|
||||||
|
- Fixed certainstructure names not showing up properly in the submarine editor in languages other than English.
|
||||||
|
- Fixed relays that have "can be overloaded" set to true breaking when overloaded (should never happen because relays can't be repaired).
|
||||||
|
- Fixed occasional mission mismatch errors in multiplayer when there's a hunting grounds or beacon mission in the level.
|
||||||
|
|
||||||
---------------------------------------------------------------------------------------------------------
|
---------------------------------------------------------------------------------------------------------
|
||||||
v0.17.10.0
|
v0.17.10.0
|
||||||
---------------------------------------------------------------------------------------------------------
|
---------------------------------------------------------------------------------------------------------
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user