diff --git a/Launcher2/LauncherMain.cs b/Launcher2/LauncherMain.cs
index 8bc7d87d4..0e01ee4dd 100644
--- a/Launcher2/LauncherMain.cs
+++ b/Launcher2/LauncherMain.cs
@@ -398,11 +398,17 @@ namespace Launcher2
return false;
}
- string latestVersion = ToolBox.GetAttributeString(doc.Root, "latestversion", "");
+ Version currentVersion = new Version(version);
+
+
+ string latestVersionStr = ToolBox.GetAttributeString(doc.Root, "latestversion", "");
latestVersionFolder = ToolBox.GetAttributeString(doc.Root, "latestversionfolder", "");
latestVersionFileList = ToolBox.GetAttributeString(doc.Root, "latestversionfilelist", "");
- if (latestVersion == version)
+
+ Version latestVersion = new Version(latestVersionStr);
+
+ if (currentVersion.CompareTo(latestVersion) >= 0)
{
updateInfoText.Text = "Game is up to date!";
return false;
@@ -427,6 +433,9 @@ namespace Launcher2
//read the patch notes until we reach the user's version
if (patchNumber == version) break;
+ Version patchVersion = new Version(patchNumber);
+ if (currentVersion.CompareTo(patchVersion) >= 0) break;
+
string innerText = ToolBox.ElementInnerText(patchNote);
innerText = innerText.Replace("\r\n", "\n");
diff --git a/Subsurface/Barotrauma.csproj b/Subsurface/Barotrauma.csproj
index 9b73026a4..9255732bc 100644
--- a/Subsurface/Barotrauma.csproj
+++ b/Subsurface/Barotrauma.csproj
@@ -843,7 +843,7 @@
PreserveNewest
-
+
PreserveNewest
diff --git a/Subsurface/Content/Characters/Moloch/moloch.xml b/Subsurface/Content/Characters/Moloch/moloch.xml
index d6f774f67..2b5ebfe84 100644
--- a/Subsurface/Content/Characters/Moloch/moloch.xml
+++ b/Subsurface/Content/Characters/Moloch/moloch.xml
@@ -13,7 +13,6 @@
-
@@ -59,5 +58,8 @@
-
+
\ No newline at end of file
diff --git a/Subsurface/Content/Items/Tools/tools.png b/Subsurface/Content/Items/Tools/tools.png
new file mode 100644
index 000000000..c4227b464
Binary files /dev/null and b/Subsurface/Content/Items/Tools/tools.png differ
diff --git a/Subsurface/Content/Items/idcard.png b/Subsurface/Content/Items/idcard.png
index 9822c7ad6..cda64ffd3 100644
Binary files a/Subsurface/Content/Items/idcard.png and b/Subsurface/Content/Items/idcard.png differ
diff --git a/Subsurface/Data/ContentPackages/Vanilla 0.2.xml b/Subsurface/Data/ContentPackages/Vanilla 0.3.xml
similarity index 89%
rename from Subsurface/Data/ContentPackages/Vanilla 0.2.xml
rename to Subsurface/Data/ContentPackages/Vanilla 0.3.xml
index ae37fe062..51c13221f 100644
--- a/Subsurface/Data/ContentPackages/Vanilla 0.2.xml
+++ b/Subsurface/Data/ContentPackages/Vanilla 0.3.xml
@@ -1,5 +1,5 @@
-
+
@@ -26,12 +26,13 @@
-
+
-
+
+
diff --git a/Subsurface/Properties/AssemblyInfo.cs b/Subsurface/Properties/AssemblyInfo.cs
index 258624579..1887234ce 100644
--- a/Subsurface/Properties/AssemblyInfo.cs
+++ b/Subsurface/Properties/AssemblyInfo.cs
@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("0.2.6.2")]
-[assembly: AssemblyFileVersion("0.2.6.2")]
+[assembly: AssemblyVersion("0.3.0.0")]
+[assembly: AssemblyFileVersion("0.3.0.0")]
diff --git a/Subsurface/Source/Characters/AI/Objectives/AIObjectiveCombat.cs b/Subsurface/Source/Characters/AI/Objectives/AIObjectiveCombat.cs
index 8616ac8a7..5dd2f96c4 100644
--- a/Subsurface/Source/Characters/AI/Objectives/AIObjectiveCombat.cs
+++ b/Subsurface/Source/Characters/AI/Objectives/AIObjectiveCombat.cs
@@ -115,7 +115,7 @@ namespace Barotrauma
if (enemyAI.SelectedAiTarget == character.AiTarget) enemyDanger *= 2.0f;
}
- return Math.Max(enemyDanger, 30.0f);
+ return Math.Max(enemyDanger, AIObjectiveManager.OrderPriority);
}
public override bool IsDuplicate(AIObjective otherObjective)
diff --git a/Subsurface/Source/Characters/AI/Objectives/AIObjectiveManager.cs b/Subsurface/Source/Characters/AI/Objectives/AIObjectiveManager.cs
index 2f32477d3..2d3f81dd7 100644
--- a/Subsurface/Source/Characters/AI/Objectives/AIObjectiveManager.cs
+++ b/Subsurface/Source/Characters/AI/Objectives/AIObjectiveManager.cs
@@ -8,7 +8,7 @@ namespace Barotrauma
{
class AIObjectiveManager
{
- const float OrderPriority = 50.0f;
+ public const float OrderPriority = 50.0f;
private List objectives;
diff --git a/Subsurface/Source/GUI/GUI.cs b/Subsurface/Source/GUI/GUI.cs
index 15408c4cc..8625a1bb9 100644
--- a/Subsurface/Source/GUI/GUI.cs
+++ b/Subsurface/Source/GUI/GUI.cs
@@ -350,7 +350,6 @@ namespace Barotrauma
}
}
- if (Character.Controlled != null && cam!=null) Character.Controlled.DrawHUD(spriteBatch, cam);
if (GameMain.NetworkMember != null) GameMain.NetworkMember.Draw(spriteBatch);
DrawMessages(spriteBatch, (float)deltaTime);
diff --git a/Subsurface/Source/GameSession/GameModes/Tutorials/BasicTutorial.cs b/Subsurface/Source/GameSession/GameModes/Tutorials/BasicTutorial.cs
index 2fd280b3d..b130274a4 100644
--- a/Subsurface/Source/GameSession/GameModes/Tutorials/BasicTutorial.cs
+++ b/Subsurface/Source/GameSession/GameModes/Tutorials/BasicTutorial.cs
@@ -306,13 +306,17 @@ namespace Barotrauma.Tutorials
yield return new WaitForSeconds(0.1f);
} while (!broken);
+ yield return new WaitForSeconds(0.1f);
+
+
//fix everything except the command windows
foreach (Structure w in Structure.WallList)
{
+ if (windows.Contains(w)) continue;
+
for (int i = 0; i < w.SectionCount; i++)
{
- if (!w.SectionHasHole(i)) continue;
- if (windows.Contains(w)) continue;
+ if (!w.SectionIsLeaking(i)) continue;
w.AddDamage(i, -100000.0f);
}
@@ -465,7 +469,7 @@ namespace Barotrauma.Tutorials
} while (broken);
infoBox = CreateInfoFrame("Great! However, there's still quite a bit of water inside the sub. It should be pumped out "
- + "using the pump in the room at the bottom of the submarine.");
+ + "using the bilge pump in the room at the bottom of the submarine.");
Pump pump = Item.ItemList.Find(i => i.HasTag("tutorialpump")).GetComponent();
diff --git a/Subsurface/Source/GameSession/GameSession.cs b/Subsurface/Source/GameSession/GameSession.cs
index 340aeff54..5a515a208 100644
--- a/Subsurface/Source/GameSession/GameSession.cs
+++ b/Subsurface/Source/GameSession/GameSession.cs
@@ -196,6 +196,7 @@ namespace Barotrauma
public void Draw(SpriteBatch spriteBatch)
{
//guiRoot.Draw(spriteBatch);
+
if (gameMode != null) gameMode.Draw(spriteBatch);
}
diff --git a/Subsurface/Source/Items/Components/Machines/Reactor.cs b/Subsurface/Source/Items/Components/Machines/Reactor.cs
index e79d5b9fd..b1ad20a8c 100644
--- a/Subsurface/Source/Items/Components/Machines/Reactor.cs
+++ b/Subsurface/Source/Items/Components/Machines/Reactor.cs
@@ -167,7 +167,7 @@ namespace Barotrauma.Items.Components
unsentChanges = true;
ShutDownTemp -= 100.0f;
- return true;
+ return false;
};
button = new GUIButton(new Rectangle(460, 70, 40,40), "+", GUI.Style, GuiFrame);
@@ -176,7 +176,7 @@ namespace Barotrauma.Items.Components
unsentChanges = true;
ShutDownTemp += 100.0f;
- return true;
+ return false;
};
autoTempTickBox = new GUITickBox(new Rectangle(410, 170, 20, 20), "Automatic temperature control", Alignment.TopLeft, GuiFrame);
@@ -188,7 +188,7 @@ namespace Barotrauma.Items.Components
unsentChanges = true;
FissionRate += 1.0f;
- return true;
+ return false;
};
button = new GUIButton(new Rectangle(210, 340, 40, 40), "-", GUI.Style, GuiFrame);
@@ -197,7 +197,7 @@ namespace Barotrauma.Items.Components
unsentChanges = true;
FissionRate -= 1.0f;
- return true;
+ return false;
};
button = new GUIButton(new Rectangle(500, 290, 40, 40), "+", GUI.Style, GuiFrame);
@@ -206,7 +206,7 @@ namespace Barotrauma.Items.Components
unsentChanges = true;
CoolingRate += 1.0f;
- return true;
+ return false;
};
button = new GUIButton(new Rectangle(500, 340, 40, 40), "-", GUI.Style, GuiFrame);
@@ -215,7 +215,7 @@ namespace Barotrauma.Items.Components
unsentChanges = true;
CoolingRate -= 1.0f;
- return true;
+ return false;
};
}
diff --git a/Subsurface/Source/Screens/GameScreen.cs b/Subsurface/Source/Screens/GameScreen.cs
index 6d5967165..5883d0642 100644
--- a/Subsurface/Source/Screens/GameScreen.cs
+++ b/Subsurface/Source/Screens/GameScreen.cs
@@ -197,6 +197,8 @@ namespace Barotrauma
}
}
+ if (Character.Controlled != null && cam != null) Character.Controlled.DrawHUD(spriteBatch, cam);
+
if (GameMain.GameSession != null) GameMain.GameSession.Draw(spriteBatch);
GUI.Draw((float)deltaTime, spriteBatch, cam);
diff --git a/Subsurface/changelog.txt b/Subsurface/changelog.txt
index 246afc7f8..94c32903a 100644
--- a/Subsurface/changelog.txt
+++ b/Subsurface/changelog.txt
@@ -1,3 +1,62 @@
+
+---------------------------------------------------------------------------------------------------------
+v0.3
+---------------------------------------------------------------------------------------------------------
+
+Multiplayer:
+- a summary screen which shows some details about the previous round
+- no separate traitor mode: they can be enabled for any game mode
+- an option to randomize whether there is a traitor or not
+- larger chatbox
+- a ton of syncing bugfixes and optimization
+
+Items:
+- fabricators, which can be used for crafting items out of raw materials or other items
+- deconstructors, which break items down to their basic components/materials
+- a bunch of new sprites
+- there are some artifacts scattered around every level regardless of the quest, and they can be collected
+and used as a source of useful raw materials for the fabricator
+- added hatches (which are basically doors rotated by 90 degrees)
+- characters can't get stuck inside doors anymore
+- stairs are easier to climb (less tripping down!)
+- navigation terminals have a ''default ballast level'' setting which determines how much water there
+should be in the ballast tanks when not steering in any direction
+- ladders can be climbed with a diving suit on, just very slowly
+- ladder climbing animation now works properly even when holding an item
+- items have a short description which can be read by hovering the mouse over the inventory slots
+- if the reactor is connected to multiple junction boxes, automatic temperature control will adjust
+the power output to the highest load instead of the sum of the loads
+- reactor state is saved (it will stay running when between levels)
+- using a stun baton while running won't make the character trip anymore
+
+Submarines:
+- a new sub, Nehalennia
+- the collider of the submarine now matches the shape of the hull
+- the airlock pumps in each sub are set to pump water out instead of just turning the pump on when pressing
+the button outside the airlock
+
+Submarine editor:
+- items/structures are sorted by category in alphabetical order
+- tickboxes for hiding hulls, gaps, waypoints and links between items
+- a list of the most recently used items/structures
+- placed wires are much easier to move around
+- more accurate staircase selecting (the ''bounding box'' of the staircase won't prevent selecting items that
+are behind it anymore)
+- visible indicators for railgun rotation limits
+
+Crew:
+- the crew members not controlled by the player now have an AI: they can take orders, do some basic tasks
+and avoid various hazards
+- fixed equipped items disappearing when loading the game
+- bodies can be dragged up stairs
+
+Misc:
+- two new monsters
+- improved UI graphics
+- better looking cavern walls
+- major optimization to light/shadow rendering
+- some new quests (which are now called ''missions'')
+
---------------------------------------------------------------------------------------------------------
v0.2.6.2
---------------------------------------------------------------------------------------------------------
diff --git a/Subsurface/readme.txt b/Subsurface/readme.txt
index 87ad82f09..836563117 100644
--- a/Subsurface/readme.txt
+++ b/Subsurface/readme.txt
@@ -1,19 +1,20 @@
BAROTRAUMA
www.undertowgames.com/subsurface
-Copyright © Undertow Games 2015
+Copyright © Undertow Games 2016
-Controls:
+Default controls:
WASD - move
Shift - run
-E - use/activate items and devices
+E - use/activate items and devices
Right click - aim with equipped item
Left click - use equipped item
-Tab - select/deselect the chat box in multiplayer mode
-F3 - open/close console
+C - open the crew command menu
+Tab - select/deselect the chat box in multiplayer mode
+F3 - open/close console
See the wiki for more detailed info and instructions:
-http://subsurface.gamepedia.com
+http://barotrauma.gamepedia.com
------------------------------------------------------------------------
diff --git a/Subsurface_Solution.v12.suo b/Subsurface_Solution.v12.suo
index a7c6b9d3c..3c7a7d005 100644
Binary files a/Subsurface_Solution.v12.suo and b/Subsurface_Solution.v12.suo differ