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