From 501e02c026b7b8a9b60a5f6572d53945495b681b Mon Sep 17 00:00:00 2001 From: Markus Isberg <3e849f2e5c@pm.me> Date: Thu, 26 Aug 2021 21:08:21 +0900 Subject: [PATCH] Unstable 0.1500.0.0 --- .../ClientSource/Characters/Attack.cs | 3 +- .../ClientSource/Characters/Character.cs | 125 +- .../ClientSource/Characters/CharacterHUD.cs | 35 +- .../ClientSource/Characters/CharacterInfo.cs | 39 +- .../Characters/CharacterNetworking.cs | 36 +- .../Characters/Health/CharacterHealth.cs | 74 +- .../ClientSource/DebugConsole.cs | 9 +- .../BarotraumaClient/ClientSource/GUI/GUI.cs | 41 +- .../ClientSource/GUI/GUIComponent.cs | 41 +- .../ClientSource/GUI/GUIFrame.cs | 2 +- .../ClientSource/GUI/GUIListBox.cs | 36 +- .../ClientSource/GUI/GUIScissorComponent.cs | 87 + .../ClientSource/GUI/GUIStyle.cs | 16 + .../ClientSource/GUI/HUDLayoutSettings.cs | 2 +- .../ClientSource/GUI/LoadingScreen.cs | 2 +- .../ClientSource/GUI/ShapeExtensions.cs | 41 +- .../ClientSource/GUI/Store.cs | 93 +- .../ClientSource/GUI/TabMenu.cs | 321 +++- .../ClientSource/GUI/UISprite.cs | 5 +- .../BarotraumaClient/ClientSource/GameMain.cs | 24 +- .../ClientSource/GameSession/CargoManager.cs | 31 +- .../ClientSource/GameSession/CrewManager.cs | 786 +++++---- .../GameModes/MultiPlayerCampaign.cs | 4 +- .../ClientSource/GameSession/GameSession.cs | 5 +- .../ClientSource/GameSettings.cs | 6 + .../ClientSource/Items/CharacterInventory.cs | 30 +- .../Items/Components/Holdable/RangedWeapon.cs | 58 +- .../Items/Components/ItemComponent.cs | 3 +- .../Components/Machines/Deconstructor.cs | 3 +- .../Items/Components/Machines/Fabricator.cs | 78 +- .../Items/Components/Machines/MiniMap.cs | 1530 +++++++++++++++-- .../Items/Components/Machines/Pump.cs | 13 +- .../Items/Components/Machines/Steering.cs | 1 + .../Items/Components/Power/PowerContainer.cs | 2 +- .../Items/Components/Repairable.cs | 27 +- .../Items/Components/Signal/Terminal.cs | 2 +- .../ClientSource/Items/Components/Turret.cs | 16 +- .../ClientSource/Items/Inventory.cs | 28 +- .../ClientSource/Items/Item.cs | 8 +- .../ClientSource/Map/Explosion.cs | 2 + .../BarotraumaClient/ClientSource/Map/Hull.cs | 2 +- .../ClientSource/Map/Lights/LightManager.cs | 6 +- .../ClientSource/Map/Submarine.cs | 176 +- .../ClientSource/Networking/ChatMessage.cs | 5 +- .../ClientSource/Networking/GameClient.cs | 9 + .../ClientSource/Networking/ServerInfo.cs | 41 +- .../ClientSource/Networking/SteamManager.cs | 2 +- .../ClientSource/Particles/Particle.cs | 20 +- .../ClientSource/Particles/ParticleEmitter.cs | 2 + .../ClientSource/Particles/ParticleManager.cs | 45 +- .../ClientSource/Particles/ParticlePrefab.cs | 12 +- .../BarotraumaClient/ClientSource/Program.cs | 25 +- .../ClientSource/Screens/CampaignSetupUI.cs | 2 +- .../ClientSource/Screens/CampaignUI.cs | 4 +- .../Screens/CharacterEditor/Wizard.cs | 2 +- .../Screens/EventEditor/EventEditorScreen.cs | 2 +- .../ClientSource/Screens/GameScreen.cs | 3 + .../ClientSource/Screens/NetLobbyScreen.cs | 20 +- .../ClientSource/Screens/ServerListScreen.cs | 35 +- .../Screens/SteamWorkshopScreen.cs | 2 +- .../ClientSource/Screens/TestScreen.cs | 125 ++ .../ClientSource/Sounds/SoundPlayer.cs | 17 +- .../ClientSource/Utils/ToolBox.cs | 222 ++- .../Content/Effects/blueprintshader.xnb | Bin 0 -> 2462 bytes .../Effects/blueprintshader_opengl.xnb | Bin 0 -> 2010 bytes .../BarotraumaClient/LinuxClient.csproj | 2 +- Barotrauma/BarotraumaClient/MacClient.csproj | 2 +- .../BarotraumaClient/Shaders/Content.mgcb | 6 + .../Shaders/Content_opengl.mgcb | 5 + .../Shaders/blueprintshader.fx | 48 + .../Shaders/blueprintshader_opengl.fx | 48 + .../BarotraumaClient/WindowsClient.csproj | 2 +- .../BarotraumaServer/LinuxServer.csproj | 2 +- Barotrauma/BarotraumaServer/MacServer.csproj | 2 +- .../ServerSource/Characters/Character.cs | 5 + .../ServerSource/Characters/CharacterInfo.cs | 20 + .../Characters/CharacterNetworking.cs | 51 +- .../ServerSource/DebugConsole.cs | 1 + .../BarotraumaServer/ServerSource/GameMain.cs | 31 +- .../GameModes/CharacterCampaignData.cs | 2 +- .../Items/Components/Machines/Steering.cs | 6 + .../ServerSource/Items/Item.cs | 8 + .../Networking/ChildServerRelay.cs | 10 +- .../ServerSource/Networking/GameServer.cs | 22 +- .../ServerEntityEventManager.cs | 8 +- .../ServerSource/Networking/RespawnManager.cs | 19 +- .../Traitors/Goals/GoalFindItem.cs | 5 +- .../BarotraumaServer/WindowsServer.csproj | 2 +- .../Data/ContentPackages/Vanilla 0.9.xml | 18 + .../Characters/AI/AIController.cs | 8 +- .../Characters/AI/EnemyAIController.cs | 94 +- .../Characters/AI/HumanAIController.cs | 23 +- .../Characters/AI/IndoorsSteeringManager.cs | 9 +- .../AI/Objectives/AIObjectiveCombat.cs | 17 +- .../Objectives/AIObjectiveExtinguishFire.cs | 8 +- .../Objectives/AIObjectiveExtinguishFires.cs | 2 +- .../Objectives/AIObjectiveFightIntruders.cs | 1 + .../Objectives/AIObjectiveFindDivingGear.cs | 36 +- .../AI/Objectives/AIObjectiveIdle.cs | 27 +- .../SharedSource/Characters/AI/Order.cs | 49 +- .../SharedSource/Characters/AI/PathFinder.cs | 65 +- .../Animation/FishAnimController.cs | 1 + .../Animation/HumanoidAnimController.cs | 44 +- .../SharedSource/Characters/Attack.cs | 21 + .../SharedSource/Characters/Character.cs | 354 +++- .../SharedSource/Characters/CharacterInfo.cs | 217 ++- .../Health/Afflictions/Affliction.cs | 26 +- .../Health/Afflictions/AfflictionHusk.cs | 37 +- .../Health/Afflictions/AfflictionPrefab.cs | 156 +- .../Characters/Health/CharacterHealth.cs | 67 +- .../SharedSource/Characters/HumanPrefab.cs | 8 +- .../SharedSource/Characters/Limb.cs | 14 +- .../Characters/Params/CharacterParams.cs | 6 + .../AbilityConditionals/AbilityCondition.cs | 89 + .../AbilityConditionAttackData.cs | 79 + .../AbilityConditionAttackResult.cs | 38 + .../AbilityConditionCharacter.cs | 30 + .../AbilityConditionData.cs | 39 + .../AbilityConditionEvasiveManeuvers.cs | 22 + .../AbilityConditionHandsomeStranger.cs | 27 + .../AbilityConditionItem.cs | 50 + .../AbilityConditionReduceAffliction.cs | 33 + .../AbilityConditionScavenger.cs | 22 + .../AbilityConditionAboveVitality.cs | 20 + .../AbilityConditionAlliesAboveVitality.cs | 19 + .../AbilityConditionCrouched.cs | 18 + .../AbilityConditionDataless.cs | 24 + .../AbilityConditionHasAffliction.cs | 31 + .../AbilityConditionHasDifferentJobs.cs | 22 + .../AbilityConditionHasItem.cs | 57 + .../AbilityConditionInWater.cs | 15 + .../AbilityConditionMission.cs | 38 + .../AbilityConditionNoCrewDied.cs | 22 + .../AbilityConditionOnMission.cs | 17 + .../AbilityConditionRagdolled.cs | 18 + .../AbilityConditionRunning.cs | 15 + .../AbilityConditionServerRandom.cs | 24 + .../AbilityConditionShipFlooded.cs | 21 + .../Talents/Abilities/CharacterAbility.cs | 142 ++ .../Abilities/CharacterAbilityApplyForce.cs | 34 + .../CharacterAbilityApplyStatusEffects.cs | 43 + ...rAbilityApplyStatusEffectsToNearestAlly.cs | 36 + ...erAbilityApplyStatusEffectsToRandomAlly.cs | 40 + .../Abilities/CharacterAbilityGiveFlag.cs | 20 + .../CharacterAbilityGiveMissionCount.cs | 21 + .../Abilities/CharacterAbilityGiveMoney.cs | 22 + .../CharacterAbilityGivePermanentStat.cs | 49 + .../CharacterAbilityGiveResistance.cs | 21 + .../Abilities/CharacterAbilityGiveStat.cs | 22 + .../CharacterAbilityIncreaseSkill.cs | 41 + .../CharacterAbilityModifyAffliction.cs | 36 + .../CharacterAbilityModifyAttackData.cs | 44 + .../Abilities/CharacterAbilityModifyFlag.cs | 34 + .../CharacterAbilityModifyReduceAffliction.cs | 27 + .../CharacterAbilityModifyResistance.cs | 27 + .../Abilities/CharacterAbilityModifyStat.cs | 26 + .../Abilities/CharacterAbilityModifyValue.cs | 46 + .../Abilities/CharacterAbilityPutItem.cs | 46 + .../CharacterAbilityResetPermanentStat.cs | 29 + .../CharacterAbilityApprenticeship.cs | 21 + .../CharacterAbilityBountyHunter.cs | 23 + .../CharacterAbilityIndustrialRevolution.cs | 30 + .../CharacterAbilityInsurancePolicy.cs | 54 + .../CharacterAbilityMultitasker.cs | 26 + .../CharacterAbilityPsychoClown.cs | 44 + .../CharacterAbilityRegenerateLoot.cs | 30 + .../CharacterAbilityStonewall.cs | 42 + .../CharacterAbilityTandemFire.cs | 42 + .../CharacterAbilityTaskmaster.cs | 39 + .../AbilityGroups/CharacterAbilityGroup.cs | 206 +++ .../CharacterAbilityGroupEffect.cs | 33 + .../CharacterAbilityGroupInterval.cs | 48 + .../Characters/Talents/CharacterTalent.cs | 127 ++ .../Characters/Talents/TalentPrefab.cs | 102 ++ .../Characters/Talents/TalentTree.cs | 219 +++ .../SharedSource/ContentPackage.cs | 10 +- .../SharedSource/DebugConsole.cs | 96 +- .../BarotraumaShared/SharedSource/Enums.cs | 73 + .../Events/EventActions/ReputationAction.cs | 6 +- .../SharedSource/Events/EventManager.cs | 4 + .../SharedSource/Events/Missions/Mission.cs | 33 +- .../GameSession/AutoItemPlacer.cs | 43 +- .../SharedSource/GameSession/CrewManager.cs | 3 + .../GameSession/Data/Reputation.cs | 22 +- .../GameSession/GameModes/CampaignMode.cs | 32 +- .../SharedSource/GameSession/GameSession.cs | 98 +- .../SharedSource/GameSettings.cs | 30 +- .../Items/Components/DockingPort.cs | 19 +- .../Items/Components/ElectricalDischarger.cs | 15 + .../Items/Components/Holdable/Holdable.cs | 16 +- .../Items/Components/Holdable/IdCard.cs | 65 +- .../Items/Components/Holdable/MeleeWeapon.cs | 4 +- .../Items/Components/Holdable/RangedWeapon.cs | 61 +- .../Items/Components/ItemComponent.cs | 22 +- .../Items/Components/ItemContainer.cs | 33 +- .../Items/Components/Machines/Engine.cs | 6 + .../Items/Components/Machines/Fabricator.cs | 185 +- .../Items/Components/Machines/MiniMap.cs | 73 +- .../Items/Components/Machines/Pump.cs | 6 + .../Items/Components/Machines/Steering.cs | 15 +- .../Items/Components/Power/PowerTransfer.cs | 7 + .../Items/Components/Projectile.cs | 2 +- .../Items/Components/Repairable.cs | 56 +- .../Components/Signal/ConnectionPanel.cs | 1 + .../Components/Signal/OscillatorComponent.cs | 16 +- .../Components/Signal/RegExFindComponent.cs | 7 +- .../Items/Components/Signal/Terminal.cs | 3 + .../Items/Components/Signal/WaterDetector.cs | 4 +- .../SharedSource/Items/Components/Turret.cs | 287 ++-- .../SharedSource/Items/Components/Wearable.cs | 19 +- .../SharedSource/Items/Item.cs | 55 +- .../SharedSource/Items/ItemPrefab.cs | 139 +- .../SharedSource/Map/Explosion.cs | 63 +- .../BarotraumaShared/SharedSource/Map/Hull.cs | 15 +- .../SharedSource/Map/Levels/Level.cs | 40 +- .../Map/Levels/LevelObjects/LevelTrigger.cs | 4 +- .../SharedSource/Map/Map/Radiation.cs | 2 +- .../SharedSource/Map/MapEntity.cs | 9 +- .../SharedSource/Map/Structure.cs | 11 +- .../SharedSource/Map/Submarine.cs | 65 +- .../SharedSource/Map/SubmarineBody.cs | 3 +- .../SharedSource/Map/WayPoint.cs | 23 +- .../Networking/ChildServerRelay.cs | 4 +- .../NetEntityEvent/NetEntityEvent.cs | 3 + .../Networking/OrderChatMessage.cs | 5 +- .../SharedSource/Networking/RespawnManager.cs | 16 +- .../SharedSource/Networking/ServerSettings.cs | 2 +- .../Serialization/XMLExtensions.cs | 116 +- .../StatusEffects/StatusEffect.cs | 120 +- .../SharedSource/SteamAchievementManager.cs | 2 + .../SharedSource/Upgrades/UpgradePrefab.cs | 2 +- .../SharedSource/Utils/IdRemap.cs | 36 +- .../SharedSource/Utils/MathUtils.cs | 5 + .../SharedSource/Utils/Range.cs | 44 + .../SharedSource/Utils/SafeIO.cs | 5 + .../SharedSource/Utils/SaveUtil.cs | 14 +- .../SharedSource/Utils/ToolBox.cs | 62 +- .../SharedSource/Utils/UpdaterUtil.cs | 223 --- .../BarotraumaShared/Submarines/Humpback.sub | Bin 207698 -> 207745 bytes .../BarotraumaShared/Submarines/Remora.sub | Bin 279016 -> 279195 bytes .../Submarines/RemoraDrone.sub | Bin 280590 -> 262007 bytes Barotrauma/BarotraumaShared/changelog.txt | 53 + .../BarotraumaShared/serversettings.xml | 1 + .../Dynamics/World.cs | 3 + Libraries/XNATypes/RectangleF.cs | 551 ++++++ 245 files changed, 9775 insertions(+), 2034 deletions(-) create mode 100644 Barotrauma/BarotraumaClient/ClientSource/GUI/GUIScissorComponent.cs create mode 100644 Barotrauma/BarotraumaClient/ClientSource/Screens/TestScreen.cs create mode 100644 Barotrauma/BarotraumaClient/Content/Effects/blueprintshader.xnb create mode 100644 Barotrauma/BarotraumaClient/Content/Effects/blueprintshader_opengl.xnb create mode 100644 Barotrauma/BarotraumaClient/Shaders/blueprintshader.fx create mode 100644 Barotrauma/BarotraumaClient/Shaders/blueprintshader_opengl.fx create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityCondition.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionData/AbilityConditionAttackData.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionData/AbilityConditionAttackResult.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionData/AbilityConditionCharacter.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionData/AbilityConditionData.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionData/AbilityConditionEvasiveManeuvers.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionData/AbilityConditionHandsomeStranger.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionData/AbilityConditionItem.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionData/AbilityConditionReduceAffliction.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionData/AbilityConditionScavenger.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionAboveVitality.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionAlliesAboveVitality.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionCrouched.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionDataless.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionHasAffliction.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionHasDifferentJobs.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionHasItem.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionInWater.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionMission.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionNoCrewDied.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionOnMission.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionRagdolled.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionRunning.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionServerRandom.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionShipFlooded.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbility.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityApplyForce.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityApplyStatusEffects.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityApplyStatusEffectsToNearestAlly.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityApplyStatusEffectsToRandomAlly.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityGiveFlag.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityGiveMissionCount.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityGiveMoney.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityGivePermanentStat.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityGiveResistance.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityGiveStat.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityIncreaseSkill.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityModifyAffliction.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityModifyAttackData.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityModifyFlag.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityModifyReduceAffliction.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityModifyResistance.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityModifyStat.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityModifyValue.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityPutItem.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityResetPermanentStat.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityApprenticeship.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityBountyHunter.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityIndustrialRevolution.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityInsurancePolicy.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityMultitasker.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityPsychoClown.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityRegenerateLoot.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityStonewall.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityTandemFire.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityTaskmaster.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/AbilityGroups/CharacterAbilityGroup.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/AbilityGroups/CharacterAbilityGroupEffect.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/AbilityGroups/CharacterAbilityGroupInterval.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/CharacterTalent.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/TalentPrefab.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/TalentTree.cs create mode 100644 Barotrauma/BarotraumaShared/SharedSource/Utils/Range.cs delete mode 100644 Barotrauma/BarotraumaShared/SharedSource/Utils/UpdaterUtil.cs create mode 100644 Libraries/XNATypes/RectangleF.cs diff --git a/Barotrauma/BarotraumaClient/ClientSource/Characters/Attack.cs b/Barotrauma/BarotraumaClient/ClientSource/Characters/Attack.cs index e994f5954..480a5fd26 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Characters/Attack.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Characters/Attack.cs @@ -1,5 +1,4 @@ -using Barotrauma.Sounds; -using Barotrauma.Particles; +using Barotrauma.Particles; using Microsoft.Xna.Framework; using System.Xml.Linq; diff --git a/Barotrauma/BarotraumaClient/ClientSource/Characters/Character.cs b/Barotrauma/BarotraumaClient/ClientSource/Characters/Character.cs index 0135133fe..31fc357b6 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Characters/Character.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Characters/Character.cs @@ -21,7 +21,6 @@ namespace Barotrauma public static bool DebugDrawInteract; protected float soundTimer; - protected float soundInterval; protected float hudInfoTimer = 1.0f; protected bool hudInfoVisible = false; @@ -130,7 +129,7 @@ namespace Barotrauma } public static bool IsMouseOnUI => GUI.MouseOn != null || - (CharacterInventory.IsMouseOnInventory() && !CharacterInventory.DraggingItemToWorld); + (CharacterInventory.IsMouseOnInventory && !CharacterInventory.DraggingItemToWorld); public class ObjectiveEntity { @@ -161,8 +160,7 @@ namespace Barotrauma partial void InitProjSpecific(XElement mainElement) { - soundInterval = mainElement.GetAttributeFloat("soundinterval", 10.0f); - soundTimer = Rand.Range(0.0f, soundInterval); + soundTimer = Rand.Range(0.0f, Params.SoundInterval); sounds = new List(); Params.Sounds.ForEach(s => sounds.Add(new CharacterSound(s))); @@ -390,12 +388,7 @@ namespace Barotrauma { if (attackResult.Damage <= 1.0f) { return; } } - - if (soundTimer < soundInterval * 0.5f) - { - PlaySound(CharacterSound.SoundType.Damage); - soundTimer = soundInterval; - } + PlaySound(CharacterSound.SoundType.Damage, maxInterval: 2); } partial void KillProjSpecific(CauseOfDeathType causeOfDeath, Affliction causeOfDeathAffliction, bool log) @@ -470,9 +463,9 @@ namespace Barotrauma } - private List debugInteractablesInRange = new List(); - private List debugInteractablesAtCursor = new List(); - private List> debugInteractablesNearCursor = new List>(); + private readonly List debugInteractablesInRange = new List(); + private readonly List debugInteractablesAtCursor = new List(); + private readonly List<(Item item, float dist)> debugInteractablesNearCursor = new List<(Item item, float dist)>(); /// /// Finds the front (lowest depth) interactable item at a position. "Interactable" in this case means that the character can "reach" the item. @@ -568,7 +561,7 @@ namespace Barotrauma if (distanceToItem > closestItemDistance) { continue; } if (!CanInteractWith(item)) { continue; } - debugInteractablesNearCursor.Add(new Pair(item, 1.0f - distanceToItem / (100.0f * aimAssistModifier))); + debugInteractablesNearCursor.Add((item, 1.0f - distanceToItem / (100.0f * aimAssistModifier))); closestItem = item; closestItemDistance = distanceToItem; } @@ -579,31 +572,20 @@ namespace Barotrauma private Character FindCharacterAtPosition(Vector2 mouseSimPos, float maxDist = 150.0f) { Character closestCharacter = null; - float closestDist = 0.0f; maxDist = ConvertUnits.ToSimUnits(maxDist); - + float closestDist = maxDist * maxDist; foreach (Character c in CharacterList) { if (!CanInteractWith(c, checkVisibility: false) || (c.AnimController?.SimplePhysicsEnabled ?? true)) { continue; } float dist = Vector2.DistanceSquared(mouseSimPos, c.SimPosition); - if (dist < maxDist * maxDist && (closestCharacter == null || dist < closestDist)) + if (dist < closestDist || + (c.CampaignInteractionType != CampaignMode.InteractionType.None && closestCharacter?.CampaignInteractionType == CampaignMode.InteractionType.None && dist * 0.9f < closestDist)) { closestCharacter = c; closestDist = dist; } - - /*FarseerPhysics.Common.Transform transform; - c.AnimController.Collider.FarseerBody.GetTransform(out transform); - for (int i = 0; i < c.AnimController.Collider.FarseerBody.FixtureList.Count; i++) - { - if (c.AnimController.Collider.FarseerBody.FixtureList[i].Shape.TestPoint(ref transform, ref mouseSimPos)) - { - Console.WriteLine("Hit: " + i); - closestCharacter = c; - } - }*/ } return closestCharacter; @@ -638,7 +620,7 @@ namespace Barotrauma if (!enabled) { return; } - if (!IsDead && !IsIncapacitated) + if (!IsIncapacitated) { if (soundTimer > 0) { @@ -649,7 +631,14 @@ namespace Barotrauma switch (enemyAI.State) { case AIState.Attack: - PlaySound(CharacterSound.SoundType.Attack); + if (Rand.Value() > 0.5f) + { + PlaySound(CharacterSound.SoundType.Attack); + } + else + { + PlaySound(CharacterSound.SoundType.Idle); + } break; default: var petBehavior = enemyAI.PetBehavior; @@ -660,7 +649,6 @@ namespace Barotrauma else { PlaySound(CharacterSound.SoundType.Idle); - } break; } @@ -827,12 +815,12 @@ namespace Barotrauma GUI.DrawLine(spriteBatch, new Vector2(DrawPosition.X, -DrawPosition.Y), new Vector2(item.DrawPosition.X, -item.DrawPosition.Y), Color.White * 0.1f, width: 4); } - foreach (Pair item in debugInteractablesNearCursor) + foreach ((Item item, float dist) in debugInteractablesNearCursor) { GUI.DrawLine(spriteBatch, cursorPos, - new Vector2(item.First.DrawPosition.X, -item.First.DrawPosition.Y), - ToolBox.GradientLerp(item.Second, GUI.Style.Red, GUI.Style.Orange, GUI.Style.Green), width: 2); + new Vector2(item.DrawPosition.X, -item.DrawPosition.Y), + ToolBox.GradientLerp(dist, GUI.Style.Red, GUI.Style.Orange, GUI.Style.Green), width: 2); } } return; @@ -856,6 +844,7 @@ namespace Barotrauma Vector2 nameSize = GUI.Font.MeasureString(name); Vector2 namePos = new Vector2(pos.X, pos.Y - 10.0f - (5.0f / cam.Zoom)) - nameSize * 0.5f / cam.Zoom; + Color nameColor = GetNameColor(); Vector2 screenSize = new Vector2(GameMain.GraphicsWidth, GameMain.GraphicsHeight); Vector2 viewportSize = new Vector2(cam.WorldView.Width, cam.WorldView.Height); @@ -865,18 +854,6 @@ namespace Barotrauma namePos *= viewportSize / screenSize; namePos.X += cam.WorldView.X; namePos.Y -= cam.WorldView.Y; - Color nameColor = Color.White; - if (Controlled != null && TeamID != Controlled.TeamID) - { - if (TeamID == CharacterTeamType.FriendlyNPC) - { - nameColor = UniqueNameColor ?? Color.SkyBlue; - } - else - { - nameColor = GUI.Style.Red; - } - } if (CampaignInteractionType != CampaignMode.InteractionType.None && AllowCustomInteract) { var iconStyle = GUI.Style.GetComponentStyle("CampaignInteractionBubble." + CampaignInteractionType); @@ -931,6 +908,40 @@ namespace Barotrauma } } + public Color GetNameColor() + { + CharacterTeamType team = teamID; + if (Info?.IsDisguisedAsAnother != null) + { + var idCard = Inventory.GetItemInLimbSlot(InvSlotType.Card)?.GetComponent(); + if (idCard != null) + { + if (team == CharacterTeamType.Team2 && idCard.TeamID != CharacterTeamType.Team2) + { + team = CharacterTeamType.Team1; + } + else if (team == CharacterTeamType.Team1 && idCard.TeamID == CharacterTeamType.Team2) + { + team = CharacterTeamType.Team2; + } + } + } + + Color nameColor = GUI.Style.TextColor; + if (Controlled != null && team != Controlled.TeamID) + { + if (TeamID == CharacterTeamType.FriendlyNPC) + { + nameColor = UniqueNameColor ?? Color.SkyBlue; + } + else + { + nameColor = GUI.Style.Red; + } + } + return nameColor; + } + /// /// Creates a progress bar that's "linked" to the specified object (or updates an existing one if there's one already linked to the object) /// The progress bar will automatically fade out after 1 sec if the method hasn't been called during that time @@ -958,12 +969,13 @@ namespace Barotrauma private readonly List matchingSounds = new List(); private SoundChannel soundChannel; - public void PlaySound(CharacterSound.SoundType soundType, float soundIntervalFactor = 1.0f) + public void PlaySound(CharacterSound.SoundType soundType, float soundIntervalFactor = 1.0f, float maxInterval = 0) { if (sounds == null || sounds.Count == 0) { return; } if (soundChannel != null && soundChannel.IsPlaying) { return; } if (GameMain.SoundManager?.Disabled ?? true) { return; } - if (soundTimer > soundInterval * soundIntervalFactor) { return; } + if (soundTimer > Params.SoundInterval * soundIntervalFactor) { return; } + if (Params.SoundInterval - soundTimer < maxInterval) { return; } matchingSounds.Clear(); foreach (var s in sounds) { @@ -975,7 +987,7 @@ namespace Barotrauma var selectedSound = matchingSounds.GetRandom(); if (selectedSound?.Sound == null) { return; } soundChannel = SoundPlayer.PlaySound(selectedSound.Sound, AnimController.WorldPosition, selectedSound.Volume, selectedSound.Range, hullGuess: CurrentHull, ignoreMuffling: selectedSound.IgnoreMuffling); - soundTimer = soundInterval; + soundTimer = Params.SoundInterval; } public void AddActiveObjectiveEntity(Entity entity, Sprite sprite, Color? color = null) @@ -1028,5 +1040,20 @@ namespace Barotrauma Rand.Range(50.0f, 500.0f), null); } } + + partial void OnMoneyChanged(int prevAmount, int newAmount) + { + if (newAmount > prevAmount) + { + int increase = newAmount - prevAmount; + GUI.AddMessage( + "+" + TextManager.GetWithVariable("currencyformat", "[credits]", increase.ToString()), + GUI.Style.Yellow, + Position + Vector2.UnitY * 150.0f, + Vector2.UnitY * 10.0f, + playSound: true, + subId: Submarine?.ID ?? -1);; + } + } } } diff --git a/Barotrauma/BarotraumaClient/ClientSource/Characters/CharacterHUD.cs b/Barotrauma/BarotraumaClient/ClientSource/Characters/CharacterHUD.cs index b208ae945..89859485a 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Characters/CharacterHUD.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Characters/CharacterHUD.cs @@ -391,7 +391,26 @@ namespace Barotrauma if (npc.CampaignInteractionType == CampaignMode.InteractionType.None || npc.Submarine != character.Submarine || npc.IsDead || npc.IsIncapacitated) { continue; } var iconStyle = GUI.Style.GetComponentStyle("CampaignInteractionIcon." + npc.CampaignInteractionType); - GUI.DrawIndicator(spriteBatch, npc.WorldPosition, cam, npc.CurrentHull == character.CurrentHull ? 500.0f : 100.0f, iconStyle.GetDefaultSprite(), iconStyle.Color); + Range visibleRange = new Range(npc.CurrentHull == Character.Controlled.CurrentHull ? 500.0f : 100.0f, float.PositiveInfinity); + if (npc.CampaignInteractionType == CampaignMode.InteractionType.Examine) + { + //TODO: we could probably do better than just hardcoding + //a check for InteractionType.Examine here. + + if (Vector2.DistanceSquared(character.Position, npc.Position) > 500f * 500f) { continue; } + + var body = Submarine.CheckVisibility(character.SimPosition, npc.SimPosition, ignoreLevel: true); + if (body != null && body.UserData as Character != npc) { continue; } + + visibleRange = new Range(-100f, 500f); + } + GUI.DrawIndicator( + spriteBatch, + npc.WorldPosition, + cam, + visibleRange, + iconStyle.GetDefaultSprite(), + iconStyle.Color); } foreach (Item item in Item.ItemList) @@ -400,7 +419,7 @@ namespace Barotrauma if (Vector2.DistanceSquared(character.Position, item.Position) > 500f*500f) { continue; } var body = Submarine.CheckVisibility(character.SimPosition, item.SimPosition, ignoreLevel: true); if (body != null && body.UserData as Item != item) { continue; } - GUI.DrawIndicator(spriteBatch, item.WorldPosition + new Vector2(0f, item.RectHeight * 0.65f), cam, new Vector2(-100f, 500.0f), item.IconStyle.GetDefaultSprite(), item.IconStyle.Color, createOffset: false); + GUI.DrawIndicator(spriteBatch, item.WorldPosition + new Vector2(0f, item.RectHeight * 0.65f), cam, new Range(-100f, 500.0f), item.IconStyle.GetDefaultSprite(), item.IconStyle.Color, createOffset: false); } } @@ -525,12 +544,7 @@ namespace Barotrauma textPos -= new Vector2(textSize.X / 2, textSize.Y); - Color nameColor = GUI.Style.TextColor; - if (character.TeamID != character.FocusedCharacter.TeamID) - { - nameColor = character.FocusedCharacter.TeamID == CharacterTeamType.FriendlyNPC ? Color.SkyBlue : GUI.Style.Red; - } - + Color nameColor = character.FocusedCharacter.GetNameColor(); GUI.DrawString(spriteBatch, textPos, focusName, nameColor, Color.Black * 0.7f, 2, GUI.SubHeadingFont); textPos.X += 10.0f * GUI.Scale; textPos.Y += GUI.SubHeadingFont.MeasureString(focusName).Y; @@ -544,11 +558,14 @@ namespace Barotrauma if (character.FocusedCharacter.CanBeDragged) { - GUI.DrawString(spriteBatch, textPos, GetCachedHudText("GrabHint", GameMain.Config.KeyBindText(InputType.Grab)), + string text = character.CanEat ? "EatHint" : "GrabHint"; + GUI.DrawString(spriteBatch, textPos, GetCachedHudText(text, GameMain.Config.KeyBindText(InputType.Grab)), GUI.Style.Green, Color.Black, 2, GUI.SmallFont); textPos.Y += largeTextSize.Y; } + if (!character.DisableHealthWindow && + character.IsFriendly(character.FocusedCharacter) && character.FocusedCharacter.CharacterHealth.UseHealthWindow && character.CanInteractWith(character.FocusedCharacter, 160f, false)) { diff --git a/Barotrauma/BarotraumaClient/ClientSource/Characters/CharacterInfo.cs b/Barotrauma/BarotraumaClient/ClientSource/Characters/CharacterInfo.cs index 1d2892d72..c27aab975 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Characters/CharacterInfo.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Characters/CharacterInfo.cs @@ -170,15 +170,37 @@ namespace Barotrauma if (TeamID == CharacterTeamType.FriendlyNPC) { return; } if (Character.Controlled != null && Character.Controlled.TeamID != TeamID) { return; } + // if we increased by more than 1 in one increase, then display special color (for talents) + bool specialIncrease = Math.Abs(newLevel - prevLevel) >= 1.0f; + if ((int)newLevel > (int)prevLevel) { int increase = Math.Max((int)newLevel - (int)prevLevel, 1); GUI.AddMessage( - string.Format("+{0} {1}", increase, TextManager.Get("SkillName." + skillIdentifier)), - GUI.Style.Green, + string.Format("+{0} {1}", increase, TextManager.Get("SkillName." + skillIdentifier)), + specialIncrease ? GUI.Style.Orange : GUI.Style.Green, textPopupPos, Vector2.UnitY * 10.0f, - playSound: false, + playSound: specialIncrease, + subId: Character?.Submarine?.ID ?? -1); + } + } + + partial void OnExperienceChanged(int prevAmount, int newAmount, Vector2 textPopupPos) + { + if (Character.Controlled != null && Character.Controlled.TeamID != TeamID) { return; } + + GameSession.TabMenuInstance?.OnExperienceChanged(Character); + + if (newAmount > prevAmount) + { + int increase = newAmount - prevAmount; + GUI.AddMessage( + string.Format("+{0} {1}", increase, TextManager.Get("experienceshort")), + GUI.Style.Blue, + textPopupPos, + Vector2.UnitY * 10.0f, + playSound: true, subId: Character?.Submarine?.ID ?? -1); } } @@ -591,6 +613,17 @@ namespace Barotrauma } ch.Job.Skills.RemoveAll(s => !skillLevels.ContainsKey(s.Identifier)); } + + byte savedStatValueCount = inc.ReadByte(); + for (int i = 0; i < savedStatValueCount; i++) + { + int statType = inc.ReadByte(); + string statIdentifier = inc.ReadString(); + float statValue = inc.ReadSingle(); + bool removeOnDeath = inc.ReadBoolean(); + ch.ChangeSavedStatValue((StatTypes)statType, statValue, statIdentifier, removeOnDeath); + } + return ch; } } diff --git a/Barotrauma/BarotraumaClient/ClientSource/Characters/CharacterNetworking.cs b/Barotrauma/BarotraumaClient/ClientSource/Characters/CharacterNetworking.cs index 0798a00d3..34a5e6378 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Characters/CharacterNetworking.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Characters/CharacterNetworking.cs @@ -119,15 +119,23 @@ namespace Barotrauma switch ((NetEntityEvent.Type)extraData[0]) { case NetEntityEvent.Type.InventoryState: - msg.WriteRangedInteger(0, 0, 3); + msg.WriteRangedInteger(0, 0, 4); Inventory.ClientWrite(msg, extraData); break; case NetEntityEvent.Type.Treatment: - msg.WriteRangedInteger(1, 0, 3); + msg.WriteRangedInteger(1, 0, 4); msg.Write(AnimController.Anim == AnimController.Animation.CPR); break; case NetEntityEvent.Type.Status: - msg.WriteRangedInteger(2, 0, 3); + msg.WriteRangedInteger(2, 0, 4); + break; + case NetEntityEvent.Type.UpdateTalents: + msg.WriteRangedInteger(3, 0, 4); + msg.Write((ushort)characterTalents.Count); + foreach (var unlockedTalent in characterTalents) + { + msg.Write(unlockedTalent.Prefab.UIntIdentifier); + } break; } } @@ -258,7 +266,7 @@ namespace Barotrauma if (readStatus) { ReadStatus(msg); - (AIController as EnemyAIController)?.PetBehavior?.ClientRead(msg); + AIController?.ClientRead(msg); } msg.ReadPadBits(); @@ -291,7 +299,7 @@ namespace Barotrauma break; case ServerNetObject.ENTITY_EVENT: - int eventType = msg.ReadRangedInteger(0, 9); + int eventType = msg.ReadRangedInteger(0, 12); switch (eventType) { case 0: //NetEntityEvent.Type.InventoryState @@ -387,6 +395,7 @@ namespace Barotrauma if (eventType == 4) { SetAttackTarget(attackLimb, targetEntity, targetSimPos); + PlaySound(CharacterSound.SoundType.Attack, maxInterval: 3); } else { @@ -450,6 +459,23 @@ namespace Barotrauma } } break; + case 10: //NetEntityEvent.Type.UpdateExperience + int experienceAmount = msg.ReadInt32(); + info?.SetExperience(experienceAmount); + break; + case 11: //NetEntityEvent.Type.UpdateTalents: + ushort talentCount = msg.ReadUInt16(); + for (int i = 0; i < talentCount; i++) + { + UInt32 talentIdentifier = msg.ReadUInt32(); + GiveTalent(talentIdentifier); + } + break; + case 12: //NetEntityEvent.Type.UpdateMoney: + int moneyAmount = msg.ReadInt32(); + SetMoney(moneyAmount); + break; + } msg.ReadPadBits(); break; diff --git a/Barotrauma/BarotraumaClient/ClientSource/Characters/Health/CharacterHealth.cs b/Barotrauma/BarotraumaClient/ClientSource/Characters/Health/CharacterHealth.cs index 4dc901c4f..d7b75bbd3 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Characters/Health/CharacterHealth.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Characters/Health/CharacterHealth.cs @@ -543,7 +543,7 @@ namespace Barotrauma else { var causeOfDeath = GetCauseOfDeath(); - Character.Controlled.Kill(causeOfDeath.First, causeOfDeath.Second); + Character.Controlled.Kill(causeOfDeath.type, causeOfDeath.affliction); Character.Controlled = null; } } @@ -683,19 +683,33 @@ namespace Barotrauma float particleMaxScale = emitter?.Prefab.Properties.ScaleMax ?? 1; float severity = Math.Min(affliction.Strength / affliction.Prefab.MaxStrength * Character.Params.BleedParticleMultiplier, 1); float bloodParticleSize = MathHelper.Lerp(particleMinScale, particleMaxScale, severity); + + Vector2 velocity = Rand.Vector(affliction.Strength * 0.1f); if (!inWater) { bloodParticleSize *= 2.0f; + velocity = targetLimb.LinearVelocity * 100.0f; } // TODO: use the blood emitter? var blood = GameMain.ParticleManager.CreateParticle( inWater ? Character.Params.BleedParticleWater : Character.Params.BleedParticleAir, - targetLimb.WorldPosition, Rand.Vector(affliction.Strength), 0.0f, Character.AnimController.CurrentHull); + targetLimb.WorldPosition, velocity, 0.0f, Character.AnimController.CurrentHull); - if (blood != null) + if (blood != null && !inWater) { blood.Size *= bloodParticleSize; + if (!string.IsNullOrEmpty(Character.BloodDecalName) && Rand.Range(0.0f, 1.0f) < 0.05f) + { + blood.OnCollision += (Vector2 pos, Hull hull) => + { + var decal = hull?.AddDecal(Character.BloodDecalName, pos, Rand.Range(1.0f, 2.0f), isNetworkEvent: true); + if (decal != null) + { + decal.FadeTimer = decal.LifeTime - decal.FadeOutTime * 2; + } + }; + } } bloodParticleTimer = MathHelper.Lerp(2, 0.5f, severity); } @@ -1968,9 +1982,9 @@ namespace Barotrauma healthBarHolder.Visible = value; } - private readonly List> newAfflictions = new List>(); - private readonly List> newLimbAfflictions = new List>(); - private readonly List> newPeriodicEffects = new List>(); + private readonly List<(AfflictionPrefab afflictionPrefab, float strength)> newAfflictions = new List<(AfflictionPrefab afflictionPrefab, float strength)>(); + private readonly List<(LimbHealth limb, AfflictionPrefab afflictionPrefab, float strength)> newLimbAfflictions = new List<(LimbHealth limb, AfflictionPrefab afflictionPrefab, float strength)>(); + private readonly List<(AfflictionPrefab.PeriodicEffect effect, float timer)> newPeriodicEffects = new List<(AfflictionPrefab.PeriodicEffect effect, float timer)>(); public void ClientRead(IReadMessage inc) { @@ -1997,41 +2011,41 @@ namespace Barotrauma for (int j = 0; j < periodicAfflictionCount; j++) { float periodicAfflictionTimer = inc.ReadRangedSingle(afflictionPrefab.PeriodicEffects[j].MinInterval, afflictionPrefab.PeriodicEffects[j].MaxInterval, 8); - newPeriodicEffects.Add(new Pair(afflictionPrefab.PeriodicEffects[j], periodicAfflictionTimer)); + newPeriodicEffects.Add((afflictionPrefab.PeriodicEffects[j], periodicAfflictionTimer)); } - newAfflictions.Add(new Pair(afflictionPrefab, afflictionStrength)); + newAfflictions.Add((afflictionPrefab, afflictionStrength)); } foreach (Affliction affliction in afflictions) { //deactivate afflictions that weren't included in the network message - if (!newAfflictions.Any(a => a.First == affliction.Prefab)) + if (!newAfflictions.Any(a => a.afflictionPrefab == affliction.Prefab)) { affliction.Strength = 0.0f; } } - foreach (Pair newAffliction in newAfflictions) + foreach (var (afflictionPrefab, strength) in newAfflictions) { - Affliction existingAffliction = afflictions.Find(a => a.Prefab == newAffliction.First); + Affliction existingAffliction = afflictions.Find(a => a.Prefab == afflictionPrefab); if (existingAffliction == null) { - existingAffliction = newAffliction.First.Instantiate(newAffliction.Second); + existingAffliction = afflictionPrefab.Instantiate(strength); afflictions.Add(existingAffliction); } - existingAffliction.SetStrength(newAffliction.Second); + existingAffliction.SetStrength(strength); if (existingAffliction == stunAffliction) { Character.SetStun(existingAffliction.Strength, true, true); } foreach (var periodicEffect in newPeriodicEffects) { - if (!existingAffliction.Prefab.PeriodicEffects.Contains(periodicEffect.First)) { continue; } + if (!existingAffliction.Prefab.PeriodicEffects.Contains(periodicEffect.effect)) { continue; } //timer has wrapped around, apply the effect - if (periodicEffect.Second - existingAffliction.PeriodicEffectTimers[periodicEffect.First] > periodicEffect.First.MinInterval / 2) + if (periodicEffect.timer - existingAffliction.PeriodicEffectTimers[periodicEffect.effect] > periodicEffect.effect.MinInterval / 2) { - existingAffliction.PeriodicEffectTimers[periodicEffect.First] = periodicEffect.Second; - foreach (StatusEffect effect in periodicEffect.First.StatusEffects) + existingAffliction.PeriodicEffectTimers[periodicEffect.effect] = periodicEffect.timer; + foreach (StatusEffect effect in periodicEffect.effect.StatusEffects) { existingAffliction.ApplyStatusEffect(ActionType.OnActive, effect, deltaTime: 1.0f, this, targetLimb: null); } @@ -2063,9 +2077,9 @@ namespace Barotrauma for (int j = 0; j < periodicAfflictionCount; j++) { float periodicAfflictionTimer = inc.ReadRangedSingle(afflictionPrefab.PeriodicEffects[j].MinInterval, afflictionPrefab.PeriodicEffects[j].MaxInterval, 8); - newPeriodicEffects.Add(new Pair(afflictionPrefab.PeriodicEffects[j], periodicAfflictionTimer)); + newPeriodicEffects.Add((afflictionPrefab.PeriodicEffects[j], periodicAfflictionTimer)); } - newLimbAfflictions.Add(new Triplet(limbHealths[limbIndex], afflictionPrefab, afflictionStrength)); + newLimbAfflictions.Add((limbHealths[limbIndex], afflictionPrefab, afflictionStrength)); } foreach (LimbHealth limbHealth in limbHealths) @@ -2073,33 +2087,33 @@ namespace Barotrauma foreach (Affliction affliction in limbHealth.Afflictions) { //deactivate afflictions that weren't included in the network message - if (!newLimbAfflictions.Any(a => a.First == limbHealth && a.Second == affliction.Prefab)) + if (!newLimbAfflictions.Any(a => a.limb == limbHealth && a.afflictionPrefab == affliction.Prefab)) { affliction.Strength = 0.0f; } } - foreach (Triplet newAffliction in newLimbAfflictions) + foreach (var (limb, afflictionPrefab, strength) in newLimbAfflictions) { - if (newAffliction.First != limbHealth) { continue; } - Affliction existingAffliction = limbHealth.Afflictions.Find(a => a.Prefab == newAffliction.Second); + if (limb != limbHealth) { continue; } + Affliction existingAffliction = limbHealth.Afflictions.Find(a => a.Prefab == afflictionPrefab); if (existingAffliction == null) { - existingAffliction = newAffliction.Second.Instantiate(newAffliction.Third); + existingAffliction = afflictionPrefab.Instantiate(strength); limbHealth.Afflictions.Add(existingAffliction); } - existingAffliction.SetStrength(newAffliction.Third); + existingAffliction.SetStrength(strength); foreach (var periodicEffect in newPeriodicEffects) { - if (!existingAffliction.Prefab.PeriodicEffects.Contains(periodicEffect.First)) { continue; } + if (!existingAffliction.Prefab.PeriodicEffects.Contains(periodicEffect.effect)) { continue; } //timer has wrapped around, apply the effect - if (periodicEffect.Second - existingAffliction.PeriodicEffectTimers[periodicEffect.First] > periodicEffect.First.MinInterval / 2) + if (periodicEffect.timer - existingAffliction.PeriodicEffectTimers[periodicEffect.effect] > periodicEffect.effect.MinInterval / 2) { - existingAffliction.PeriodicEffectTimers[periodicEffect.First] = periodicEffect.Second; - foreach (StatusEffect effect in periodicEffect.First.StatusEffects) + existingAffliction.PeriodicEffectTimers[periodicEffect.effect] = periodicEffect.timer; + foreach (StatusEffect effect in periodicEffect.effect.StatusEffects) { - Limb targetLimb = Character.AnimController.Limbs.FirstOrDefault(l => l.HealthIndex == limbHealths.IndexOf(newAffliction.First)); + Limb targetLimb = Character.AnimController.Limbs.FirstOrDefault(l => l.HealthIndex == limbHealths.IndexOf(limb)); existingAffliction.ApplyStatusEffect(ActionType.OnActive, effect, deltaTime: 1.0f, this, targetLimb: targetLimb); } } diff --git a/Barotrauma/BarotraumaClient/ClientSource/DebugConsole.cs b/Barotrauma/BarotraumaClient/ClientSource/DebugConsole.cs index 89805c561..69c8a1836 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/DebugConsole.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/DebugConsole.cs @@ -418,14 +418,14 @@ namespace Barotrauma ShowQuestionPrompt("The automatic hull generation may not work correctly if your submarine uses curved walls. Do you want to continue? Y/N", (option2) => { - if (option2.ToLower() == "y") { GameMain.SubEditorScreen.AutoHull(); } + if (option2.ToLowerInvariant() == "y") { GameMain.SubEditorScreen.AutoHull(); } }); }); } else { ShowQuestionPrompt("The automatic hull generation may not work correctly if your submarine uses curved walls. Do you want to continue? Y/N", - (option) => { if (option.ToLower() == "y") GameMain.SubEditorScreen.AutoHull(); }); + (option) => { if (option.ToLowerInvariant() == "y") GameMain.SubEditorScreen.AutoHull(); }); } })); @@ -608,7 +608,7 @@ namespace Barotrauma ShowQuestionPrompt($"Some keybinds may render the game unusable, are you sure you want to make these keybinds persistent? ({Keybinds.Count} keybind(s) assigned) Y/N", (option2) => { - if (option2.ToLower() != "y") + if (option2.ToLowerInvariant() != "y") { NewMessage("Aborted.", GUI.Style.Red); return; @@ -689,6 +689,9 @@ namespace Barotrauma AssignRelayToServer("setskill", true); AssignRelayToServer("readycheck", true); + AssignRelayToServer("givetalent", true); + AssignRelayToServer("giveexperience", true); + AssignOnExecute("control", (string[] args) => { if (args.Length < 1) return; diff --git a/Barotrauma/BarotraumaClient/ClientSource/GUI/GUI.cs b/Barotrauma/BarotraumaClient/ClientSource/GUI/GUI.cs index 57e963b91..e3141a7b8 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/GUI/GUI.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/GUI/GUI.cs @@ -163,6 +163,7 @@ namespace Barotrauma public static ScalableFont SubHeadingFont => Style?.SubHeadingFont; public static ScalableFont DigitalFont => Style?.DigitalFont; public static ScalableFont HotkeyFont => Style?.HotkeyFont; + public static ScalableFont MonospacedFont => Style?.MonospacedFont; public static ScalableFont CJKFont { get; private set; } @@ -306,7 +307,7 @@ namespace Barotrauma }); SubmarineIcon = new Sprite("Content/UI/MainIconsAtlas.png", new Rectangle(452, 385, 182, 81), new Vector2(0.5f, 0.5f)); - arrow = new Sprite("Content/UI/MainIconsAtlas.png", new Rectangle(392, 393, 49, 45), new Vector2(0.5f, 0.5f)); + arrow = new Sprite("Content/UI/MainIconsAtlas.png", new Rectangle(393, 393, 49, 45), new Vector2(0.5f, 0.5f)); SpeechBubbleIcon = new Sprite("Content/UI/MainIconsAtlas.png", new Rectangle(385, 449, 66, 60), new Vector2(0.5f, 0.5f)); BrokenIcon = new Sprite("Content/UI/MainIconsAtlas.png", new Rectangle(898, 386, 123, 123), new Vector2(0.5f, 0.5f)); } @@ -672,6 +673,12 @@ namespace Barotrauma spriteBatch.End(); spriteBatch.Begin(SpriteSortMode.Deferred, samplerState: SamplerStateClamp, rasterizerState: GameMain.ScissorTestEnable); + if (GameMain.GameSession?.CrewManager is { DraggedOrder: { SymbolSprite: { } orderSprite, Color: var color }, DragOrder: true }) + { + float spriteSize = Math.Max(orderSprite.size.X, orderSprite.size.Y); + orderSprite.Draw(spriteBatch, PlayerInput.LatestMousePosition, color, orderSprite.size / 2f, scale: 32f / spriteSize * Scale); + } + var sprite = MouseCursorSprites[(int)MouseCursor] ?? MouseCursorSprites[(int)CursorState.Default]; sprite.Draw(spriteBatch, PlayerInput.LatestMousePosition, Color.White, sprite.Origin, 0f, Scale / 1.5f); @@ -927,13 +934,14 @@ namespace Barotrauma GUIComponent prevMouseOn = MouseOn; MouseOn = null; int inventoryIndex = -1; - - if (Inventory.IsMouseOnInventory()) + + Inventory.RefreshMouseOnInventory(); + if (Inventory.IsMouseOnInventory) { inventoryIndex = updateList.IndexOf(CharacterHUD.HUDFrame); } - if (!PlayerInput.PrimaryMouseButtonHeld() && !PlayerInput.PrimaryMouseButtonClicked()) + if ((!PlayerInput.PrimaryMouseButtonHeld() && !PlayerInput.PrimaryMouseButtonClicked()) || prevMouseOn == null) { for (var i = updateList.Count - 1; i > inventoryIndex; i--) { @@ -941,10 +949,9 @@ namespace Barotrauma if (!c.CanBeFocused) { continue; } if (c.MouseRect.Contains(PlayerInput.MousePosition)) { - if ((!PlayerInput.PrimaryMouseButtonHeld() && !PlayerInput.PrimaryMouseButtonClicked()) || c == prevMouseOn) + if ((!PlayerInput.PrimaryMouseButtonHeld() && !PlayerInput.PrimaryMouseButtonClicked()) || c == prevMouseOn || prevMouseOn == null) { MouseOn = c; - var sakdjfnsjkd = c.MouseRect; } break; } @@ -958,7 +965,6 @@ namespace Barotrauma MouseCursor = UpdateMouseCursorState(MouseOn); return MouseOn; } - } private static CursorState UpdateMouseCursorState(GUIComponent c) @@ -1050,7 +1056,7 @@ namespace Barotrauma { if (listBox.DraggedElement != null) { return CursorState.Dragging; } if (listBox.CanDragElements) { return CursorState.Move; } - + var hoverParent = c; while (true) { @@ -1059,14 +1065,14 @@ namespace Barotrauma hoverParent = hoverParent.Parent; } } - + if (parent != null && parent.CanBeFocused) { if (!parent.Rect.Equals(monitorRect)) { return parent.HoverCursor; } } } - - if (Inventory.IsMouseOnInventory()) { return Inventory.GetInventoryMouseCursor(); } + + if (Inventory.IsMouseOnInventory) { return Inventory.GetInventoryMouseCursor(); } var character = Character.Controlled; // ReSharper disable once InvertIf @@ -1343,7 +1349,7 @@ namespace Barotrauma /// Should the indicator move based on the camera position? /// Override the distance-based alpha value with the specified alpha value - public static void DrawIndicator(SpriteBatch spriteBatch, in Vector2 worldPosition, Camera cam, in Vector2 visibleRange, Sprite sprite, in Color color, + public static void DrawIndicator(SpriteBatch spriteBatch, in Vector2 worldPosition, Camera cam, in Range visibleRange, Sprite sprite, in Color color, bool createOffset = true, float scaleMultiplier = 1.0f, float? overrideAlpha = null) { Vector2 diff = worldPosition - cam.WorldViewCenter; @@ -1351,9 +1357,9 @@ namespace Barotrauma float symbolScale = Math.Min(64.0f / sprite.size.X, 1.0f) * scaleMultiplier * Scale; - if (overrideAlpha.HasValue || (dist > visibleRange.X && dist < visibleRange.Y)) + if (overrideAlpha.HasValue || (dist > visibleRange.Start && dist < visibleRange.End)) { - float alpha = overrideAlpha ?? MathUtils.Min((dist - visibleRange.X) / 100.0f, 1.0f - ((dist - visibleRange.Y + 100f) / 100.0f), 1.0f); + float alpha = overrideAlpha ?? MathUtils.Min((dist - visibleRange.Start) / 100.0f, 1.0f - ((dist - visibleRange.End + 100f) / 100.0f), 1.0f); Vector2 targetScreenPos = cam.WorldToScreen(worldPosition); if (!createOffset) @@ -1417,7 +1423,7 @@ namespace Barotrauma public static void DrawIndicator(SpriteBatch spriteBatch, Vector2 worldPosition, Camera cam, float hideDist, Sprite sprite, Color color, bool createOffset = true, float scaleMultiplier = 1.0f, float? overrideAlpha = null) { - DrawIndicator(spriteBatch, worldPosition, cam, new Vector2(hideDist, float.PositiveInfinity), sprite, color, createOffset, scaleMultiplier, overrideAlpha); + DrawIndicator(spriteBatch, worldPosition, cam, new Range(hideDist, float.PositiveInfinity), sprite, color, createOffset, scaleMultiplier, overrideAlpha); } public static void DrawLine(SpriteBatch sb, Vector2 start, Vector2 end, Color clr, float depth = 0.0f, float width = 1) @@ -1520,6 +1526,11 @@ namespace Barotrauma } } + public static void DrawFilledRectangle(SpriteBatch sb, RectangleF rect, Color clr, float depth = 0.0f) + { + DrawFilledRectangle(sb, rect.Location, rect.Size, clr, depth); + } + public static void DrawFilledRectangle(SpriteBatch sb, Vector2 start, Vector2 size, Color clr, float depth = 0.0f) { if (size.X < 0) diff --git a/Barotrauma/BarotraumaClient/ClientSource/GUI/GUIComponent.cs b/Barotrauma/BarotraumaClient/ClientSource/GUI/GUIComponent.cs index ecc75885a..34e99bc03 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/GUI/GUIComponent.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/GUI/GUIComponent.cs @@ -52,13 +52,13 @@ namespace Barotrauma public GUIComponent GetChild(int index) { - if (index < 0 || index >= CountChildren) return null; + if (index < 0 || index >= CountChildren) { return null; } return RectTransform.GetChild(index).GUIComponent; } public int GetChildIndex(GUIComponent child) { - if (child == null) return -1; + if (child == null) { return -1; } return RectTransform.GetChildIndex(child.RectTransform); } @@ -66,7 +66,7 @@ namespace Barotrauma { foreach (GUIComponent child in Children) { - if (child.UserData == obj || (child.userData != null && child.userData.Equals(obj))) return child; + if (child.UserData == obj || (child.userData != null && child.userData.Equals(obj))) { return child; } } return null; } @@ -175,6 +175,8 @@ namespace Barotrauma public bool GlowOnSelect { get; set; } + public Vector2 UVOffset { get; set; } + private CoroutineHandle pulsateCoroutine; protected Color flashColor; @@ -256,9 +258,9 @@ namespace Barotrauma protected Rectangle ClampRect(Rectangle r) { - if (Parent == null || !ClampMouseRectToParent) return r; + if (Parent == null || !ClampMouseRectToParent) { return r; } Rectangle parentRect = Parent.ClampRect(Parent.Rect); - if (parentRect.Width <= 0 || parentRect.Height <= 0) return Rectangle.Empty; + if (parentRect.Width <= 0 || parentRect.Height <= 0) { return Rectangle.Empty; } if (parentRect.X > r.X) { int diff = parentRect.X - r.X; @@ -281,7 +283,7 @@ namespace Barotrauma int diff = (r.Y + r.Height) - (parentRect.Y + parentRect.Height); r.Height -= diff; } - if (r.Width <= 0 || r.Height <= 0) return Rectangle.Empty; + if (r.Width <= 0 || r.Height <= 0) { return Rectangle.Empty; } return r; } @@ -295,7 +297,7 @@ namespace Barotrauma { get { - if (!CanBeFocused) return Rectangle.Empty; + if (!CanBeFocused) { return Rectangle.Empty; } return ClampMouseRectToParent ? ClampRect(Rect) : Rect; } } @@ -431,7 +433,7 @@ namespace Barotrauma #region Updating public virtual void AddToGUIUpdateList(bool ignoreChildren = false, int order = 0) { - if (!Visible) return; + if (!Visible) { return; } UpdateOrder = order; GUI.AddToUpdateList(this); @@ -463,7 +465,7 @@ namespace Barotrauma /// public void UpdateManually(float deltaTime, bool alsoChildren = false, bool recursive = true) { - if (!Visible) return; + if (!Visible) { return; } AutoUpdate = false; Update(deltaTime); @@ -475,7 +477,7 @@ namespace Barotrauma protected virtual void Update(float deltaTime) { - if (!Visible) return; + if (!Visible) { return; } if (CanBeFocused && OnSecondaryClicked != null) { @@ -555,7 +557,7 @@ namespace Barotrauma /// public virtual void DrawManually(SpriteBatch spriteBatch, bool alsoChildren = false, bool recursive = true) { - if (!Visible) return; + if (!Visible) { return; } AutoDraw = false; Draw(spriteBatch); @@ -598,7 +600,7 @@ namespace Barotrauma protected virtual void Draw(SpriteBatch spriteBatch) { - if (!Visible) return; + if (!Visible) { return; } var rect = Rect; GetBlendedColor(GetColor(State), ref _currentColor); @@ -653,7 +655,7 @@ namespace Barotrauma ? MathUtils.InverseLerp(0, SpriteCrossFadeTime, ToolBox.GetEasing(uiSprite.TransitionMode, spriteFadeTimer)) : 0; if (alphaMultiplier > 0) { - uiSprite.Draw(spriteBatch, rect, previousColor * alphaMultiplier, SpriteEffects); + uiSprite.Draw(spriteBatch, rect, previousColor * alphaMultiplier, SpriteEffects, uvOffset: UVOffset); } } } @@ -667,7 +669,11 @@ namespace Barotrauma ? MathUtils.InverseLerp(SpriteCrossFadeTime, 0, ToolBox.GetEasing(uiSprite.TransitionMode, spriteFadeTimer)) : (_currentColor.A / 255.0f); if (alphaMultiplier > 0) { - uiSprite.Draw(spriteBatch, rect, _currentColor * alphaMultiplier, SpriteEffects); + // * (rect.Location.Y - PlayerInput.MousePosition.Y) / rect.Height + Vector2 offset = new Vector2( + MathUtils.PositiveModulo((int)-UVOffset.X, uiSprite.Sprite.SourceRect.Width), + MathUtils.PositiveModulo((int)-UVOffset.Y, uiSprite.Sprite.SourceRect.Height)); + uiSprite.Draw(spriteBatch, rect, _currentColor * alphaMultiplier, SpriteEffects, uvOffset: offset); } } } @@ -708,7 +714,7 @@ namespace Barotrauma /// public void DrawToolTip(SpriteBatch spriteBatch) { - if (!Visible) return; + if (!Visible) { return; } DrawToolTip(spriteBatch, ToolTip, GUI.MouseOn.Rect, TooltipRichTextData); } @@ -1048,7 +1054,7 @@ namespace Barotrauma { case "language": string[] languages = element.GetAttributeStringArray(attribute.Name.ToString(), new string[0]); - if (!languages.Any(l => GameMain.Config.Language.ToLower() == l.ToLower())) { return false; } + if (!languages.Any(l => GameMain.Config.Language.Equals(l, StringComparison.OrdinalIgnoreCase))) { return false; } break; case "gameversion": var version = new Version(attribute.Value); @@ -1213,8 +1219,7 @@ namespace Barotrauma private static GUIImage LoadGUIImage(XElement element, RectTransform parent) { - Sprite sprite = null; - + Sprite sprite; string url = element.GetAttributeString("url", ""); if (!string.IsNullOrEmpty(url)) { diff --git a/Barotrauma/BarotraumaClient/ClientSource/GUI/GUIFrame.cs b/Barotrauma/BarotraumaClient/ClientSource/GUI/GUIFrame.cs index 0e5d5ca42..8e5b77664 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/GUI/GUIFrame.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/GUI/GUIFrame.cs @@ -28,7 +28,7 @@ namespace Barotrauma if (OutlineColor != Color.Transparent) { - GUI.DrawRectangle(spriteBatch, Rect, OutlineColor * (OutlineColor.A/255.0f), false, thickness: OutlineThickness); + GUI.DrawRectangle(spriteBatch, Rect, OutlineColor, false, thickness: OutlineThickness); } } } diff --git a/Barotrauma/BarotraumaClient/ClientSource/GUI/GUIListBox.cs b/Barotrauma/BarotraumaClient/ClientSource/GUI/GUIListBox.cs index 9761bf213..ff2d3c4a7 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/GUI/GUIListBox.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/GUI/GUIListBox.cs @@ -33,7 +33,7 @@ namespace Barotrauma public GUIFrame Content { get; private set; } public GUIScrollBar ScrollBar { get; private set; } - private Dictionary childVisible = new Dictionary(); + private readonly Dictionary childVisible = new Dictionary(); private int totalSize; private bool childrenNeedsRecalculation; @@ -224,7 +224,7 @@ namespace Barotrauma { if (value == false && canDragElements && draggedElement != null) { - draggedElement = null; + DraggedElement = null; } canDragElements = value; } @@ -233,8 +233,21 @@ namespace Barotrauma private GUIComponent draggedElement; private Rectangle draggedReferenceRectangle; private Point draggedReferenceOffset; + public bool HasDraggedElementIndexChanged { get; private set; } - public GUIComponent DraggedElement => draggedElement; + public GUIComponent DraggedElement + { + get + { + return draggedElement; + } + set + { + if (value == draggedElement) { return; } + draggedElement = value; + HasDraggedElementIndexChanged = false; + } + } private readonly bool isHorizontal; @@ -472,7 +485,7 @@ namespace Barotrauma if (!PlayerInput.PrimaryMouseButtonHeld()) { OnRearranged?.Invoke(this, draggedElement.UserData); - draggedElement = null; + DraggedElement = null; RepositionChildren(); } else @@ -518,6 +531,7 @@ namespace Barotrauma if (currIndex != index) { draggedElement.RectTransform.RepositionChildInHierarchy(currIndex); + HasDraggedElementIndexChanged = true; } return; @@ -577,7 +591,7 @@ namespace Barotrauma if (CanDragElements && PlayerInput.PrimaryMouseButtonDown() && GUI.MouseOn == child) { - draggedElement = child; + DraggedElement = child; draggedReferenceRectangle = child.Rect; draggedReferenceOffset = child.RectTransform.AbsoluteOffset; } @@ -750,7 +764,7 @@ namespace Barotrauma } } - if ((GUI.IsMouseOn(this) || GUI.IsMouseOn(ScrollBar)) && AllowMouseWheelScroll && PlayerInput.ScrollWheelSpeed != 0) + if (PlayerInput.ScrollWheelSpeed != 0 && AllowMouseWheelScroll && (FindScrollableParentListBox(GUI.MouseOn) == this || GUI.IsMouseOn(ScrollBar))) { if (SmoothScroll) { @@ -773,7 +787,6 @@ namespace Barotrauma ScrollBar.BarScroll -= (PlayerInput.ScrollWheelSpeed / 500.0f) * BarSize; } } - ScrollBar.Enabled = ScrollBarEnabled && BarSize < 1.0f; if (AutoHideScrollBar) @@ -785,6 +798,13 @@ namespace Barotrauma UpdateDimensions(); } } + + private static GUIListBox FindScrollableParentListBox(GUIComponent target) + { + if (target is GUIListBox listBox && listBox.ScrollBarEnabled && listBox.BarSize < 1.0f) { return listBox; } + if (target?.Parent == null) { return null; } + return FindScrollableParentListBox(target.Parent); + } public void SelectNext(bool force = false, bool autoScroll = true, bool takeKeyBoardFocus = false) { @@ -982,7 +1002,7 @@ namespace Barotrauma if (child == null) { return; } child.RectTransform.Parent = null; if (selected.Contains(child)) { selected.Remove(child); } - if (draggedElement == child) { draggedElement = null; } + if (draggedElement == child) { DraggedElement = null; } UpdateScrollBarSize(); } diff --git a/Barotrauma/BarotraumaClient/ClientSource/GUI/GUIScissorComponent.cs b/Barotrauma/BarotraumaClient/ClientSource/GUI/GUIScissorComponent.cs new file mode 100644 index 000000000..07119e38a --- /dev/null +++ b/Barotrauma/BarotraumaClient/ClientSource/GUI/GUIScissorComponent.cs @@ -0,0 +1,87 @@ +using System; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; + +namespace Barotrauma +{ + public class GUIScissorComponent: GUIComponent + { + public GUIComponent Content; + + public GUIScissorComponent(RectTransform rectT) : base(null, rectT) + { + Content = new GUIFrame(new RectTransform(Vector2.One, rectT), style: null) + { + CanBeFocused = false + }; + } + + protected override void Update(float deltaTime) + { + base.Update(deltaTime); + + foreach (GUIComponent child in Children) + { + if (child == Content) { continue; } + throw new InvalidOperationException($"Children were found in {nameof(GUIScissorComponent)}, Add them to {nameof(GUIScissorComponent)}.{nameof(Content)} instead."); + } + + ClampChildMouseRects(Content); + } + + protected override void Draw(SpriteBatch spriteBatch) + { + if (!Visible) { return; } + + Rectangle prevScissorRect = spriteBatch.GraphicsDevice.ScissorRectangle; + RasterizerState prevRasterizerState = spriteBatch.GraphicsDevice.RasterizerState; + + spriteBatch.End(); + spriteBatch.GraphicsDevice.ScissorRectangle = Rectangle.Intersect(prevScissorRect, Rect); + spriteBatch.Begin(SpriteSortMode.Deferred, samplerState: GUI.SamplerState, rasterizerState: GameMain.ScissorTestEnable); + + foreach (GUIComponent child in Content.Children) + { + if (!child.Visible) { continue; } + child.DrawManually(spriteBatch, alsoChildren: true, recursive: true); + } + + spriteBatch.End(); + spriteBatch.GraphicsDevice.ScissorRectangle = prevScissorRect; + spriteBatch.Begin(SpriteSortMode.Deferred, samplerState: GUI.SamplerState, rasterizerState: prevRasterizerState); + } + + private void ClampChildMouseRects(GUIComponent child) + { + child.ClampMouseRectToParent = true; + + if (child is GUIListBox) { return; } + + foreach (GUIComponent grandChild in child.Children) + { + ClampChildMouseRects(grandChild); + } + } + + public override void AddToGUIUpdateList(bool ignoreChildren = false, int order = 0) + { + if (!Visible) { return; } + + UpdateOrder = order; + GUI.AddToUpdateList(this); + + if (ignoreChildren) + { + OnAddedToGUIUpdateList?.Invoke(this); + return; + } + + foreach (GUIComponent child in Content.Children) + { + if (!child.Visible) { continue; } + child.AddToGUIUpdateList(false, order); + } + OnAddedToGUIUpdateList?.Invoke(this); + } + } +} \ No newline at end of file diff --git a/Barotrauma/BarotraumaClient/ClientSource/GUI/GUIStyle.cs b/Barotrauma/BarotraumaClient/ClientSource/GUI/GUIStyle.cs index 169b4d758..cd921c935 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/GUI/GUIStyle.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/GUI/GUIStyle.cs @@ -25,6 +25,7 @@ namespace Barotrauma public ScalableFont SubHeadingFont { get; private set; } public ScalableFont DigitalFont { get; private set; } public ScalableFont HotkeyFont { get; private set; } + public ScalableFont MonospacedFont { get; private set; } public Dictionary ForceFontUpperCase { @@ -40,11 +41,16 @@ namespace Barotrauma public SpriteSheet SavingIndicator { get; private set; } public UISprite UIGlow { get; private set; } + + public UISprite PingCircle { get; private set; } + public UISprite UIGlowCircular { get; private set; } public UISprite ButtonPulse { get; private set; } public SpriteSheet FocusIndicator { get; private set; } + + public UISprite IconOverflowIndicator { get; private set; } /// /// General green color used for elements whose colors are set from code @@ -235,6 +241,9 @@ namespace Barotrauma case "uiglow": UIGlow = new UISprite(subElement); break; + case "pingcircle": + PingCircle = new UISprite(subElement); + break; case "radiation": RadiationSprite = new UISprite(subElement); break; @@ -247,6 +256,9 @@ namespace Barotrauma case "endroundbuttonpulse": ButtonPulse = new UISprite(subElement); break; + case "iconoverflowindicator": + IconOverflowIndicator = new UISprite(subElement); + break; case "focusindicator": FocusIndicator = new SpriteSheet(subElement); break; @@ -277,6 +289,10 @@ namespace Barotrauma DigitalFont = LoadFont(subElement, graphicsDevice); ForceFontUpperCase[DigitalFont] = subElement.GetAttributeBool("forceuppercase", false); break; + case "monospacedfont": + MonospacedFont = LoadFont(subElement, graphicsDevice); + ForceFontUpperCase[MonospacedFont] = subElement.GetAttributeBool("forceuppercase", false); + break; case "hotkeyfont": HotkeyFont = LoadFont(subElement, graphicsDevice); ForceFontUpperCase[HotkeyFont] = subElement.GetAttributeBool("forceuppercase", false); diff --git a/Barotrauma/BarotraumaClient/ClientSource/GUI/HUDLayoutSettings.cs b/Barotrauma/BarotraumaClient/ClientSource/GUI/HUDLayoutSettings.cs index 407236e08..69f18c269 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/GUI/HUDLayoutSettings.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/GUI/HUDLayoutSettings.cs @@ -185,7 +185,7 @@ namespace Barotrauma if (GUI.MouseOn != null) { return false; } //don't close when hovering over an inventory element - if (Inventory.IsMouseOnInventory()) { return false; } + if (Inventory.IsMouseOnInventory) { return false; } bool input = PlayerInput.PrimaryMouseButtonDown() || PlayerInput.SecondaryMouseButtonClicked(); return input && !rect.Contains(PlayerInput.MousePosition); diff --git a/Barotrauma/BarotraumaClient/ClientSource/GUI/LoadingScreen.cs b/Barotrauma/BarotraumaClient/ClientSource/GUI/LoadingScreen.cs index 23b0f9036..5a84a234f 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/GUI/LoadingScreen.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/GUI/LoadingScreen.cs @@ -193,7 +193,7 @@ namespace Barotrauma if (LoadState == 100.0f) { #if DEBUG - if (GameMain.Config.AutomaticQuickStartEnabled || GameMain.Config.AutomaticCampaignLoadEnabled && GameMain.FirstLoad) + if (GameMain.Config.AutomaticQuickStartEnabled || GameMain.Config.AutomaticCampaignLoadEnabled || GameMain.Config.TestScreenEnabled && GameMain.FirstLoad) { loadText = "QUICKSTARTING ..."; } diff --git a/Barotrauma/BarotraumaClient/ClientSource/GUI/ShapeExtensions.cs b/Barotrauma/BarotraumaClient/ClientSource/GUI/ShapeExtensions.cs index 8bf8adea1..afb00b206 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/GUI/ShapeExtensions.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/GUI/ShapeExtensions.cs @@ -55,14 +55,47 @@ namespace Barotrauma var texture = GetTexture(spriteBatch); for (var i = 0; i < points.Count - 1; i++) - DrawPolygonEdge(spriteBatch, texture, points[i] + offset, points[i + 1] + offset, color, thickness); + DrawPolygonEdge(spriteBatch, points[i] + offset, points[i + 1] + offset, color, thickness); - DrawPolygonEdge(spriteBatch, texture, points[points.Count - 1] + offset, points[0] + offset, color, + DrawPolygonEdge(spriteBatch, points[points.Count - 1] + offset, points[0] + offset, color, thickness); } + + /// + /// Draws a closed polygon from an array of points + /// + public static void DrawPolygonInner(this SpriteBatch spriteBatch, Vector2 offset, IReadOnlyList points, Color color, float thickness = 1f) + { + if (points.Count == 0) { return; } - private static void DrawPolygonEdge(SpriteBatch spriteBatch, Texture2D texture, Vector2 point1, Vector2 point2, - Color color, float thickness) + if (points.Count == 1) + { + DrawPoint(spriteBatch, points[0], color, (int)thickness); + return; + } + + for (var i = 0; i < points.Count - 1; i++) + { + Vector2 point1 = points[i] + offset, + point2 = points[i + 1] + offset; + + DrawPolygonEdgeInner(spriteBatch, point1, point2, color, thickness); + } + + DrawPolygonEdgeInner(spriteBatch, points[^1] + offset, points[0] + offset, color, thickness); + } + + private static void DrawPolygonEdgeInner(SpriteBatch spriteBatch, Vector2 point1, Vector2 point2, Color color, float thickness) + { + var length = Vector2.Distance(point1, point2) + thickness; + var angle = (float)Math.Atan2(point2.Y - point1.Y, point2.X - point1.X); + var scale = new Vector2(length, thickness); + Vector2 middle = new Vector2((point1.X + point2.X) / 2f, (point1.Y + point2.Y) / 2f); + Texture2D tex = GetTexture(spriteBatch); + spriteBatch.Draw(GetTexture(spriteBatch), middle, null, color, angle, new Vector2(tex.Width / 2f, tex.Height / 2f), scale, SpriteEffects.None, 0); + } + + private static void DrawPolygonEdge(SpriteBatch spriteBatch, Vector2 point1, Vector2 point2, Color color, float thickness) { var length = Vector2.Distance(point1, point2); var angle = (float)Math.Atan2(point2.Y - point1.Y, point2.X - point1.X); diff --git a/Barotrauma/BarotraumaClient/ClientSource/GUI/Store.cs b/Barotrauma/BarotraumaClient/ClientSource/GUI/Store.cs index 5c97c009d..934f6b001 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/GUI/Store.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/GUI/Store.cs @@ -37,7 +37,7 @@ namespace Barotrauma private Color storeSpecialColor; private GUIListBox shoppingCrateBuyList, shoppingCrateSellList, shoppingCrateSellFromSubList; - private GUITextBlock shoppingCrateTotal; + private GUITextBlock relevantBalanceName, shoppingCrateTotal; private GUIButton clearAllButton, confirmButton; private bool needsRefresh, needsBuyingRefresh, needsSellingRefresh, needsItemsToSellRefresh, needsSellingFromSubRefresh, needsItemsToSellFromSubRefresh; @@ -58,7 +58,6 @@ namespace Barotrauma StoreTab.SellFromSub => false, _ => throw new NotImplementedException() }; - private bool IsSelling => !IsBuying; private GUIListBox ActiveShoppingCrateList => activeTab switch { StoreTab.Buy => shoppingCrateBuyList, @@ -222,16 +221,8 @@ namespace Barotrauma TextScale = 1.1f, TextGetter = () => { - if (CurrentLocation != null) - { - merchantBalanceBlock.TextColor = CurrentLocation.BalanceColor; - return GetCurrencyFormatted(CurrentLocation.StoreCurrentBalance); - } - else - { - merchantBalanceBlock.TextColor = Color.Red; - return GetCurrencyFormatted(0); - } + merchantBalanceBlock.TextColor = CurrentLocation?.BalanceColor ?? Color.Red; + return GetMerchantBalanceText(); } }; @@ -375,28 +366,37 @@ namespace Barotrauma //don't show categories with no buyable items itemCategories.RemoveAll(c => !ItemPrefab.Prefabs.Any(ep => ep.Category.HasFlag(c) && ep.CanBeBought)); itemCategoryButtons.Clear(); + var categoryButton = new GUIButton(new RectTransform(new Point(categoryButtonContainer.Rect.Width, categoryButtonContainer.Rect.Width), categoryButtonContainer.RectTransform), style: "CategoryButton.All") + { + ToolTip = TextManager.Get("MapEntityCategory.All"), + OnClicked = OnClickedCategoryButton + }; + itemCategoryButtons.Add(categoryButton); foreach (MapEntityCategory category in itemCategories) { - var categoryButton = new GUIButton(new RectTransform(new Point(categoryButtonContainer.Rect.Width, categoryButtonContainer.Rect.Width), categoryButtonContainer.RectTransform), + categoryButton = new GUIButton(new RectTransform(new Point(categoryButtonContainer.Rect.Width, categoryButtonContainer.Rect.Width), categoryButtonContainer.RectTransform), style: "CategoryButton." + category) { ToolTip = TextManager.Get("MapEntityCategory." + category), UserData = category, - OnClicked = (btn, userdata) => - { - MapEntityCategory? newCategory = !btn.Selected ? (MapEntityCategory?)userdata : null; - if (newCategory.HasValue) { searchBox.Text = ""; } - if (newCategory != selectedItemCategory) { tabLists[activeTab].ScrollBar.BarScroll = 0f; } - FilterStoreItems(newCategory, searchBox.Text); - return true; - } + OnClicked = OnClickedCategoryButton }; itemCategoryButtons.Add(categoryButton); - categoryButton.RectTransform.SizeChanged += () => + } + bool OnClickedCategoryButton(GUIButton button, object userData) + { + MapEntityCategory? newCategory = !button.Selected ? (MapEntityCategory?)userData : null; + if (newCategory.HasValue) { searchBox.Text = ""; } + if (newCategory != selectedItemCategory) { tabLists[activeTab].ScrollBar.BarScroll = 0f; } + FilterStoreItems(newCategory, searchBox.Text); + return true; + } + foreach (var btn in itemCategoryButtons) + { + btn.RectTransform.SizeChanged += () => { - var sprite = categoryButton.Frame.sprites[GUIComponent.ComponentState.None].First(); - categoryButton.RectTransform.NonScaledSize = - new Point(categoryButton.Rect.Width, (int)(categoryButton.Rect.Width * ((float)sprite.Sprite.SourceRect.Height / sprite.Sprite.SourceRect.Width))); + var sprite = btn.Frame.sprites[GUIComponent.ComponentState.None].First(); + btn.RectTransform.NonScaledSize = new Point(btn.Rect.Width, (int)(btn.Rect.Width * ((float)sprite.Sprite.SourceRect.Height / sprite.Sprite.SourceRect.Width))); }; } @@ -503,11 +503,11 @@ namespace Barotrauma ForceUpperCase = true }; new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.5f), playerBalanceContainer.RectTransform), - "", font: GUI.SubHeadingFont, textAlignment: Alignment.TopRight) + "", textColor: Color.White, font: GUI.SubHeadingFont, textAlignment: Alignment.TopRight) { AutoScaleVertical = true, TextScale = 1.1f, - TextGetter = () => GetCurrencyFormatted(PlayerMoney) + TextGetter = GetPlayerBalanceText }; // Divider ------------------------------------------------ @@ -523,7 +523,7 @@ namespace Barotrauma RelativeSpacing = 0.015f, Stretch = true }; - var shoppingCrateListContainer = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.85f), shoppingCrateInventoryContainer.RectTransform), style: null); + var shoppingCrateListContainer = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.8f), shoppingCrateInventoryContainer.RectTransform), style: null); shoppingCrateBuyList = new GUIListBox(new RectTransform(Vector2.One, shoppingCrateListContainer.RectTransform)) { Visible = false }; shoppingCrateSellList = new GUIListBox(new RectTransform(Vector2.One, shoppingCrateListContainer.RectTransform)) { Visible = false }; if (GameMain.IsSingleplayer) @@ -531,6 +531,21 @@ namespace Barotrauma shoppingCrateSellFromSubList = new GUIListBox(new RectTransform(Vector2.One, shoppingCrateListContainer.RectTransform)) { Visible = false }; } + var relevantBalanceContainer = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.05f), shoppingCrateInventoryContainer.RectTransform), isHorizontal: true) + { + Stretch = true + }; + relevantBalanceName = new GUITextBlock(new RectTransform(new Vector2(0.5f, 1.0f), relevantBalanceContainer.RectTransform), "", font: GUI.Font) + { + CanBeFocused = false + }; + new GUITextBlock(new RectTransform(new Vector2(0.5f, 1.0f), relevantBalanceContainer.RectTransform), "", textColor: Color.White, font: GUI.SubHeadingFont, textAlignment: Alignment.Right) + { + CanBeFocused = false, + TextScale = 1.1f, + TextGetter = () => IsBuying ? GetPlayerBalanceText() : GetMerchantBalanceText() + }; + var totalContainer = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.05f), shoppingCrateInventoryContainer.RectTransform), isHorizontal: true) { Stretch = true @@ -576,6 +591,10 @@ namespace Barotrauma resolutionWhenCreated = new Point(GameMain.GraphicsWidth, GameMain.GraphicsHeight); } + private string GetMerchantBalanceText() => GetCurrencyFormatted(CurrentLocation?.StoreCurrentBalance ?? 0); + + private string GetPlayerBalanceText() => GetCurrencyFormatted(PlayerMoney); + private GUILayoutGroup CreateDealsGroup(GUIListBox parentList) { var elementHeight = (int)(GUI.yScale * 80); @@ -604,17 +623,14 @@ namespace Barotrauma { prevLocation.Reputation.OnReputationValueChanged = null; } - - foreach (ItemPrefab itemPrefab in ItemPrefab.Prefabs) + if (ItemPrefab.Prefabs.Any(p => p.CanBeBoughtAtLocation(CurrentLocation, out PriceInfo _))) { - if (itemPrefab.CanBeBoughtAtLocation(CurrentLocation, out PriceInfo _)) + selectedItemCategory = null; + searchBox.Text = ""; + ChangeStoreTab(StoreTab.Buy); + if (newLocation?.Reputation != null) { - ChangeStoreTab(StoreTab.Buy); - if (newLocation?.Reputation != null) - { - newLocation.Reputation.OnReputationValueChanged += () => { needsRefresh = true; }; - } - return; + newLocation.Reputation.OnReputationValueChanged += () => { needsRefresh = true; }; } } } @@ -628,6 +644,7 @@ namespace Barotrauma tabButton.Selected = (StoreTab)tabButton.UserData == activeTab; } sortingDropDown.SelectItem(tabSortingMethods[tab]); + relevantBalanceName.Text = IsBuying ? TextManager.Get("campaignstore.balance") : TextManager.Get("campaignstore.storebalance"); SetShoppingCrateTotalText(); SetClearAllButtonStatus(); SetConfirmButtonBehavior(); @@ -697,7 +714,7 @@ namespace Barotrauma } foreach (GUIButton btn in itemCategoryButtons) { - btn.Selected = category.HasValue && (MapEntityCategory)btn.UserData == selectedItemCategory; + btn.Selected = (MapEntityCategory?)btn.UserData == selectedItemCategory; } list.UpdateScrollBarSize(); } diff --git a/Barotrauma/BarotraumaClient/ClientSource/GUI/TabMenu.cs b/Barotrauma/BarotraumaClient/ClientSource/GUI/TabMenu.cs index a5239b1b6..57c248466 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/GUI/TabMenu.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/GUI/TabMenu.cs @@ -18,7 +18,7 @@ namespace Barotrauma private static UISprite spectateIcon, disconnectedIcon; private static Sprite ownerIcon, moderatorIcon; - private enum InfoFrameTab { Crew, Mission, Reputation, MyCharacter, Traitor, Submarine }; + private enum InfoFrameTab { Crew, Mission, Reputation, MyCharacter, Traitor, Submarine, Talents }; private static InfoFrameTab selectedTab; private GUIFrame infoFrame, contentFrame; @@ -258,6 +258,8 @@ namespace Barotrauma { var myCharacterButton = createTabButton(InfoFrameTab.MyCharacter, "tabmenu.character"); } + + var talentsButton = createTabButton(InfoFrameTab.Talents, "tabmenu.talents"); } private bool SelectInfoFrameTab(GUIButton button, object userData) @@ -296,6 +298,9 @@ namespace Barotrauma case InfoFrameTab.Submarine: CreateSubmarineInfo(infoFrameHolder, Submarine.MainSub); break; + case InfoFrameTab.Talents: + CreateTalentInfo(infoFrameHolder); + break; } return true; @@ -1159,5 +1164,319 @@ namespace Barotrauma sub.Info.CreateSpecsWindow(specsListBox, GUI.Font, includeTitle: false, includeClass: false, includeDescription: true); } } + private Color unselectedColor = new Color(240, 255, 255, 225); + private Color selectedColor = new Color(220, 255, 220, 225); + private Color ownedColor = new Color(140, 180, 140, 225); + private Color unselectableColor = new Color(100, 100, 100, 225); + private Color pressedColor = new Color(60, 60, 60, 225); + + private readonly List<(GUIButton button, GUIImage background, GUIImage icon)> talentButtons = new List<(GUIButton button, GUIImage background, GUIImage icon)>(); + private List selectedTalents = new List(); + private GUITextBlock talentTitleText; + private GUITextBlock talentDescriptionText; + private GUITextBlock talentPointsText; + + private GUITextBlock experienceText; + private Color experienceBackgroundColor = new Color(255, 255, 255, 155); + + private GUIProgressBar experienceBar; + + private void CreateTalentInfo(GUIFrame infoFrame) + { + infoFrame.ClearChildren(); + talentButtons.Clear(); + + GUIFrame talentFrameBackground = new GUIFrame(new RectTransform(Vector2.One, infoFrame.RectTransform, Anchor.TopCenter), style: "GUIFrameListBox"); + int padding = GUI.IntScale(15); + GUIFrame talentFrameContent = new GUIFrame(new RectTransform(new Point(talentFrameBackground.Rect.Width - padding, talentFrameBackground.Rect.Height - padding), infoFrame.RectTransform, Anchor.Center), style: null); + + Character controlledCharacter = Character.Controlled; + + if (controlledCharacter.Info == null) + { + DebugConsole.ThrowError("No character info found for talent UI"); + return; + } + + selectedTalents = controlledCharacter.Info.UnlockedTalents.ToList(); + + GUILayoutGroup talentFrameLayoutGroup = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 1.0f), talentFrameContent.RectTransform, anchor: Anchor.Center), childAnchor: Anchor.TopCenter) + { + AbsoluteSpacing = GUI.IntScale(5) + }; + + GUILayoutGroup talentInfoLayoutGroup = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.325f), talentFrameLayoutGroup.RectTransform, Anchor.Center), childAnchor: Anchor.TopCenter); + + GUIFrame talentTitleFrame = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.25f), talentInfoLayoutGroup.RectTransform, Anchor.TopCenter), style: null); + + talentTitleText = new GUITextBlock(new RectTransform(new Vector2(0.5f, 1.0f), talentTitleFrame.RectTransform, Anchor.TopLeft), "", font: GUI.LargeFont); + talentPointsText = new GUITextBlock(new RectTransform(new Vector2(0.25f, 1.0f), talentTitleFrame.RectTransform, Anchor.TopRight), "", font: GUI.Font, textAlignment: Alignment.Center); + + GUIFrame talentDescriptionFrame = new GUIFrame(new RectTransform(new Vector2(1f, 0.4f), talentInfoLayoutGroup.RectTransform, Anchor.TopCenter), style: null); + + talentDescriptionText = new GUITextBlock(new RectTransform(new Vector2(1.0f, 1.0f), talentDescriptionFrame.RectTransform, Anchor.TopLeft), "", font: GUI.Font, textAlignment: Alignment.TopLeft, wrap: true); + + GUIFrame characterInfoFrame = new GUIFrame(new RectTransform(new Vector2(1f, 0.3f), talentInfoLayoutGroup.RectTransform, Anchor.TopLeft), style: null); + GUILayoutGroup characterInfoColumn = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 1.0f), characterInfoFrame.RectTransform, anchor: Anchor.TopLeft), childAnchor: Anchor.TopLeft, isHorizontal: true); + + CreateCharacterSheet(characterInfoColumn); + + if (!TalentTree.JobTalentTrees.TryGetValue(controlledCharacter.Info.Job.Prefab.Identifier, out TalentTree talentTree)) { return; } + + GUIListBox talentTreeListBox = new GUIListBox(new RectTransform(new Vector2(1f, 0.6f), talentFrameLayoutGroup.RectTransform, Anchor.TopCenter), isHorizontal: true, style: null); + + int spacing = GUI.IntScale(5); + + foreach (var subTree in talentTree.TalentSubTrees) + { + GUIFrame subTreeFrame = new GUIFrame(new RectTransform(new Vector2(0.333f, 1f), talentTreeListBox.Content.RectTransform, anchor: Anchor.TopLeft), style: null); + GUILayoutGroup subTreeLayoutGroup = new GUILayoutGroup(new RectTransform(new Vector2(1f, 1f), subTreeFrame.RectTransform, Anchor.Center), false, childAnchor: Anchor.TopCenter); + + GUIFrame subtreeTitleFrame = new GUIFrame(new RectTransform(new Vector2(1f, 0.111f), subTreeLayoutGroup.RectTransform, anchor: Anchor.TopCenter), style: "SubtreeHeader"); + + new GUITextBlock(new RectTransform(new Vector2(1.0f, 1.0f), subtreeTitleFrame.RectTransform, anchor: Anchor.TopCenter), subTree.Identifier, font: GUI.LargeFont, textAlignment: Alignment.Center); + + for (int i = 0; i < 4; i++) + { + GUIFrame talentOptionFrame = new GUIFrame(new RectTransform(new Vector2(1f, 0.222f), subTreeLayoutGroup.RectTransform, anchor: Anchor.TopCenter), style: "TalentOptionFrame"); + GUIImage talentBackground = new GUIImage(new RectTransform(Vector2.One, talentOptionFrame.RectTransform, anchor: Anchor.Center), style: "TalentBackground") + { + CanBeFocused = false, + Color = unselectableColor, + }; + + if (subTree.TalentOptionStages.Count > i) + { + TalentOption talentOption = subTree.TalentOptionStages[i]; + + GUILayoutGroup talentOptionLayoutGroup = new GUILayoutGroup(new RectTransform(new Vector2(1f, 1f), talentOptionFrame.RectTransform, Anchor.CenterLeft), isHorizontal: true, childAnchor: Anchor.CenterLeft) + { + Stretch = true, + }; + + foreach (Talent talent in talentOption.Talents) + { + int optionPadding = GUI.IntScale(10); + GUIFrame talentFrame = new GUIFrame(new RectTransform(new Point(talentOptionFrame.Rect.Width, talentOptionFrame.Rect.Height - optionPadding), talentOptionLayoutGroup.RectTransform), style: null) + { + CanBeFocused = false, + }; + new GUIImage(new RectTransform(Vector2.One, talentFrame.RectTransform, anchor: Anchor.Center), style: "TalentFrameBackground") + { + CanBeFocused = false, + }; + GUIImage iconImage = null; + + GUIButton talentButton = new GUIButton(new RectTransform(Vector2.One, talentFrame.RectTransform, anchor: Anchor.Center), style: "TalentFrame") + { + ToolTip = $"{TextManager.Get("talentname." + talent.Identifier, returnNull: true) ?? talent.Identifier} \n\n{TextManager.Get("talentdescription." + talent.Identifier, returnNull: true) ?? string.Empty}", + UserData = talent.Identifier, + PressedColor = pressedColor, + OnClicked = (button, userData) => + { + talentTitleText.Text = TextManager.Get("talentname." + talent.Identifier, returnNull: true) ?? string.Empty; + talentDescriptionText.Text = TextManager.Get("talentdescription." + talent.Identifier, returnNull: true) ?? string.Empty; + + // deselect other buttons in tier by removing their selected talents from pool + foreach (GUIButton guiButton in talentOptionLayoutGroup.GetAllChildren()) + { + if (guiButton.UserData is string otherTalentIdentifier && guiButton != button) + { + if (!controlledCharacter.HasTalent(otherTalentIdentifier)) + { + selectedTalents.Remove(otherTalentIdentifier); + } + } + } + string talentIdentifier = userData as string; + + if (TalentTree.IsViableTalentForCharacter(controlledCharacter, talentIdentifier, selectedTalents)) + { + if (!selectedTalents.Contains(talentIdentifier)) + { + selectedTalents.Add(talentIdentifier); + } + } + else if (!controlledCharacter.HasTalent(talentIdentifier)) + { + selectedTalents.Remove(talentIdentifier); + } + + UpdateTalentButtons(); + return true; + }, + }; + + + int iconPadding = GUI.IntScale(15); + iconImage = new GUIImage(new RectTransform(new Point(talentFrame.Rect.Width - iconPadding, talentFrame.Rect.Height - iconPadding), talentFrame.RectTransform, anchor: Anchor.Center), sprite: talent.Icon, scaleToFit: true) + { + PressedColor = unselectableColor, + CanBeFocused = false, + }; + + talentButtons.Add((talentButton, talentBackground, iconImage)); + } + } + } + } + + GUIFrame talentBottomFrame = new GUIFrame(new RectTransform(new Vector2(1f, 0.07f), talentFrameLayoutGroup.RectTransform, Anchor.TopCenter), style: null); + + GUIFrame experienceBarFrame = new GUIFrame(new RectTransform(new Vector2(0.775f, 0.75f), talentBottomFrame.RectTransform, Anchor.TopCenter), style: null); + + experienceBar = new GUIProgressBar(new RectTransform(new Vector2(1f, 1f), experienceBarFrame.RectTransform, Anchor.CenterLeft), + barSize: controlledCharacter.Info.GetProgressTowardsNextLevel(), color: Color.White, style: "ExperienceBar") + { + IsHorizontal = true + }; + + GUIImage experienceTextBackground = new GUIImage(new RectTransform(new Vector2(0.2f, 0.475f), experienceBarFrame.RectTransform, anchor: Anchor.Center), style: "ExperienceTextBackground"); + + experienceText = new GUITextBlock(new RectTransform(new Vector2(1.0f, 1.0f), experienceTextBackground.RectTransform, anchor: Anchor.Center), "", font: GUI.Font, textColor: Color.White, textAlignment: Alignment.Center); + + new GUIButton(new RectTransform(new Vector2(0.1f, 0.3f), talentBottomFrame.RectTransform, anchor: Anchor.TopRight), text: TextManager.Get("applysettingsbutton")) + { + OnClicked = ApplyTalentSelection, + }; + + new GUIButton(new RectTransform(new Vector2(0.1f, 0.3f), talentBottomFrame.RectTransform, anchor: Anchor.TopLeft), text: TextManager.Get("reset")) + { + OnClicked = ResetTalentSelection, + }; + + UpdateTalentButtons(); + } + + private void UpdateTalentButtons() + { + Character controlledCharacter = Character.Controlled; + + talentPointsText.Text = $"{TextManager.Get("talentpointsleft")}{controlledCharacter.Info.GetAvailableTalentPoints()}"; + experienceText.Text = $"{controlledCharacter.Info.ExperiencePoints - controlledCharacter.Info.GetExperienceRequiredForCurrentLevel()} / {controlledCharacter.Info.GetExperienceRequiredToLevelUp() - controlledCharacter.Info.GetExperienceRequiredForCurrentLevel()}"; + experienceBar.BarSize = controlledCharacter.Info.GetProgressTowardsNextLevel(); + //experienceBar.ToolTip = $"{controlledCharacter.Info.ExperiencePoints - controlledCharacter.Info.GetExperienceRequiredForCurrentLevel()} / {controlledCharacter.Info.GetExperienceRequiredToLevelUp() - controlledCharacter.Info.GetExperienceRequiredForCurrentLevel()}"; + + selectedTalents = TalentTree.CheckTalentSelection(controlledCharacter, selectedTalents); + + foreach (var talentButton in talentButtons) + { + talentButton.background.Color = unselectableColor; + } + + foreach (var talentButton in talentButtons) + { + string talentIdentifier = talentButton.button.UserData as string; + bool unselectable = !TalentTree.IsViableTalentForCharacter(controlledCharacter, talentIdentifier, selectedTalents) || controlledCharacter.HasTalent(talentIdentifier); + Color newTalentColor = unselectable ? unselectableColor : unselectedColor; + + if (controlledCharacter.HasTalent(talentIdentifier)) + { + newTalentColor = ownedColor; + } + else if (selectedTalents.Contains(talentIdentifier)) + { + newTalentColor = selectedColor; + } + + talentButton.button.Color = newTalentColor; + talentButton.button.SelectedColor = newTalentColor; + talentButton.button.HoverColor = newTalentColor; + talentButton.button.DisabledColor = newTalentColor; + + talentButton.icon.Color = newTalentColor; + + // update background color as well, if not defined yet + if (talentButton.background.Color == unselectableColor) + { + talentButton.background.Color = newTalentColor; + } + } + } + + + private void ApplyTalents(Character controlledCharacter) + { + selectedTalents = TalentTree.CheckTalentSelection(controlledCharacter, selectedTalents); + foreach (string talent in selectedTalents) + { + controlledCharacter.GiveTalent(talent); + if (GameMain.Client != null) + { + GameMain.Client.CreateEntityEvent(controlledCharacter, new object[] { NetEntityEvent.Type.UpdateTalents }); + } + } + UpdateTalentButtons(); + } + + private bool ApplyTalentSelection(GUIButton guiButton, object userData) + { + Character controlledCharacter = Character.Controlled; + ApplyTalents(controlledCharacter); + return true; + } + + private bool ResetTalentSelection(GUIButton guiButton, object userData) + { + Character controlledCharacter = Character.Controlled; + selectedTalents = controlledCharacter.Info.UnlockedTalents.ToList(); + UpdateTalentButtons(); + return true; + } + + public void OnExperienceChanged(Character character) + { + if (character != Character.Controlled) { return; } + UpdateTalentButtons(); + } + + private readonly StatTypes[] basicStats = new StatTypes[] + { + StatTypes.MaximumHealthMultiplier, + StatTypes.MovementSpeed, + StatTypes.SwimmingSpeed, + StatTypes.RepairSpeed, + }; + + private readonly StatTypes[] combatStats = new StatTypes[] + { + StatTypes.MaximumHealthMultiplier, + StatTypes.MovementSpeed, + StatTypes.SwimmingSpeed, + StatTypes.RepairSpeed, + }; + + private readonly StatTypes[] miscStats = new StatTypes[] + { + StatTypes.ReputationGainMultiplier, + StatTypes.MissionMoneyGainMultiplier, + StatTypes.ExperienceGainMultiplier, + StatTypes.MissionExperienceGainMultiplier, + }; + + private void CreateCharacterSheet(GUILayoutGroup characterInfoColumn) + { + Character controlledCharacter = Character.Controlled; + + CreateRow(basicStats); + CreateRow(combatStats); + CreateRow(miscStats); + + void CreateRow(StatTypes[] statTypes) + { + GUILayoutGroup characterInfoRow = new GUILayoutGroup(new RectTransform(new Vector2(0.33f, 1.0f), characterInfoColumn.RectTransform, anchor: Anchor.TopLeft), childAnchor: Anchor.TopCenter); + foreach (StatTypes statType in statTypes) + { + ShowStat(statType, characterInfoRow); + } + } + + void ShowStat(StatTypes statType, GUILayoutGroup characterInfoRow) + { + GUIFrame textInfoFrame = new GUIFrame(new RectTransform(new Vector2(1f, 0.33f), characterInfoRow.RectTransform, Anchor.TopCenter), style: null); + new GUITextBlock(new RectTransform(new Vector2(1f, 1f), textInfoFrame.RectTransform, Anchor.TopLeft), statType.ToString(), font: GUI.SmallFont, textAlignment: Alignment.TopLeft); + new GUITextBlock(new RectTransform(new Vector2(1f, 1f), textInfoFrame.RectTransform, Anchor.TopLeft), (int)(100f * (1 + controlledCharacter.GetStatValue(statType))) + "%", font: GUI.Font, textAlignment: Alignment.TopRight); + } + } } } diff --git a/Barotrauma/BarotraumaClient/ClientSource/GUI/UISprite.cs b/Barotrauma/BarotraumaClient/ClientSource/GUI/UISprite.cs index a6b3ca8dc..4d79d57fd 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/GUI/UISprite.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/GUI/UISprite.cs @@ -115,8 +115,9 @@ namespace Barotrauma return MathHelper.Clamp(Math.Min(Math.Min(scale.X, scale.Y), GUI.SlicedSpriteScale), minBorderScale, maxBorderScale); } - public void Draw(SpriteBatch spriteBatch, Rectangle rect, Color color, SpriteEffects spriteEffects = SpriteEffects.None) + public void Draw(SpriteBatch spriteBatch, Rectangle rect, Color color, SpriteEffects spriteEffects = SpriteEffects.None, Vector2? uvOffset = null) { + uvOffset ??= Vector2.Zero; if (Sprite.Texture == null) { GUI.DrawRectangle(spriteBatch, rect, Color.Magenta); @@ -157,7 +158,7 @@ namespace Barotrauma else if (Tile) { Vector2 startPos = new Vector2(rect.X, rect.Y); - Sprite.DrawTiled(spriteBatch, startPos, new Vector2(rect.Width, rect.Height), color); + Sprite.DrawTiled(spriteBatch, startPos, new Vector2(rect.Width, rect.Height), color, startOffset: uvOffset); } else { diff --git a/Barotrauma/BarotraumaClient/ClientSource/GameMain.cs b/Barotrauma/BarotraumaClient/ClientSource/GameMain.cs index 0dbbe81f8..e22ee76cb 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/GameMain.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/GameMain.cs @@ -43,6 +43,7 @@ namespace Barotrauma public static SteamWorkshopScreen SteamWorkshopScreen; public static SubEditorScreen SubEditorScreen; + public static TestScreen TestScreen; public static ParticleEditorScreen ParticleEditorScreen; public static LevelEditorScreen LevelEditorScreen; public static SpriteEditorScreen SpriteEditorScreen; @@ -89,7 +90,16 @@ namespace Barotrauma public static ParticleManager ParticleManager; public static DecalManager DecalManager; - public static World World; + private static World world; + public static World World + { + get + { + if (world == null) { world = new World(new Vector2(0, -9.82f)); } + return world; + } + set { world = value; } + } public static LoadingScreen TitleScreen; private bool loadingScreenOpen; @@ -239,7 +249,6 @@ namespace Barotrauma GameMain.ResetFrameTime(); fixedTime = new GameTime(); - World = new World(new Vector2(0, -9.82f)); FarseerPhysics.Settings.AllowSleep = true; FarseerPhysics.Settings.ContinuousPhysics = false; FarseerPhysics.Settings.VelocityIterations = 1; @@ -567,6 +576,8 @@ namespace Barotrauma ItemPrefab.LoadAll(GetFilesOfType(ContentType.Item)); AfflictionPrefab.LoadAll(GetFilesOfType(ContentType.Afflictions)); SkillSettings.Load(GetFilesOfType(ContentType.SkillSettings)); + TalentPrefab.LoadAll(GetFilesOfType(ContentType.Talents)); + TalentTree.LoadAll(GetFilesOfType(ContentType.TalentTrees)); Order.Init(); EventManagerSettings.Init(); BallastFloraPrefab.LoadAll(GetFilesOfType(ContentType.MapCreature)); @@ -620,6 +631,7 @@ namespace Barotrauma #endif SubEditorScreen = new SubEditorScreen(); + TestScreen = new TestScreen(); TitleScreen.LoadState = 75.0f; yield return CoroutineStatus.Running; @@ -792,12 +804,16 @@ namespace Barotrauma } #if DEBUG - if (TitleScreen.LoadState >= 100.0f && !TitleScreen.PlayingSplashScreen && (Config.AutomaticQuickStartEnabled || Config.AutomaticCampaignLoadEnabled) && FirstLoad && !PlayerInput.KeyDown(Keys.LeftShift)) + if (TitleScreen.LoadState >= 100.0f && !TitleScreen.PlayingSplashScreen && (Config.AutomaticQuickStartEnabled || Config.AutomaticCampaignLoadEnabled || Config.TestScreenEnabled) && FirstLoad && !PlayerInput.KeyDown(Keys.LeftShift)) { loadingScreenOpen = false; FirstLoad = false; - if (Config.AutomaticQuickStartEnabled) + if (Config.TestScreenEnabled) + { + TestScreen.Select(); + } + else if (Config.AutomaticQuickStartEnabled) { MainMenuScreen.QuickStart(); } diff --git a/Barotrauma/BarotraumaClient/ClientSource/GameSession/CargoManager.cs b/Barotrauma/BarotraumaClient/ClientSource/GameSession/CargoManager.cs index cffadc3ee..3010c608a 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/GameSession/CargoManager.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/GameSession/CargoManager.cs @@ -48,11 +48,7 @@ namespace Barotrauma var equipmentSlots = new List() { InvSlotType.Head, InvSlotType.InnerClothes, InvSlotType.OuterClothes, InvSlotType.Headset, InvSlotType.Card }; return character.Inventory.FindAllItems(item => { - if (item.SpawnedInOutpost) { return false; } - if (!item.Prefab.AllowSellingWhenBroken && item.ConditionPercentage < 90.0f) { return false; } - if (confirmedSoldEntities.Any(it => it.Item == item)) { return false; } - // There must be no contained items or the contained items must be confirmed as sold - if (!item.ContainedItems.All(it => confirmedSoldEntities.Any(se => se.Item == it))) { return false; } + if (!IsItemSellable(item, confirmedSoldEntities)) { return false; } // Item must be in a non-equipment slot if possible if (!item.AllowedSlots.All(s => equipmentSlots.Contains(s)) && IsInEquipmentSlot(item)) { return false; } // Item must not be contained inside an item in an equipment slot @@ -76,15 +72,10 @@ namespace Barotrauma var confirmedSoldEntities = GetConfirmedSoldEntities(); return Submarine.MainSub.GetItems(true).FindAll(item => { - if (!item.Prefab.CanBeSold) { return false; } - if (item.SpawnedInOutpost) { return false; } - if (!item.Prefab.AllowSellingWhenBroken && item.ConditionPercentage < 90.0f) { return false; } + if (!IsItemSellable(item, confirmedSoldEntities)) { return false; } if (!item.Components.All(c => !(c is Holdable h) || !h.Attachable || !h.Attached)) { return false; } if (!item.Components.All(c => !(c is Wire w) || w.Connections.All(c => c == null))) { return false; } if (!ItemAndAllContainersInteractable(item)) { return false; } - if (confirmedSoldEntities.Any(it => it.Item == item)) { return false; } - // There must be no contained items or the contained items must be confirmed as sold - if (!item.ContainedItems.All(it => confirmedSoldEntities.Any(se => se.Item == it))) { return false; } return true; }).Distinct(); @@ -107,6 +98,24 @@ namespace Barotrauma return SoldEntities.Where(se => se.Status != SoldEntity.SellStatus.Unconfirmed); } + private bool IsItemSellable(Item item, IEnumerable confirmedSoldEntities) + { + if (!item.Prefab.CanBeSold) { return false; } + if (item.SpawnedInOutpost) { return false; } + if (!item.Prefab.AllowSellingWhenBroken && item.ConditionPercentage < 90.0f) { return false; } + if (confirmedSoldEntities.Any(it => it.Item == item)) { return false; } + if (item.OwnInventory?.Container is ItemContainer itemContainer) + { + var containedItems = item.ContainedItems; + if (containedItems.None()) { return true; } + // Allow selling the item if contained items are unsellable and set to be removed on deconstruct + if (itemContainer.RemoveContainedItemsOnDeconstruct && containedItems.All(it => !it.Prefab.CanBeSold)) { return true; } + // Otherwise there must be no contained items or the contained items must be confirmed as sold + if (!containedItems.All(it => confirmedSoldEntities.Any(se => se.Item == it))) { return false; } + } + return true; + } + public void SetItemsInBuyCrate(List items) { ItemsInBuyCrate.Clear(); diff --git a/Barotrauma/BarotraumaClient/ClientSource/GameSession/CrewManager.cs b/Barotrauma/BarotraumaClient/ClientSource/GameSession/CrewManager.cs index 5cc69eb70..ac4b7ed69 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/GameSession/CrewManager.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/GameSession/CrewManager.cs @@ -17,6 +17,13 @@ namespace Barotrauma { private Point screenResolution; + public Order DraggedOrder; + public bool DragOrder; + private bool dropOrder; + private int framesToSkip = 2; + private float dragOrderTreshold; + private Vector2 dragPoint = Vector2.Zero; + #region UI public GUIComponent ReportButtonFrame { get; set; } @@ -92,10 +99,11 @@ namespace Barotrauma crewList = new GUIListBox(new RectTransform(Vector2.One, crewArea.RectTransform), style: null, isScrollBarOnDefaultSide: false) { AutoHideScrollBar = false, - CanBeFocused = false, + CanDragElements = true, OnSelected = (component, userData) => false, SelectMultiple = false, - Spacing = (int)(GUI.Scale * 10) + Spacing = (int)(GUI.Scale * 10), + OnRearranged = OnCrewListRearranged }; jobIndicatorBackground = new Sprite("Content/UI/CommandUIAtlas.png", new Rectangle(0, 512, 128, 128)); @@ -180,7 +188,7 @@ namespace Barotrauma }; } - var reports = Order.PrefabList.FindAll(o => o.IsReport && o.SymbolSprite != null && !o.Hidden); + List reports = Order.PrefabList.FindAll(o => o.IsReport && o.SymbolSprite != null && !o.Hidden); if (reports.None()) { DebugConsole.ThrowError("No valid orders for report buttons found! Cannot create report buttons. The orders for the report buttons must have 'targetallcharacters' attribute enabled and a valid 'symbolsprite' defined."); @@ -198,19 +206,36 @@ namespace Barotrauma ReportButtonFrame.RectTransform.AbsoluteOffset = new Point(0, -chatBox.ToggleButton.Rect.Height); + CreateReports(this, ReportButtonFrame, reports, false); + + #endregion + + screenResolution = new Point(GameMain.GraphicsWidth, GameMain.GraphicsHeight); + prevUIScale = GUI.Scale; + _isCrewMenuOpen = GameMain.Config.CrewMenuOpen; + dismissedOrderPrefab ??= Order.GetPrefab("dismissed"); + } + + public static void CreateReports(CrewManager crewManager, GUIComponent parent, List reports, bool isHorizontal) + { //report buttons foreach (Order order in reports) { if (!order.IsReport || order.SymbolSprite == null || order.Hidden) { continue; } - var btn = new GUIButton(new RectTransform(new Point(ReportButtonFrame.Rect.Width), ReportButtonFrame.RectTransform), style: null) + var btn = new GUIButton(new RectTransform(new Point(isHorizontal ? parent.Rect.Height : parent.Rect.Width), parent.RectTransform), style: null) { - OnClicked = (GUIButton button, object userData) => + OnClicked = (button, userData) => { if (!CanIssueOrders) { return false; } var sub = Character.Controlled.Submarine; if (sub == null || sub.TeamID != Character.Controlled.TeamID || sub.Info.IsWreck) { return false; } - SetCharacterOrder(null, order, null, CharacterInfo.HighestManualOrderPriority, Character.Controlled); - if (IsSinglePlayer) { HumanAIController.ReportProblem(Character.Controlled, order); } + + if (crewManager != null) + { + crewManager.SetCharacterOrder(null, order, null, CharacterInfo.HighestManualOrderPriority, Character.Controlled); + + if (crewManager.IsSinglePlayer) { HumanAIController.ReportProblem(Character.Controlled, order); } + } return true; }, UserData = order, @@ -218,6 +243,19 @@ namespace Barotrauma ClampMouseRectToParent = false }; + if (crewManager != null) + { + btn.OnButtonDown = () => + { + crewManager.dragOrderTreshold = Math.Max(btn.Rect.Width, btn.Rect.Height) / 2f; + crewManager.DraggedOrder = order; + crewManager.dropOrder = false; + crewManager.framesToSkip = 2; + crewManager.dragPoint = btn.Rect.Center.ToVector2(); + return true; + }; + } + new GUIFrame(new RectTransform(new Vector2(1.5f), btn.RectTransform, Anchor.Center), "OuterGlowCircular") { Color = GUI.Style.Red * 0.8f, @@ -236,13 +274,6 @@ namespace Barotrauma SpriteEffects = SpriteEffects.FlipHorizontally }; } - - #endregion - - screenResolution = new Point(GameMain.GraphicsWidth, GameMain.GraphicsHeight); - prevUIScale = GUI.Scale; - _isCrewMenuOpen = GameMain.Config.CrewMenuOpen; - dismissedOrderPrefab ??= Order.GetPrefab("dismissed"); } #endregion @@ -291,8 +322,19 @@ namespace Barotrauma new RectTransform(crewListEntrySize, parent: crewList.Content.RectTransform, anchor: Anchor.TopRight), style: "CrewListBackground") { - UserData = character + UserData = character, + OnSecondaryClicked = (comp, data) => + { + if (data == null) { return false; } + if (GameMain.NetworkMember?.ConnectedClients?.Find(c => c.Character == data) is Client client) + { + CreateModerationContextMenu(PlayerInput.MousePosition.ToPoint(), client); + return true; + } + return false; + } }; + SetCharacterComponentTooltip(background); var iconRelativeWidth = (float)crewListEntrySize.Y / background.Rect.Width; @@ -310,7 +352,10 @@ namespace Barotrauma var paddingRelativeWidth = 0.35f * commandButtonAbsoluteHeight / background.Rect.Width; // "Padding" to prevent member-specific command button from overlapping job indicator - new GUIFrame(new RectTransform(new Vector2(paddingRelativeWidth, 1.0f), layoutGroup.RectTransform), style: null); + new GUIFrame(new RectTransform(new Vector2(paddingRelativeWidth, 1.0f), layoutGroup.RectTransform), style: null) + { + CanBeFocused = false + }; var jobIconBackground = new GUIImage( new RectTransform(new Vector2(0.8f * iconRelativeWidth, 0.8f), layoutGroup.RectTransform), @@ -320,7 +365,6 @@ namespace Barotrauma CanBeFocused = false, UserData = "job" }; - if (character?.Info?.Job.Prefab?.Icon != null) { new GUIImage( @@ -362,36 +406,6 @@ namespace Barotrauma }; nameBlock.Text = ToolBox.LimitString(character.Name, font, (int)nameBlock.Rect.Width); - var nameActualRealtiveWidth = Math.Min(nameRelativeWidth * background.Rect.Width, 150) / background.Rect.Width; - var characterButton = new GUIButton( - new RectTransform( - new Vector2(paddingRelativeWidth + 0.8f * iconRelativeWidth + nameActualRealtiveWidth + 2 * layoutGroup.RelativeSpacing, 1.0f), - background.RectTransform), - style: null) - { - UserData = character, - OnSecondaryClicked = (comp, data) => - { - if (data == null) { return false; } - if (GameMain.NetworkMember?.ConnectedClients?.Find(c => c.Character == data) is Client client) - { - CreateModerationContextMenu(PlayerInput.MousePosition.ToPoint(), client); - return true; - } - return false; - } - }; - SetCharacterButtonTooltip(characterButton); - - if (IsSinglePlayer) - { - characterButton.OnClicked = CharacterClicked; - } - else - { - characterButton.CanBeSelected = false; - } - new GUIImage( new RectTransform(new Vector2(0.1f * iconRelativeWidth, 0.5f), layoutGroup.RectTransform), style: "VerticalLine") @@ -487,15 +501,15 @@ namespace Barotrauma }; } - private void SetCharacterButtonTooltip(GUIButton characterButton) + private void SetCharacterComponentTooltip(GUIComponent characterComponent) { - var character = (Character)characterButton.UserData; - if (character?.Info?.Job?.Prefab == null) { return; } + if (!(characterComponent?.UserData is Character character)) { return; } + if (character.Info?.Job?.Prefab == null) { return; } string color = XMLExtensions.ColorToString(character.Info.Job.Prefab.UIColor); string tooltip = $"‖color:{color}‖{character.Name} ({character.Info.Job.Name})‖color:end‖"; var richTextData = RichTextData.GetRichTextData(tooltip, out string sanitizedTooltip); - characterButton.ToolTip = sanitizedTooltip; - characterButton.TooltipRichTextData = richTextData; + characterComponent.ToolTip = sanitizedTooltip; + characterComponent.TooltipRichTextData = richTextData; } /// @@ -564,10 +578,18 @@ namespace Barotrauma partial void RenameCharacterProjSpecific(CharacterInfo characterInfo) { if (!(crewList.Content.GetChildByUserData(characterInfo?.Character) is GUIComponent characterComponent)) { return; } + SetCharacterComponentTooltip(characterComponent); if (!(characterComponent.FindChild("name", recursive: true) is GUITextBlock nameBlock)) { return; } nameBlock.Text = ToolBox.LimitString(characterInfo.Name, nameBlock.Font, nameBlock.Rect.Width); - if (!(characterComponent.FindChild(c => c is GUIButton && c.UserData == characterInfo?.Character) is GUIButton characterButton)) { return; } - SetCharacterButtonTooltip(characterButton); + } + + private void OnCrewListRearranged(GUIListBox crewList, object draggedElementData) + { + if (crewList != this.crewList) { return; } + if (!(draggedElementData is Character)) { return; } + if (crewList.HasDraggedElementIndexChanged) { return; } + if (!IsSinglePlayer) { return; } + CharacterClicked(crewList.DraggedElement, draggedElementData); } #endregion @@ -682,15 +704,15 @@ namespace Barotrauma /// Sets the character's current order (if it's close enough to receive messages from orderGiver) and /// displays the order in the crew UI /// - public void SetCharacterOrder(Character character, Order order, string option, int priority, Character orderGiver) + public void SetCharacterOrder(Character character, Order order, string option, int priority, Character orderGiver, Hull targetHull = null) { if (order != null && order.TargetAllCharacters) { - Hull hull = null; + Hull hull = targetHull; if (order.IsReport) { - if (orderGiver?.CurrentHull == null) { return; } - hull = orderGiver.CurrentHull; + if (orderGiver?.CurrentHull == null && hull == null) { return; } + hull ??= orderGiver.CurrentHull; AddOrder(new Order(order.Prefab ?? order, hull, null, orderGiver), order.FadeOutTime); } else if(order.IsIgnoreOrder) @@ -748,7 +770,8 @@ namespace Barotrauma if (IsSinglePlayer) { character.SetOrder(order, option, priority, orderGiver, speak: orderGiver != character); - orderGiver?.Speak(order?.GetChatMessage(character.Name, orderGiver.CurrentHull?.DisplayName, givingOrderToSelf: character == orderGiver, orderOption: option)); + string message = order?.GetChatMessage(character.Name, orderGiver.CurrentHull?.DisplayName, givingOrderToSelf: character == orderGiver, orderOption: option, priority: priority); + orderGiver?.Speak(message); } else if (orderGiver != null) { @@ -1299,6 +1322,80 @@ namespace Barotrauma return 0; } + private bool CreateOrder(Order order, Hull targetHull = null) + { + var sub = Character.Controlled.Submarine; + + if (sub == null || sub.TeamID != Character.Controlled.TeamID || sub.Info.IsWreck) { return false; } + + SetCharacterOrder(null, order, null, CharacterInfo.HighestManualOrderPriority, Character.Controlled, targetHull); + + if (IsSinglePlayer) + { + HumanAIController.ReportProblem(Character.Controlled, order); + } + + return true; + } + + private void UpdateOrderDrag() + { + if (DraggedOrder is { } order) + { + if (dropOrder) + { + // stinky workaround + if (framesToSkip > 0) + { + framesToSkip--; + } + else + { + Hull hull = null; + + if (GUI.MouseOn is GUIFrame frame) + { + if (frame.UserData is Hull data) + { + hull = data; + } + else if (frame.Parent?.UserData is Hull parentData) + { + hull = parentData; + } + } + + framesToSkip = 2; + dropOrder = false; + DraggedOrder = null; + + if (hull is null && GUI.MouseOn is { Visible: true, CanBeFocused: true }) { return; } + + hull ??= Hull.hullList.FirstOrDefault(h => h.WorldRect.ContainsWorld(Screen.Selected.Cam.ScreenToWorld(PlayerInput.MousePosition))); + CreateOrder(order, hull); + } + } + else + { + DragOrder = DragOrder || Vector2.DistanceSquared(dragPoint, PlayerInput.MousePosition) > dragOrderTreshold * dragOrderTreshold; + + if (!PlayerInput.PrimaryMouseButtonHeld()) + { + if (DragOrder) + { + dropOrder = true; + } + else + { + DraggedOrder = null; + } + dragPoint = Vector2.Zero; + DragOrder = false; + } + } + } + } + partial void UpdateProjectSpecific(float deltaTime) { // Quick selection @@ -1316,6 +1413,8 @@ namespace Barotrauma if (GUI.DisableHUD) { return; } + UpdateOrderDrag(); + #region Command UI WasCommandInterfaceDisabledThisUpdate = false; @@ -1756,7 +1855,8 @@ namespace Barotrauma } } private GUIFrame commandFrame, targetFrame; - private GUIButton centerNode, returnNode, expandNode, shortcutCenterNode; + private GUIButton centerNode, returnNode, expandNode; + private GUIFrame shortcutCenterNode; private readonly List> optionNodes = new List>(); private Keys returnNodeHotkey = Keys.None, expandNodeHotkey = Keys.None; private readonly List shortcutNodes = new List(); @@ -1790,7 +1890,7 @@ namespace Barotrauma private bool isContextual; private readonly List contextualOrders = new List(); private Point shorcutCenterNodeOffset; - private const int maxShortCutNodeCount = 4; + private const int maxShortcutNodeCount = 4; private bool WasCommandInterfaceDisabledThisUpdate { get; set; } public static bool CanIssueOrders @@ -2101,6 +2201,8 @@ namespace Barotrauma shortcutNodes.Remove(node); }; RemoveOptionNodes(); + bool wasMinimapVisible = targetFrame != null && targetFrame.Visible; + HideMinimap(); if (returnNode != null) { @@ -2111,12 +2213,9 @@ namespace Barotrauma } // When the mini map is shown, always position the return node on the bottom - List matchingItems = null; - if (node?.UserData is Order order) - { - matchingItems = order.GetMatchingItems(true, interactableFor: characterContext ?? Character.Controlled); - } - var offset = matchingItems != null && matchingItems.Count > 1 ? + bool placeReturnNodeOnTheBottom = wasMinimapVisible || + (node?.UserData is Order order && order.GetMatchingItems(true, interactableFor: characterContext ?? Character.Controlled).Count > 1); + var offset = placeReturnNodeOnTheBottom ? new Point(0, (int)(returnNodeDistanceModifier * nodeDistance)) : node.RectTransform.AbsoluteOffset.Multiply(-returnNodeDistanceModifier); SetReturnNode(centerNode, offset); @@ -2137,12 +2236,7 @@ namespace Barotrauma { if (commandFrame == null) { return false; } RemoveOptionNodes(); - if (targetFrame != null) - { - targetFrame.Visible = false; - nodeConnectors.RectTransform.Parent = commandFrame.RectTransform; - nodeConnectors.RectTransform.RepositionChildInHierarchy(1); - } + HideMinimap(); // TODO: Center node could move to option node instead of being removed commandFrame.RemoveChild(centerNode); SetCenterNode(node); @@ -2163,6 +2257,15 @@ namespace Barotrauma return true; } + private void HideMinimap() + { + if (targetFrame == null || !targetFrame.Visible) { return; } + targetFrame.Visible = false; + // Reset the node connectors to their original parent + nodeConnectors.RectTransform.Parent = commandFrame.RectTransform; + nodeConnectors.RectTransform.RepositionChildInHierarchy(1); + } + private void CreateReturnNodeHotkey() { if (returnNode != null && returnNode.Visible) @@ -2203,6 +2306,7 @@ namespace Barotrauma } node.OnClicked = null; node.OnSecondaryClicked = null; + node.CanBeFocused = false; centerNode = node; } @@ -2219,6 +2323,7 @@ namespace Barotrauma } node.OnClicked = NavigateBackward; node.OnSecondaryClicked = null; + node.CanBeFocused = true; returnNode = node; } @@ -2240,9 +2345,33 @@ namespace Barotrauma { CreateOrderNodes(category); } - else if (userData is Order order) + else if (userData is Order nodeOrder) { - CreateOrderOptions(order); + Submarine submarine = GetTargetSubmarine(); + List matchingItems = null; + if (itemContext == null && nodeOrder.MustSetTarget) + { + matchingItems = nodeOrder.GetMatchingItems(submarine, true, interactableFor: characterContext ?? Character.Controlled); + } + //more than one target item -> create a minimap-like selection with a pic of the sub + if (itemContext == null && !(nodeOrder.TargetEntity is Item) && matchingItems != null && matchingItems.Count > 1) + { + CreateMinimapNodes(nodeOrder, submarine, matchingItems); + } + //only one target (or an order with no particular targets), just show options + else + { + CreateOrderOptionNodes(nodeOrder, itemContext ?? nodeOrder.TargetEntity as Item ?? matchingItems?.FirstOrDefault()); + } + } + else if (userData is (Order minimapOrder, string option) && minimapOrder.HasOptions && string.IsNullOrEmpty(option)) + { + CreateOrderOptionNodes(minimapOrder, minimapOrder.TargetEntity as Item); + } + else + { + DebugConsole.ThrowError($"Unexpected node user data of type {userData.GetType()} when creating command interface nodes"); + return false; } return true; } @@ -2291,7 +2420,7 @@ namespace Barotrauma node.RectTransform.MoveOverTime(offset, CommandNodeAnimDuration); if (Order.OrderCategoryIcons.TryGetValue(category, out Tuple sprite)) { - var tooltip = TextManager.Get("ordercategorytitle." + category.ToString().ToLower()); + var tooltip = TextManager.Get("ordercategorytitle." + category.ToString().ToLowerInvariant()); var categoryDescription = TextManager.Get("ordercategorydescription." + category.ToString(), true); if (!string.IsNullOrWhiteSpace(categoryDescription)) { tooltip += "\n" + categoryDescription; } CreateNodeIcon(Vector2.One, node.RectTransform, sprite.Item1, sprite.Item2, tooltip: tooltip); @@ -2302,99 +2431,91 @@ namespace Barotrauma private void CreateShortcutNodes() { - bool HasAppropriateJob(Character c, string jobId) => c.Info?.Job != null && c.Info.Job.Prefab.AppropriateOrders.Contains(jobId); - - Submarine sub = GetTargetSubmarine(); - + var sub = GetTargetSubmarine(); if (sub == null) { return; } - shortcutNodes.Clear(); - - if (shortcutNodes.Count < maxShortCutNodeCount && - sub.GetItems(false).Find(i => i.HasTag("reactor") && i.IsPlayerTeamInteractable)?.GetComponent() is Reactor reactor) + if (CanFitMoreNodes() && sub.GetItems(false).Find(i => i.HasTag("reactor") && i.IsPlayerTeamInteractable)?.GetComponent() is Reactor reactor) { - var reactorOutput = -reactor.CurrPowerConsumption; + float reactorOutput = -reactor.CurrPowerConsumption; // If player is not an engineer AND the reactor is not powered up AND nobody is using the reactor // ---> Create shortcut node for "Operate Reactor" order's "Power Up" option - if ((Character.Controlled == null || !HasAppropriateJob(Character.Controlled, "operatereactor")) && - reactorOutput < float.Epsilon && characters.None(c => c.SelectedConstruction == reactor.Item)) + if (ShouldDelegateOrder("operatereactor") && reactorOutput < float.Epsilon && characters.None(c => c.SelectedConstruction == reactor.Item)) { var order = new Order(Order.GetPrefab("operatereactor"), reactor.Item, reactor, Character.Controlled); - var option = order.Prefab.Options[0]; - shortcutNodes.Add( - CreateOrderOptionNode(shortcutNodeSize, null, Point.Zero, order, option, order.Prefab.GetOptionName(option), -1)); - } - } - - // TODO: Reconsider the conditions as bot captain can have the nav term selected without operating it - // If player is not a captain AND nobody is using the nav terminal AND the nav terminal is powered up - // --> Create shortcut node for Steer order - if (shortcutNodes.Count < maxShortCutNodeCount && (Character.Controlled == null || !HasAppropriateJob(Character.Controlled, "steer")) && - sub.GetItems(false).Find(i => i.HasTag("navterminal") && i.IsPlayerTeamInteractable) is Item nav && characters.None(c => c.SelectedConstruction == nav) && - nav.GetComponent() is Steering steering && steering.Voltage > steering.MinVoltage) - { - shortcutNodes.Add( - CreateOrderNode(shortcutNodeSize, null, Point.Zero, Order.GetPrefab("steer"), -1)); - } - - // If player is not a security officer AND invaders are reported - // --> Create shorcut node for Fight Intruders order - if (shortcutNodes.Count < maxShortCutNodeCount && (Character.Controlled == null || !HasAppropriateJob(Character.Controlled, "fightintruders")) && - Order.GetPrefab("reportintruders") is Order reportIntruders && ActiveOrders.Any(o => o.First.Prefab == reportIntruders)) - { - shortcutNodes.Add( - CreateOrderNode(shortcutNodeSize, null, Point.Zero, Order.GetPrefab("fightintruders"), -1)); - } - - // If player is not a mechanic AND a breach has been reported - // --> Create shorcut node for Fix Leaks order - if (shortcutNodes.Count < maxShortCutNodeCount && (Character.Controlled == null || !HasAppropriateJob(Character.Controlled, "fixleaks")) && - Order.GetPrefab("reportbreach") is Order reportBreach && ActiveOrders.Any(o => o.First.Prefab == reportBreach)) - { - shortcutNodes.Add( - CreateOrderNode(shortcutNodeSize, null, Point.Zero, Order.GetPrefab("fixleaks"), -1)); - } - - // --> Create shortcut nodes for the Repair orders - if (shortcutNodes.Count < maxShortCutNodeCount && Order.GetPrefab("reportbrokendevices") is Order reportBrokenDevices && ActiveOrders.Any(o => o.First.Prefab == reportBrokenDevices)) - { - // TODO: Doesn't work for player issued reports, because they don't have a target. - int repairNodes = 0; - string tag = "repairelectrical"; - if (shortcutNodes.Count < maxShortCutNodeCount && (Character.Controlled == null || !HasAppropriateJob(Character.Controlled, tag)) && ActiveOrders.Any(o => o.First.Prefab == reportBrokenDevices && o.First.TargetItemComponent is Repairable r && r.requiredSkills.Any(s => s.Identifier == "electrical"))) - { - shortcutNodes.Add(CreateOrderNode(shortcutNodeSize, null, Point.Zero, Order.GetPrefab(tag), -1)); - repairNodes++; - } - tag = "repairmechanical"; - if (shortcutNodes.Count < maxShortCutNodeCount && (Character.Controlled == null || !HasAppropriateJob(Character.Controlled, tag)) && ActiveOrders.Any(o => o.First.Prefab == reportBrokenDevices && o.First.TargetItemComponent is Repairable r && r.requiredSkills.Any(s => s.Identifier == "mechanical"))) - { - shortcutNodes.Add(CreateOrderNode(shortcutNodeSize, null, Point.Zero, Order.GetPrefab(tag), -1)); - repairNodes++; - } - if (repairNodes == 0 && shortcutNodes.Count < maxShortCutNodeCount) - { - tag = "repairsystems"; - if (Character.Controlled == null || !HasAppropriateJob(Character.Controlled, tag)) + string option = order.Prefab.Options[0]; + if (IsNonDuplicateOrder(order, option)) { - shortcutNodes.Add(CreateOrderNode(shortcutNodeSize, null, Point.Zero, Order.GetPrefab(tag), -1)); + shortcutNodes.Add(CreateOrderOptionNode(shortcutNodeSize, null, Point.Zero, order, option, order.Prefab.GetOptionName(option), -1)); } } } - + // TODO: Reconsider the conditions as bot captain can have the nav term selected without operating it + // If player is not a captain AND nobody is using the nav terminal AND the nav terminal is powered up + // --> Create shortcut node for Steer order + if (CanFitMoreNodes() && ShouldDelegateOrder("steer") && Order.GetPrefab("steer") is Order steerOrder && IsNonDuplicateOrder(steerOrder) && + sub.GetItems(false).Find(i => i.HasTag("navterminal") && i.IsPlayerTeamInteractable) is Item nav && characters.None(c => c.SelectedConstruction == nav) && + nav.GetComponent() is Steering steering && steering.Voltage > steering.MinVoltage) + { + shortcutNodes.Add(CreateOrderNode(shortcutNodeSize, null, Point.Zero, steerOrder, -1)); + } + // If player is not a security officer AND invaders are reported + // --> Create shorcut node for Fight Intruders order + if (CanFitMoreNodes() && ShouldDelegateOrder("fightintruders") && + Order.GetPrefab("reportintruders") is Order reportIntruders && ActiveOrders.Any(o => o.First.Prefab == reportIntruders) && + Order.GetPrefab("fightintruders") is Order fightOrder && IsNonDuplicateOrder(fightOrder)) + { + shortcutNodes.Add(CreateOrderNode(shortcutNodeSize, null, Point.Zero, fightOrder, -1)); + } + // If player is not a mechanic AND a breach has been reported + // --> Create shorcut node for Fix Leaks order + if (CanFitMoreNodes() && ShouldDelegateOrder("fixleaks") && Order.GetPrefab("fixleaks") is Order fixLeaksOrder && IsNonDuplicateOrder(fixLeaksOrder) && + Order.GetPrefab("reportbreach") is Order reportBreach && ActiveOrders.Any(o => o.First.Prefab == reportBreach)) + { + shortcutNodes.Add(CreateOrderNode(shortcutNodeSize, null, Point.Zero, fixLeaksOrder, -1)); + } + // --> Create shortcut nodes for the Repair orders + if (CanFitMoreNodes() && Order.GetPrefab("reportbrokendevices") is Order reportBrokenDevices && ActiveOrders.Any(o => o.First.Prefab == reportBrokenDevices)) + { + // TODO: Doesn't work for player issued reports, because they don't have a target. + bool useSpecificRepairOrder = false; + string tag = "repairelectrical"; + if (CanFitMoreNodes() && ShouldDelegateOrder(tag) && + ActiveOrders.Any(o => o.First.Prefab == reportBrokenDevices && o.First.TargetItemComponent is Repairable r && r.requiredSkills.Any(s => s.Identifier == "electrical"))) + { + if (Order.GetPrefab(tag) is Order repairElectricalOrder && IsNonDuplicateOrder(repairElectricalOrder)) + { + shortcutNodes.Add(CreateOrderNode(shortcutNodeSize, null, Point.Zero, repairElectricalOrder, -1)); + } + useSpecificRepairOrder = true; + } + tag = "repairmechanical"; + if (CanFitMoreNodes() && ShouldDelegateOrder(tag) && + ActiveOrders.Any(o => o.First.Prefab == reportBrokenDevices && o.First.TargetItemComponent is Repairable r && r.requiredSkills.Any(s => s.Identifier == "mechanical"))) + { + if (Order.GetPrefab(tag) is Order repairMechanicalOrder && IsNonDuplicateOrder(repairMechanicalOrder)) + { + shortcutNodes.Add(CreateOrderNode(shortcutNodeSize, null, Point.Zero, repairMechanicalOrder, -1)); + } + useSpecificRepairOrder = true; + } + tag = "repairsystems"; + if (!useSpecificRepairOrder && CanFitMoreNodes() && ShouldDelegateOrder(tag) && Order.GetPrefab(tag) is Order repairOrder && IsNonDuplicateOrder(repairOrder)) + { + shortcutNodes.Add(CreateOrderNode(shortcutNodeSize, null, Point.Zero, repairOrder, -1)); + } + } // If fire is reported // --> Create shortcut node for Extinguish Fires order - if (shortcutNodes.Count < maxShortCutNodeCount && ActiveOrders.Any(o => o.First.Prefab == Order.GetPrefab("reportfire"))) + if (CanFitMoreNodes() && Order.GetPrefab("extinguishfires") is Order extinguishOrder && IsNonDuplicateOrder(extinguishOrder) && + ActiveOrders.Any(o => o.First.Prefab == Order.GetPrefab("reportfire"))) { - shortcutNodes.Add( - CreateOrderNode(shortcutNodeSize, null, Point.Zero, Order.GetPrefab("extinguishfires"), -1)); + shortcutNodes.Add(CreateOrderNode(shortcutNodeSize, null, Point.Zero, extinguishOrder, -1)); } - - if (shortcutNodes.Count < maxShortCutNodeCount && characterContext?.Info?.Job?.Prefab?.AppropriateOrders != null) + if (CanFitMoreNodes() && characterContext?.Info?.Job?.Prefab?.AppropriateOrders != null) { foreach (string orderIdentifier in characterContext.Info.Job.Prefab.AppropriateOrders) { - if (Order.GetPrefab(orderIdentifier) is Order orderPrefab && + if (Order.GetPrefab(orderIdentifier) is Order orderPrefab && IsNonDuplicateOrder(orderPrefab) && shortcutNodes.None(n => (n.UserData is Order order && order.Identifier == orderIdentifier) || (n.UserData is Tuple orderWithOption && orderWithOption.Item1.Identifier == orderIdentifier)) && !orderPrefab.IsReport && orderPrefab.Category != null) @@ -2403,22 +2524,19 @@ namespace Barotrauma { shortcutNodes.Add(CreateOrderNode(shortcutNodeSize, null, Point.Zero, orderPrefab, -1)); } - if (shortcutNodes.Count >= maxShortCutNodeCount) { break; } + if (!CanFitMoreNodes()) { break; } } } } - - if (shortcutNodes.Count < maxShortCutNodeCount && characterContext != null && !characterContext.IsDismissed) + if (CanFitMoreNodes() && characterContext != null && !characterContext.IsDismissed) { - shortcutNodes.Add( - CreateOrderNode(shortcutNodeSize, null, Point.Zero, dismissedOrderPrefab, -1)); + shortcutNodes.Add(CreateOrderNode(shortcutNodeSize, null, Point.Zero, dismissedOrderPrefab, -1)); } - if (shortcutNodes.Count < 1) { return; } - - shortcutCenterNode = new GUIButton( - new RectTransform(shortcutCenterNodeSize, parent: commandFrame.RectTransform, anchor: Anchor.Center), - style: null); + shortcutCenterNode = new GUIFrame(new RectTransform(shortcutCenterNodeSize, parent: commandFrame.RectTransform, anchor: Anchor.Center), style: null) + { + CanBeFocused = false + }; CreateNodeIcon(shortcutCenterNode.RectTransform, "CommandShortcutNode"); foreach (GUIComponent c in shortcutCenterNode.Children) { @@ -2427,15 +2545,29 @@ namespace Barotrauma c.SelectedColor = c.Color; } shortcutCenterNode.RectTransform.MoveOverTime(shorcutCenterNodeOffset, CommandNodeAnimDuration); - - var nodeCountForCalculations = shortcutNodes.Count * 2 + 2; - var offsets = MathUtils.GetPointsOnCircumference(Vector2.Zero, 0.75f * nodeDistance, nodeCountForCalculations); - var firstOffsetIndex = nodeCountForCalculations / 2 - 1; + int nodeCountForCalculations = shortcutNodes.Count * 2 + 2; + Vector2[] offsets = MathUtils.GetPointsOnCircumference(Vector2.Zero, 0.75f * nodeDistance, nodeCountForCalculations); + int firstOffsetIndex = nodeCountForCalculations / 2 - 1; for (int i = 0; i < shortcutNodes.Count; i++) { shortcutNodes[i].RectTransform.Parent = commandFrame.RectTransform; shortcutNodes[i].RectTransform.MoveOverTime(shorcutCenterNodeOffset + offsets[firstOffsetIndex - i].ToPoint(), CommandNodeAnimDuration); } + + bool CanFitMoreNodes() + { + return shortcutNodes.Count < maxShortcutNodeCount; + } + static bool ShouldDelegateOrder(string orderIdentifier) + { + return !(Character.Controlled is Character c) || !(c?.Info?.Job != null && c.Info.Job.Prefab.AppropriateOrders.Contains(orderIdentifier)); + } + bool IsNonDuplicateOrder(Order orderPrefab, string option = null) + { + return characterContext == null || (string.IsNullOrEmpty(option) ? + characterContext.CurrentOrders.None(oi => oi.Order?.Identifier == orderPrefab?.Identifier) : + characterContext.CurrentOrders.None(oi => oi.Order?.Identifier == orderPrefab?.Identifier && oi.OrderOption == option)); + } } private void CreateOrderNodes(OrderCategory orderCategory) @@ -2621,6 +2753,7 @@ namespace Barotrauma item.GetConnectedComponents(recursive: true).Any(c => c.Item.HasTag(operateWeaponsPrefab.TargetItems))); } + /// Use a negative value (e.g. -1) if there should be no hotkey associated with the node private GUIButton CreateOrderNode(Point size, RectTransform parent, Point offset, Order order, int hotkey, bool disableNode = false, bool checkIfOrderCanBeHeard = true) { var node = new GUIButton( @@ -2694,7 +2827,7 @@ namespace Barotrauma if (disableNode) { node.CanBeFocused = icon.CanBeFocused = false; - CreateBlockIcon(node.RectTransform); + CreateBlockIcon(node.RectTransform, tooltip: TextManager.Get("nocharactercanhear")); } else if (hotkey >= 0) { @@ -2703,195 +2836,137 @@ namespace Barotrauma return node; } - private void CreateOrderOptions(Order order) + private void CreateMinimapNodes(Order order, Submarine submarine, List matchingItems) { - Submarine submarine = GetTargetSubmarine(); - var matchingItems = (itemContext == null && order.MustSetTarget) ? order.GetMatchingItems(submarine, true, interactableFor: characterContext ?? Character.Controlled) : new List(); - - //more than one target item -> create a minimap-like selection with a pic of the sub - if (itemContext == null && matchingItems.Count > 1) + // TODO: Further adjustments to frameSize calculations + // I just divided the existing sizes by 2 to get it working quickly without it overlapping too much + Point frameSize; + Rectangle subBorders = submarine.GetDockedBorders(); + if (subBorders.Width > subBorders.Height) { - // TODO: Further adjustments to frameSize calculations - // I just divided the existing sizes by 2 to get it working quickly without it overlapping too much - Point frameSize; - Rectangle subBorders = submarine.GetDockedBorders(); - if (subBorders.Width > subBorders.Height) + frameSize.X = Math.Min(GameMain.GraphicsWidth / 2, GameMain.GraphicsWidth - 50) / 2; + //height depends on the dimensions of the sub + frameSize.Y = (int)(frameSize.X * (subBorders.Height / (float)subBorders.Width)); + } + else + { + frameSize.Y = Math.Min((int)(GameMain.GraphicsHeight * 0.6f), GameMain.GraphicsHeight - 50) / 2; + //width depends on the dimensions of the sub + frameSize.X = (int)(frameSize.Y * (subBorders.Width / (float)subBorders.Height)); + } + + // TODO: Use the old targetFrame if possible + targetFrame = new GUIFrame( + new RectTransform(frameSize, parent: commandFrame.RectTransform, anchor: Anchor.Center) { - frameSize.X = Math.Min(GameMain.GraphicsWidth / 2, GameMain.GraphicsWidth - 50) / 2; - //height depends on the dimensions of the sub - frameSize.Y = (int)(frameSize.X * (subBorders.Height / (float)subBorders.Width)); - } - else + AbsoluteOffset = new Point(0, -150), + Pivot = Pivot.BottomCenter + }, + style: "InnerFrame"); + + submarine.CreateMiniMap(targetFrame, pointsOfInterest: matchingItems); + + new GUICustomComponent(new RectTransform(Vector2.One, targetFrame.RectTransform), onDraw: DrawMiniMapOverlay) + { + CanBeFocused = false, + UserData = submarine + }; + + List optionElements = new List(); + foreach (Item item in matchingItems) + { + var itemTargetFrame = targetFrame.Children.First().FindChild(item); + if (itemTargetFrame == null) { continue; } + + var anchor = Anchor.TopLeft; + if (itemTargetFrame.RectTransform.RelativeOffset.X < 0.5f) { - frameSize.Y = Math.Min((int)(GameMain.GraphicsHeight * 0.6f), GameMain.GraphicsHeight - 50) / 2; - //width depends on the dimensions of the sub - frameSize.X = (int)(frameSize.Y * (subBorders.Width / (float)subBorders.Height)); - } - - // TODO: Use the old targetFrame if possible - targetFrame = new GUIFrame( - new RectTransform(frameSize, parent: commandFrame.RectTransform, anchor: Anchor.Center) + if (itemTargetFrame.RectTransform.RelativeOffset.Y < 0.5f) { - AbsoluteOffset = new Point(0, -150), - Pivot = Pivot.BottomCenter - }, - style: "InnerFrame"); - - submarine.CreateMiniMap(targetFrame, pointsOfInterest: matchingItems); - - new GUICustomComponent(new RectTransform(Vector2.One, targetFrame.RectTransform), onDraw: DrawMiniMapOverlay) - { - CanBeFocused = false, - UserData = submarine - }; - - List optionElements = new List(); - foreach (Item item in matchingItems) - { - var itemTargetFrame = targetFrame.Children.First().FindChild(item); - if (itemTargetFrame == null) { continue; } - - var anchor = Anchor.TopLeft; - if (itemTargetFrame.RectTransform.RelativeOffset.X < 0.5f) - { - if (itemTargetFrame.RectTransform.RelativeOffset.Y < 0.5f) - { - anchor = Anchor.BottomRight; - } - else - { - anchor = Anchor.TopRight; - } - } - else if (itemTargetFrame.RectTransform.RelativeOffset.Y < 0.5f) - { - anchor = Anchor.BottomLeft; - } - - GUIComponent optionElement; - if (order.Options.Length > 1) - { - optionElement = new GUIFrame( - new RectTransform( - new Point((int)(250 * GUI.Scale), (int)((40 + order.Options.Length * 40) * GUI.Scale)), - parent: itemTargetFrame.RectTransform, - anchor: anchor), - style: "InnerFrame"); - - new GUIFrame( - new RectTransform(Vector2.One, optionElement.RectTransform, anchor: Anchor.Center), - style: "OuterGlow", - color: Color.Black * 0.7f); - - var optionContainer = new GUILayoutGroup(new RectTransform(new Vector2(0.9f), optionElement.RectTransform, anchor: Anchor.Center)) - { - RelativeSpacing = 0.05f, - Stretch = true - }; - - new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.3f), optionContainer.RectTransform), - item?.Name ?? GetOrderNameBasedOnContextuality(order)); - - for (int i = 0; i < order.Options.Length; i++) - { - var optionButton = new GUIButton( - new RectTransform(new Vector2(1.0f, 0.2f), optionContainer.RectTransform), - text: order.GetOptionName(i), style: "GUITextBox") - { - UserData = new Tuple( - item == null ? order : new Order(order, item, order.GetTargetItemComponent(item)), - order.Options[i]), - Font = GUI.SmallFont, - OnClicked = (_, userData) => - { - if (!CanIssueOrders) { return false; } - var o = userData as Tuple; - SetCharacterOrder(characterContext ?? GetCharacterForQuickAssignment(o.Item1), o.Item1, o.Item2, CharacterInfo.HighestManualOrderPriority, Character.Controlled); - DisableCommandUI(); - return true; - } - }; - if (CanOpenManualAssignment(optionButton)) - { - optionButton.OnSecondaryClicked = (button, _) => CreateAssignmentNodes(button); - } - optionNodes.Add(new Tuple(optionButton, Keys.None)); - } + anchor = Anchor.BottomRight; } else { - var userData = new Tuple(item == null ? order : new Order(order, item, order.GetTargetItemComponent(item)), ""); - optionElement = new GUIButton( - new RectTransform( - new Point((int)(50 * GUI.Scale)), - parent: itemTargetFrame.RectTransform, - anchor: anchor), - style: null) - { - UserData = userData, - Font = GUI.SmallFont, - OnClicked = (_, userData) => - { - if (!CanIssueOrders) { return false; } - var o = userData as Tuple; - SetCharacterOrder(characterContext ?? GetCharacterForQuickAssignment(o.Item1), o.Item1, o.Item2, CharacterInfo.HighestManualOrderPriority, Character.Controlled); - DisableCommandUI(); - return true; - } - }; - if (CanOpenManualAssignment(optionElement)) - { - optionElement.OnSecondaryClicked = (button, _) => CreateAssignmentNodes(button); - } - var colorMultiplier = characters.Any(c => c.CurrentOrders.Any(o => o.Order != null && - o.Order.Identifier == userData.Item1.Identifier && - o.Order.TargetEntity == userData.Item1.TargetEntity)) ? 0.5f : 1f; - CreateNodeIcon(Vector2.One, optionElement.RectTransform, item.Prefab.MinimapIcon ?? order.SymbolSprite, order.Color * colorMultiplier, tooltip: item.Name); - optionNodes.Add(new Tuple(optionElement, Keys.None)); + anchor = Anchor.TopRight; } - optionElements.Add(optionElement); + } + else if (itemTargetFrame.RectTransform.RelativeOffset.Y < 0.5f) + { + anchor = Anchor.BottomLeft; } - Rectangle clampArea = new Rectangle(10, 10, GameMain.GraphicsWidth - 20, GameMain.GraphicsHeight - 20); - if (order.Identifier == "operateweapons") + var userData = new Tuple(item == null ? order : new Order(order, item, order.GetTargetItemComponent(item)), ""); + var optionElement = new GUIButton( + new RectTransform( + new Point((int)(50 * GUI.Scale)), + parent: itemTargetFrame.RectTransform, + anchor: anchor), + style: null) { - Rectangle disallowedArea = targetFrame.GetChild().Rect; - Point originalSize = disallowedArea.Size; - disallowedArea.Size = disallowedArea.MultiplySize(0.9f); - disallowedArea.X += (originalSize.X - disallowedArea.Size.X) / 2; - disallowedArea.Y += (originalSize.Y - disallowedArea.Size.Y) / 2; - GUI.PreventElementOverlap(optionElements, new List() { disallowedArea }, clampArea); - nodeConnectors.RectTransform.Parent = targetFrame.RectTransform; - nodeConnectors.RectTransform.SetAsFirstChild(); - } - else + UserData = userData, + Font = GUI.SmallFont, + OnClicked = (button, userData) => + { + if (!CanIssueOrders) { return false; } + var o = userData as Tuple; + if (o.Item1.HasOptions) + { + NavigateForward(button, userData); + } + else + { + SetCharacterOrder(characterContext ?? GetCharacterForQuickAssignment(o.Item1), o.Item1, o.Item2, CharacterInfo.HighestManualOrderPriority, Character.Controlled); + DisableCommandUI(); + } + return true; + } + }; + if (CanOpenManualAssignment(optionElement)) { - GUI.PreventElementOverlap(optionElements, clampArea: clampArea); + optionElement.OnSecondaryClicked = (button, _) => CreateAssignmentNodes(button); } - - var shadow = new GUIFrame( - new RectTransform(targetFrame.Rect.Size + new Point((int)(200 * GUI.Scale)), targetFrame.RectTransform, anchor: Anchor.Center), - style: "OuterGlow", - color: matchingItems.Count > 1 ? Color.Black * 0.9f : Color.Black * 0.7f); - shadow.SetAsFirstChild(); + var colorMultiplier = characters.Any(c => c.CurrentOrders.Any(o => o.Order != null && + o.Order.Identifier == userData.Item1.Identifier && + o.Order.TargetEntity == userData.Item1.TargetEntity)) ? 0.5f : 1f; + CreateNodeIcon(Vector2.One, optionElement.RectTransform, item.Prefab.MinimapIcon ?? order.SymbolSprite, order.Color * colorMultiplier, tooltip: item.Name); + optionNodes.Add(new Tuple(optionElement, Keys.None)); + optionElements.Add(optionElement); } - //only one target (or an order with no particular targets), just show options - else + + Rectangle clampArea = new Rectangle(10, 10, GameMain.GraphicsWidth - 20, GameMain.GraphicsHeight - 20); + Rectangle disallowedArea = targetFrame.GetChild().Rect; + Point originalSize = disallowedArea.Size; + disallowedArea.Size = disallowedArea.MultiplySize(0.9f); + disallowedArea.X += (originalSize.X - disallowedArea.Size.X) / 2; + disallowedArea.Y += (originalSize.Y - disallowedArea.Size.Y) / 2; + GUI.PreventElementOverlap(optionElements, new List() { disallowedArea }, clampArea); + nodeConnectors.RectTransform.Parent = targetFrame.RectTransform; + nodeConnectors.RectTransform.SetAsFirstChild(); + + var shadow = new GUIFrame( + new RectTransform(targetFrame.Rect.Size + new Point((int)(200 * GUI.Scale)), targetFrame.RectTransform, anchor: Anchor.Center), + style: "OuterGlow", + color: matchingItems.Count > 1 ? Color.Black * 0.9f : Color.Black * 0.7f); + shadow.SetAsFirstChild(); + } + + private void CreateOrderOptionNodes(Order order, Item targetItem) + { + if (itemContext != null) { - var item = itemContext != null ? - (order.UseController ? itemContext.GetConnectedComponents().FirstOrDefault()?.Item ?? itemContext.GetConnectedComponents(recursive: true).FirstOrDefault()?.Item : itemContext) : - (matchingItems.Count > 0 ? matchingItems[0] : null); - var o = item == null || !order.IsPrefab ? order : new Order(order, item, order.GetTargetItemComponent(item)); - var offsets = MathUtils.GetPointsOnCircumference(Vector2.Zero, nodeDistance, - GetCircumferencePointCount(order.Options.Length), - GetFirstNodeAngle(order.Options.Length)); - var offsetIndex = 0; - for (int i = 0; i < order.Options.Length; i++) - { - optionNodes.Add(new Tuple( - CreateOrderOptionNode(nodeSize, commandFrame.RectTransform, offsets[offsetIndex++].ToPoint(), o, order.Options[i], order.GetOptionName(i), (i + 1) % 10), - Keys.D0 + (i + 1) % 10)); - } + targetItem = !order.UseController ? itemContext : + itemContext.GetConnectedComponents().FirstOrDefault()?.Item ?? itemContext.GetConnectedComponents(recursive: true).FirstOrDefault()?.Item; + } + var o = (targetItem == null || !order.IsPrefab) ? order : new Order(order, targetItem, order.GetTargetItemComponent(targetItem)); + var offsets = MathUtils.GetPointsOnCircumference(Vector2.Zero, nodeDistance, + GetCircumferencePointCount(order.Options.Length), + GetFirstNodeAngle(order.Options.Length)); + var offsetIndex = 0; + for (int i = 0; i < order.Options.Length; i++) + { + optionNodes.Add(new Tuple( + CreateOrderOptionNode(nodeSize, commandFrame.RectTransform, offsets[offsetIndex++].ToPoint(), o, order.Options[i], order.GetOptionName(i), (i + 1) % 10), + Keys.D0 + (i + 1) % 10)); } } @@ -2928,7 +3003,7 @@ namespace Barotrauma { node.CanBeFocused = false; if (icon != null) { icon.CanBeFocused = false; } - CreateBlockIcon(node.RectTransform); + CreateBlockIcon(node.RectTransform, tooltip: TextManager.Get("nocharactercanhear")); } else if (hotkey >= 0) { @@ -2990,9 +3065,7 @@ namespace Barotrauma SetCenterNode(clickedOptionNode); node = null; } - targetFrame.Visible = false; - nodeConnectors.RectTransform.Parent = commandFrame.RectTransform; - nodeConnectors.RectTransform.RepositionChildInHierarchy(1); + HideMinimap(); } if (shortcutCenterNode != null) { @@ -3178,7 +3251,7 @@ namespace Barotrauma if (!canHear) { node.CanBeFocused = orderIcon.CanBeFocused = false; - CreateBlockIcon(node.RectTransform); + CreateBlockIcon(node.RectTransform, tooltip: TextManager.Get("thischaractercanthear")); } if (hotkey >= 0) { @@ -3270,14 +3343,23 @@ namespace Barotrauma }; } - private void CreateBlockIcon(RectTransform parent) + private void CreateBlockIcon(RectTransform parent, string tooltip = null) { - new GUIImage(new RectTransform(new Vector2(0.9f), parent, anchor: Anchor.Center), cancelIcon, scaleToFit: true) + var icon = new GUIImage(new RectTransform(new Vector2(0.9f), parent, anchor: Anchor.Center), cancelIcon, scaleToFit: true) { CanBeFocused = false, Color = GUI.Style.Red * nodeColorMultiplier, HoverColor = GUI.Style.Red }; + if (!string.IsNullOrEmpty(tooltip)) + { + icon.ToolTip = tooltip; + string color = XMLExtensions.ColorToString(GUI.Style.Red); + tooltip = $"‖color:{color}‖{tooltip}‖color:end‖"; + var richTextData = RichTextData.GetRichTextData(tooltip, out _); + icon.TooltipRichTextData = richTextData; + icon.CanBeFocused = true; + } } private int GetCircumferencePointCount(int nodes) @@ -3383,15 +3465,15 @@ namespace Barotrauma private bool CanOpenManualAssignment(GUIComponent node) { if (node == null || characterContext != null) { return false; } - if (node.UserData is Tuple orderInfo) + if (node.UserData is (Order minimapOrder, string option)) { - return !orderInfo.Item1.TargetAllCharacters; + return !minimapOrder.TargetAllCharacters && (!minimapOrder.HasOptions || !string.IsNullOrEmpty(option)); } - if (node.UserData is Order order) + if (node.UserData is Order nodeOrder) { - return !order.TargetAllCharacters && !order.HasOptions && - (!order.MustSetTarget || itemContext != null || - order.GetMatchingItems(GetTargetSubmarine(), true, interactableFor: Character.Controlled).Count < 2); + return !nodeOrder.TargetAllCharacters && !nodeOrder.HasOptions && + (!nodeOrder.MustSetTarget || itemContext != null || + nodeOrder.GetMatchingItems(GetTargetSubmarine(), true, interactableFor: Character.Controlled).Count < 2); } return false; } diff --git a/Barotrauma/BarotraumaClient/ClientSource/GameSession/GameModes/MultiPlayerCampaign.cs b/Barotrauma/BarotraumaClient/ClientSource/GameSession/GameModes/MultiPlayerCampaign.cs index e2a74ba9a..99526244b 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/GameSession/GameModes/MultiPlayerCampaign.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/GameSession/GameModes/MultiPlayerCampaign.cs @@ -761,7 +761,7 @@ namespace Barotrauma Faction faction = campaign.Factions.FirstOrDefault(f => f.Prefab.Identifier.Equals(identifier, StringComparison.OrdinalIgnoreCase)); if (faction?.Reputation != null) { - faction.Reputation.Value = rep; + faction.Reputation.SetReputation(rep); } else { @@ -771,7 +771,7 @@ namespace Barotrauma if (reputation.HasValue) { - campaign.Map.CurrentLocation.Reputation.Value = reputation.Value; + campaign.Map.CurrentLocation.Reputation.SetReputation(reputation.Value); campaign?.CampaignUI?.UpgradeStore?.RefreshAll(); } diff --git a/Barotrauma/BarotraumaClient/ClientSource/GameSession/GameSession.cs b/Barotrauma/BarotraumaClient/ClientSource/GameSession/GameSession.cs index 90aae527a..86db15f21 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/GameSession/GameSession.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/GameSession/GameSession.cs @@ -24,7 +24,7 @@ namespace Barotrauma if (GameMain.NetLobbyScreen.HeadSelectionList != null) { GameMain.NetLobbyScreen.HeadSelectionList.Visible = false; } if (GameMain.NetLobbyScreen.JobSelectionFrame != null) { GameMain.NetLobbyScreen.JobSelectionFrame.Visible = false; } } - if (tabMenu == null && GameMode is TutorialMode == false) + if (tabMenu == null && !(GameMode is TutorialMode) && !ConversationAction.IsDialogOpen) { tabMenu = new TabMenu(); HintManager.OnShowTabMenu(); @@ -34,7 +34,6 @@ namespace Barotrauma tabMenu = null; NetLobbyScreen.JobInfoFrame = null; } - return true; } @@ -44,7 +43,7 @@ namespace Barotrauma private GUIComponent respawnInfoFrame, respawnButtonContainer; private GUITextBlock respawnInfoText; private GUITickBox respawnTickBox; - private GUILayoutGroup TopLeftButtonGroup; + private void CreateTopLeftButtons() { if (topLeftButtonGroup != null) diff --git a/Barotrauma/BarotraumaClient/ClientSource/GameSettings.cs b/Barotrauma/BarotraumaClient/ClientSource/GameSettings.cs index 200d39720..00f03cf5b 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/GameSettings.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/GameSettings.cs @@ -1518,6 +1518,12 @@ namespace Barotrauma "Automatic quickstart enabled", "Will the game automatically move on to Quickstart when the game is launched"); + addDebugTickBox( + TestScreenEnabled, + (b) => TestScreenEnabled = b, + "Test screen enabled", + "Will the game automatically move on to a test screen when the game is launched"); + addDebugTickBox( AutomaticCampaignLoadEnabled, (b) => AutomaticCampaignLoadEnabled = b, diff --git a/Barotrauma/BarotraumaClient/ClientSource/Items/CharacterInventory.cs b/Barotrauma/BarotraumaClient/ClientSource/Items/CharacterInventory.cs index 516f62488..953594247 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Items/CharacterInventory.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Items/CharacterInventory.cs @@ -161,7 +161,7 @@ namespace Barotrauma public override void CreateSlots() { - if (visualSlots == null) { visualSlots = new VisualSlot[capacity]; } + visualSlots ??= new VisualSlot[capacity]; float multiplier = !GUI.IsFourByThree() ? UIScale : UIScale * 0.925f; @@ -359,7 +359,8 @@ namespace Barotrauma int personalSlotX = HUDLayoutSettings.InventoryAreaLower.Right - SlotSize.X - Spacing; for (int i = 0; i < visualSlots.Length; i++) { - if (HideSlot(i)) continue; + if (HideSlot(i)) { continue; } + if (SlotTypes[i] == InvSlotType.RightHand || SlotTypes[i] == InvSlotType.LeftHand) { continue; } if (PersonalSlots.HasFlag(SlotTypes[i])) { //upperX -= slotSize.X + spacing; @@ -371,10 +372,18 @@ namespace Barotrauma } int lowerX = x; + int handSlotX = x; int personalSlotY = GameMain.GraphicsHeight - bottomOffset * 2 - Spacing * 2 - (int)(!GUI.IsFourByThree() ? UnequippedIndicator.size.Y * UIScale * IndicatorScaleAdjustment : UnequippedIndicator.size.Y * UIScale * IndicatorScaleAdjustment * 2f); for (int i = 0; i < SlotPositions.Length; i++) { - if (HideSlot(i)) continue; + if (SlotTypes[i] == InvSlotType.RightHand || SlotTypes[i] == InvSlotType.LeftHand) + { + SlotPositions[i] = new Vector2(handSlotX, personalSlotY); + handSlotX += visualSlots[i].Rect.Width + Spacing; + continue; + } + + if (HideSlot(i)) { continue; } if (PersonalSlots.HasFlag(SlotTypes[i])) { SlotPositions[i] = new Vector2(personalSlotX, personalSlotY); @@ -390,7 +399,8 @@ namespace Barotrauma x = lowerX; for (int i = 0; i < SlotPositions.Length; i++) { - if (!HideSlot(i)) continue; + if (!HideSlot(i)) { continue; } + if (SlotTypes[i] == InvSlotType.RightHand || SlotTypes[i] == InvSlotType.LeftHand) { continue; } x -= visualSlots[i].Rect.Width + Spacing; SlotPositions[i] = new Vector2(x, GameMain.GraphicsHeight - bottomOffset); } @@ -404,7 +414,8 @@ namespace Barotrauma for (int i = 0; i < SlotPositions.Length; i++) { - if (HideSlot(i)) continue; + if (HideSlot(i)) { continue; } + if (SlotTypes[i] == InvSlotType.RightHand || SlotTypes[i] == InvSlotType.LeftHand) { continue; } if (PersonalSlots.HasFlag(SlotTypes[i])) { SlotPositions[i] = new Vector2(personalSlotX, personalSlotY); @@ -416,9 +427,16 @@ namespace Barotrauma x += visualSlots[i].Rect.Width + Spacing; } } + int handSlotX = x - visualSlots[0].Rect.Width - Spacing; for (int i = 0; i < SlotPositions.Length; i++) { - if (!HideSlot(i)) continue; + if (SlotTypes[i] == InvSlotType.RightHand || SlotTypes[i] == InvSlotType.LeftHand) + { + bool rightSlot = SlotTypes[i] == InvSlotType.RightHand; + SlotPositions[i] = new Vector2(rightSlot ? handSlotX : handSlotX - visualSlots[0].Rect.Width - Spacing, personalSlotY); + continue; + } + if (!HideSlot(i)) { continue; } SlotPositions[i] = new Vector2(x, GameMain.GraphicsHeight - bottomOffset); x += visualSlots[i].Rect.Width + Spacing; } diff --git a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Holdable/RangedWeapon.cs b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Holdable/RangedWeapon.cs index ebe4c63e5..08ffe00cf 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Holdable/RangedWeapon.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Holdable/RangedWeapon.cs @@ -7,6 +7,7 @@ using System.Collections.Generic; using Barotrauma.IO; using System.Text; using System.Xml.Linq; +using Barotrauma.Sounds; namespace Barotrauma.Items.Components { @@ -18,7 +19,11 @@ namespace Barotrauma.Items.Components protected float currentCrossHairScale, currentCrossHairPointerScale; + private RoundSound chargeSound; + private SoundChannel chargeSoundChannel; + private readonly List particleEmitters = new List(); + private readonly List particleEmitterCharges = new List(); [Serialize(1.0f, false, description: "The scale of the crosshair sprite (if there is one).")] public float CrossHairScale @@ -48,6 +53,12 @@ namespace Barotrauma.Items.Components case "particleemitter": particleEmitters.Add(new ParticleEmitter(subElement)); break; + case "particleemittercharge": + particleEmitterCharges.Add(new ParticleEmitter(subElement)); + break; + case "chargesound": + chargeSound = Submarine.LoadRoundSound(subElement, false); + break; } } } @@ -84,6 +95,51 @@ namespace Barotrauma.Items.Components crosshairPointerPos = PlayerInput.MousePosition; } + partial void UpdateProjSpecific(float deltaTime) + { + float chargeRatio = currentChargeTime / MaxChargeTime; + + switch (currentChargingState) + { + case ChargingState.WindingUp: + case ChargingState.WindingDown: + Vector2 particlePos = item.WorldPosition + ConvertUnits.ToDisplayUnits(TransformedBarrelPos); + float sizeMultiplier = Math.Clamp(chargeRatio, 0.1f, 1f); + foreach (ParticleEmitter emitter in particleEmitterCharges) + { + emitter.Emit(deltaTime, particlePos, hullGuess: null, sizeMultiplier: sizeMultiplier, colorMultiplier: emitter.Prefab.Properties.ColorMultiplier); + } + + if (chargeSoundChannel == null || !chargeSoundChannel.IsPlaying) + { + if (chargeSound != null) + { + chargeSoundChannel = SoundPlayer.PlaySound(chargeSound.Sound, item.WorldPosition, chargeSound.Volume, chargeSound.Range, ignoreMuffling: chargeSound.IgnoreMuffling); + if (chargeSoundChannel != null) chargeSoundChannel.Looping = true; + } + } + else if (chargeSoundChannel != null) + { + chargeSoundChannel.FrequencyMultiplier = MathHelper.Lerp(0.5f, 1.5f, chargeRatio); + } + break; + default: + if (chargeSoundChannel != null) + { + if (chargeSoundChannel.IsPlaying) + { + chargeSoundChannel.FadeOutAndDispose(); + chargeSoundChannel.Looping = false; + } + else + { + chargeSoundChannel = null; + } + } + break; + } + } + public override void DrawHUD(SpriteBatch spriteBatch, Character character) { if (character == null || !character.IsKeyDown(InputType.Aim)) { return; } @@ -92,7 +148,7 @@ namespace Barotrauma.Items.Components if (character.ViewTarget != null && (character.ViewTarget is Item item) && item.Prefab.FocusOnSelected) { return; } GUI.HideCursor = (crosshairSprite != null || crosshairPointerSprite != null) && - GUI.MouseOn == null && !Inventory.IsMouseOnInventory() && !GameMain.Instance.Paused; + GUI.MouseOn == null && !Inventory.IsMouseOnInventory && !GameMain.Instance.Paused; if (GUI.HideCursor) { crosshairSprite?.Draw(spriteBatch, crosshairPos, Color.White, 0, currentCrossHairScale); diff --git a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/ItemComponent.cs b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/ItemComponent.cs index cc6ef2654..faaa76c27 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/ItemComponent.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/ItemComponent.cs @@ -246,6 +246,7 @@ namespace Barotrauma.Items.Components public void PlaySound(ActionType type, Character user = null) { if (!hasSoundsOfType[(int)type]) { return; } + if (GameMain.Client?.MidRoundSyncing ?? false) { return; } if (loopingSound != null) { @@ -429,7 +430,7 @@ namespace Barotrauma.Items.Components } foreach (ItemComponent component in item.Components) { - if (component.name.ToLower() == LinkUIToComponent.ToLower()) + if (component.name.Equals(LinkUIToComponent, StringComparison.OrdinalIgnoreCase)) { linkToUIComponent = component; } diff --git a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Deconstructor.cs b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Deconstructor.cs index 711376751..24149ae69 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Deconstructor.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Deconstructor.cs @@ -126,7 +126,8 @@ namespace Barotrauma.Items.Components private void DrawOverLay(SpriteBatch spriteBatch, GUICustomComponent overlayComponent) { overlayComponent.RectTransform.SetAsLastChild(); - var lastSlot = inputContainer.Inventory.visualSlots.Last(); + if (!(inputContainer?.Inventory?.visualSlots is { } visualSlots)) { return; } + var lastSlot = visualSlots.Last(); GUI.DrawRectangle(spriteBatch, new Rectangle( diff --git a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Fabricator.cs b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Fabricator.cs index e63a0fb84..f85f13a2a 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Fabricator.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Fabricator.cs @@ -255,12 +255,15 @@ namespace Barotrauma.Items.Components var item1 = c1.GUIComponent.UserData as FabricationRecipe; var item2 = c2.GUIComponent.UserData as FabricationRecipe; - bool hasSkills1 = FabricationDegreeOfSuccess(character, item1.RequiredSkills) >= 0.5f; - bool hasSkills2 = FabricationDegreeOfSuccess(character, item2.RequiredSkills) >= 0.5f; + int itemPlacement1 = FabricationDegreeOfSuccess(character, item1.RequiredSkills) >= 0.5f ? 0 : -1; + int itemPlacement2 = FabricationDegreeOfSuccess(character, item2.RequiredSkills) >= 0.5f ? 0 : -1; - if (hasSkills1 != hasSkills2) + itemPlacement1 += item1.RequiresRecipe && !character.HasRecipeForItem(item1.TargetItem.Identifier) ? -2 : 0; + itemPlacement2 += item2.RequiresRecipe && !character.HasRecipeForItem(item2.TargetItem.Identifier) ? -2 : 0; + + if (itemPlacement1 != itemPlacement2) { - return hasSkills1 ? -1 : 1; + return itemPlacement1 > itemPlacement2 ? -1 : 1; } return string.Compare(item1.DisplayName, item2.DisplayName); @@ -285,6 +288,18 @@ namespace Barotrauma.Items.Components { insufficientSkillsText.RectTransform.RepositionChildInHierarchy(itemList.Content.RectTransform.GetChildIndex(firstinSufficient.RectTransform)); } + + var requiresRecipeText = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.15f), itemList.Content.RectTransform), + TextManager.Get("fabricatorrequiresrecipe", returnNull: true) ?? "Requires recipe to fabricate", textColor: Color.Red, font: GUI.SubHeadingFont) + { + AutoScaleHorizontal = true, + CanBeFocused = false + }; + var firstRequiresRecipe = itemList.Content.Children.FirstOrDefault(c => c.UserData is FabricationRecipe fabricableItem && (fabricableItem.RequiresRecipe && !character.HasRecipeForItem(fabricableItem.TargetItem.Identifier))); + if (firstRequiresRecipe != null) + { + requiresRecipeText.RectTransform.RepositionChildInHierarchy(itemList.Content.RectTransform.GetChildIndex(firstRequiresRecipe.RectTransform)); + } } private void DrawInputOverLay(SpriteBatch spriteBatch, GUICustomComponent overlayComponent) @@ -297,6 +312,7 @@ namespace Barotrauma.Items.Components int slotIndex = 0; var missingItems = new List(); + foreach (FabricationRecipe.RequiredItem requiredItem in targetItem.RequiredItems) { for (int i = 0; i < requiredItem.Amount; i++) @@ -308,6 +324,8 @@ namespace Barotrauma.Items.Components { missingItems.Remove(missingItems.FirstOrDefault(mi => mi.ItemPrefabs.Contains(item.prefab))); } + var missingCounts = missingItems.GroupBy(missingItem => missingItem).ToDictionary(x => x.Key, x => x.Count()); + missingItems = missingItems.Distinct().ToList(); var availableIngredients = GetAvailableIngredients(); @@ -318,30 +336,30 @@ namespace Barotrauma.Items.Components slotIndex++; } - //highlight suitable ingredients in linked inventories - foreach (Item item in availableIngredients) - { - if (item.ParentInventory != inputContainer.Inventory && IsItemValidIngredient(item, requiredItem)) - { - int availableSlotIndex = item.ParentInventory.FindIndex(item); - //slots are null if the inventory has never been displayed - //(linked item, but the UI is not set to be displayed at the same time) - if (item.ParentInventory.visualSlots != null) - { - if (item.ParentInventory.visualSlots[availableSlotIndex].HighlightTimer <= 0.0f) - { - item.ParentInventory.visualSlots[availableSlotIndex].ShowBorderHighlight(GUI.Style.Green, 0.5f, 0.5f, 0.2f); - if (slotIndex < inputContainer.Capacity) + requiredItem.ItemPrefabs + .Where(requiredPrefab => availableIngredients.ContainsKey(requiredPrefab.Identifier)) + .ForEach(requiredPrefab => { + var availablePrefabs = availableIngredients[requiredPrefab.Identifier]; + + availablePrefabs + .Where(availablePrefab => availablePrefab.ParentInventory != inputContainer.Inventory) + .Where(availablePrefab => availablePrefab.ParentInventory.visualSlots != null) //slots are null if the inventory has never been displayed + .ForEach(availablePrefab => { //(linked item, but the UI is not set to be displayed at the same time) + int availableSlotIndex = availablePrefab.ParentInventory.FindIndex(availablePrefab); + + if (availablePrefab.ParentInventory.visualSlots[availableSlotIndex].HighlightTimer <= 0.0f) { - inputContainer.Inventory.visualSlots[slotIndex].ShowBorderHighlight(GUI.Style.Green, 0.5f, 0.5f, 0.2f); + availablePrefab.ParentInventory.visualSlots[availableSlotIndex].ShowBorderHighlight(GUI.Style.Green, 0.5f, 0.5f, 0.2f); + if (slotIndex < inputContainer.Capacity) + { + inputContainer.Inventory.visualSlots[slotIndex].ShowBorderHighlight(GUI.Style.Green, 0.5f, 0.5f, 0.2f); + } } - } - } - } - } + }); + }); if (slotIndex >= inputContainer.Capacity) { break; } - + var itemIcon = requiredItem.ItemPrefabs.First().InventoryIcon ?? requiredItem.ItemPrefabs.First().sprite; Rectangle slotRect = inputContainer.Inventory.visualSlots[slotIndex].Rect; itemIcon.Draw( @@ -350,6 +368,16 @@ namespace Barotrauma.Items.Components color: requiredItem.ItemPrefabs.First().InventoryIconColor * 0.3f, scale: Math.Min(slotRect.Width / itemIcon.size.X, slotRect.Height / itemIcon.size.Y)); + + if (missingCounts[requiredItem] > 1) + { + Vector2 stackCountPos = new Vector2(slotRect.Right, slotRect.Bottom); + string stackCountText = "x" + missingCounts[requiredItem]; + stackCountPos -= GUI.SmallFont.MeasureString(stackCountText) + new Vector2(4, 2); + GUI.SmallFont.DrawString(spriteBatch, stackCountText, stackCountPos + Vector2.One, Color.Black); + GUI.SmallFont.DrawString(spriteBatch, stackCountText, stackCountPos, Color.White); + } + if (requiredItem.UseCondition && requiredItem.MinCondition < 1.0f) { GUI.DrawRectangle(spriteBatch, new Rectangle(slotRect.X, slotRect.Bottom - 8, slotRect.Width, 8), Color.Black * 0.8f, true); @@ -601,7 +629,7 @@ namespace Barotrauma.Items.Components var itemPrefab = child.UserData as FabricationRecipe; if (itemPrefab == null) continue; - bool canBeFabricated = CanBeFabricated(itemPrefab, availableIngredients); + bool canBeFabricated = CanBeFabricated(itemPrefab, availableIngredients, character); if (itemPrefab == selectedItem) { activateButton.Enabled = canBeFabricated; diff --git a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/MiniMap.cs b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/MiniMap.cs index 0ec56396d..0e9e7b897 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/MiniMap.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/MiniMap.cs @@ -1,63 +1,379 @@ -using Barotrauma.Extensions; -using FarseerPhysics; +#nullable enable +using Barotrauma.Extensions; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using System; using System.Collections.Generic; +using System.Collections.Immutable; using System.Linq; -using System.Xml.Linq; +using Microsoft.Xna.Framework.Input; namespace Barotrauma.Items.Components { + internal readonly struct MiniMapGUIComponent + { + public readonly GUIComponent Component; + public readonly GUIComponent BorderComponent; + + public MiniMapGUIComponent(GUIComponent component) + { + Component = component; + BorderComponent = component; + } + + public MiniMapGUIComponent(GUIComponent frame, GUIComponent linkedHullComponent) + { + Component = frame; + BorderComponent = linkedHullComponent; + } + + public void Deconstruct(out GUIComponent component, out GUIComponent borderComponent) + { + component = Component; + borderComponent = BorderComponent; + } + } + + internal readonly struct MiniMapSprite + { + public readonly Sprite Sprite; + public readonly Color Color; + + public MiniMapSprite(JobPrefab prefab) + { + Sprite = prefab.IconSmall; + Color = prefab.UIColor; + } + + public MiniMapSprite(Order order) + { + Sprite = order.SymbolSprite; + Color = order.Color; + } + } + + internal readonly struct MiniMapHullData + { + public readonly List> Polygon; + public readonly (RectangleF Rect, Hull Hull)[] RectDatas; + public readonly RectangleF Bounds; + public readonly Point ParentSize; + + public MiniMapHullData(List> polygon, RectangleF bounds, Point parentSize, ImmutableArray rects, ImmutableArray hulls) + { + ParentSize = parentSize; + Bounds = bounds; + Polygon = polygon; + int count = Math.Min(rects.Length, hulls.Length); + RectDatas = new (RectangleF Rect, Hull Hull)[count]; + for (int i = 0; i < count; i++) + { + RectDatas[i] = (rects[i], hulls[i]); + } + } + } + + internal enum MiniMapMode + { + None, + HullStatus, + ElectricalView, + HullCondition, + ItemFinder + } + + internal readonly struct RelativeEntityRect + { + public readonly Vector2 RelativePosition; + public readonly Vector2 RelativeSize; + + public RelativeEntityRect(RectangleF worldBorders, RectangleF entityRect) + { + RelativePosition = new Vector2((entityRect.X - worldBorders.X) / worldBorders.Width, (worldBorders.Y - entityRect.Y) / worldBorders.Height); + RelativeSize = new Vector2(entityRect.Width / worldBorders.Width, entityRect.Height / worldBorders.Height); + } + + public Vector2 PositionRelativeTo(RectangleF frame, bool skipOffset = false) + { + if (skipOffset) + { + return RelativePosition * frame.Size; + } + + return frame.Location + RelativePosition * frame.Size; + } + + public Vector2 SizeRelativeTo(RectangleF frame) + { + return RelativeSize * frame.Size; + } + + public RectangleF RectangleRelativeTo(RectangleF frame, bool skipOffset = false) + { + return new RectangleF(PositionRelativeTo(frame, skipOffset), SizeRelativeTo(frame)); + } + + public void Deconstruct(out float posX, out float posY, out float sizeX, out float sizeY) + { + posX = RelativePosition.X; + posY = RelativePosition.Y; + sizeX = RelativeSize.X; + sizeY = RelativeSize.Y; + } + } + + internal readonly struct MiniMapSettings + { + public static MiniMapSettings Default = new MiniMapSettings + ( + ignoreOutposts: false, + createHullElements: true, + elementColor: MiniMap.MiniMapBaseColor + ); + + public readonly bool IgnoreOutposts; + public readonly bool CreateHullElements; + public readonly Color ElementColor; + + public MiniMapSettings(bool ignoreOutposts = false, bool createHullElements = false, Color? elementColor = null) + { + IgnoreOutposts = ignoreOutposts; + CreateHullElements = createHullElements; + ElementColor = elementColor ?? MiniMap.MiniMapBaseColor; + } + } + partial class MiniMap : Powered { private GUIFrame submarineContainer; private GUIFrame hullInfoFrame; + private GUIScissorComponent scissorComponent; + private GUIComponent miniMapContainer; + private GUIComponent miniMapFrame; + private GUIComponent electricalFrame; + private GUILayoutGroup reportFrame; + private GUILayoutGroup searchBarFrame; + private GUITextBox searchBar; + private GUIComponent searchAutoComplete; - private GUITextBlock hullNameText, hullBreachText, hullAirQualityText, hullWaterText; + private ItemPrefab? searchedPrefab; - private string noPowerTip = ""; + private GUITextBlock tooltipHeader, tooltipFirstLine, tooltipSecondLine, tooltipThirdLine; + + private string noPowerTip = string.Empty; private readonly List displayedSubs = new List(); private Point prevResolution; + private float cardRefreshTimer; + private const float cardRefreshDelay = 3f; - partial void InitProjSpecific(XElement element) + private readonly HashSet cardsToDraw = new HashSet(); + + private List subEntities = new List(); + + private Texture2D? submarinePreview; + + private MiniMapMode currentMode; + private ImmutableArray modeSwitchButtons; + + private Point elementSize; + + private ImmutableDictionary hullStatusComponents; + private ImmutableDictionary electricalMapComponents; + private ImmutableDictionary electricalChildren; + + private ImmutableHashSet itemsFoundOnSub; + + private ImmutableHashSet? MiniMapBlips; + private float blipState; + private const float maxBlipState = 1f; + + private const float maxZoom = 2f, + minZoom = 0.5f, + defaultZoom = 1f; + + private float zoom = defaultZoom; + + private float Zoom { + get => zoom; + set => zoom = Math.Clamp(value, minZoom, maxZoom); + } + + private Vector2 mapOffset = Vector2.Zero; + private bool dragMap; + private Vector2? dragMapStart; + private const int dragTreshold = 8; + + private bool recalculate; + + public static readonly Color MiniMapBaseColor = Color.DarkCyan; + + private static readonly Color WetHullColor = new Color(9, 80, 159), + DefaultNeutralColor = MiniMapBaseColor * 0.8f, + HoverColor = Color.White, + BlueprintBlue = new Color(48, 87, 255), + HullWaterColor = new Color(85, 136, 147), + HullWaterLineColor = Color.LightBlue, + NoPowerColor = MiniMapBaseColor * 0.1f, + ElectricalBaseColor = GUI.Style.Orange, + NoPowerElectricalColor = ElectricalBaseColor * 0.1f; + + partial void InitProjSpecific() + { + SetDefaultMode(); + noPowerTip = TextManager.Get("SteeringNoPowerTip"); CreateGUI(); } + private void SetDefaultMode() + { + currentMode = true switch + { + true when EnableHullStatus => MiniMapMode.HullStatus, + true when EnableElectricalView => MiniMapMode.ElectricalView, + true when EnableHullCondition => MiniMapMode.HullCondition, + true when EnableItemFinder => MiniMapMode.ItemFinder, + _ => MiniMapMode.None + }; + } + protected override void CreateGUI() { GuiFrame.RectTransform.RelativeOffset = new Vector2(0.05f, 0.0f); GuiFrame.CanBeFocused = true; - new GUICustomComponent(new RectTransform(GuiFrame.Rect.Size - GUIStyle.ItemFrameMargin, GuiFrame.RectTransform, Anchor.Center) { AbsoluteOffset = GUIStyle.ItemFrameOffset }, - DrawHUDBack, null); - submarineContainer = new GUIFrame(new RectTransform(new Vector2(0.95f, 0.9f), GuiFrame.RectTransform, Anchor.Center), style: null); + new GUICustomComponent(new RectTransform(GuiFrame.Rect.Size - GUIStyle.ItemFrameMargin, GuiFrame.RectTransform, Anchor.Center) { AbsoluteOffset = GUIStyle.ItemFrameOffset }, DrawHUDBack, null); + GUIFrame paddedContainer = new GUIFrame(new RectTransform(new Vector2(0.95f, 0.9f), GuiFrame.RectTransform, Anchor.Center), style: null); + submarineContainer = new GUIFrame(new RectTransform(Vector2.One, paddedContainer.RectTransform, Anchor.Center), style: null); - new GUICustomComponent(new RectTransform(GuiFrame.Rect.Size - GUIStyle.ItemFrameMargin, GuiFrame.RectTransform, Anchor.Center) { AbsoluteOffset = GUIStyle.ItemFrameOffset }, - DrawHUDFront, null) + new GUICustomComponent(new RectTransform(GuiFrame.Rect.Size - GUIStyle.ItemFrameMargin, GuiFrame.RectTransform, Anchor.Center) { AbsoluteOffset = GUIStyle.ItemFrameOffset }, DrawHUDFront, null) { CanBeFocused = false }; - hullInfoFrame = new GUIFrame(new RectTransform(new Vector2(0.13f, 0.13f), GUI.Canvas, minSize: new Point(250, 150)), - style: "GUIToolTip") + GUILayoutGroup buttonLayout = new GUILayoutGroup(new RectTransform(new Vector2(0.5f, 0.2f), paddedContainer.RectTransform), isHorizontal: true); + + modeSwitchButtons = ImmutableArray.Create + ( + new GUIButton(new RectTransform(new Vector2(0.25f, 0.5f), buttonLayout.RectTransform), string.Empty, style: "StatusMonitorButton.HullStatus") { UserData = MiniMapMode.HullStatus, Enabled = EnableHullStatus, ToolTip = TextManager.Get("StatusMonitorButton.HullStatus.Tooltip") }, + new GUIButton(new RectTransform(new Vector2(0.25f, 0.5f), buttonLayout.RectTransform), string.Empty, style: "StatusMonitorButton.ElectricalView") { UserData = MiniMapMode.ElectricalView, Enabled = EnableHullCondition, ToolTip = TextManager.Get("StatusMonitorButton.ElectricalView.Tooltip") }, + new GUIButton(new RectTransform(new Vector2(0.25f, 0.5f), buttonLayout.RectTransform), string.Empty, style: "StatusMonitorButton.HullCondition") { UserData = MiniMapMode.HullCondition, Enabled = EnableHullCondition, ToolTip = TextManager.Get("StatusMonitorButton.HullCondition.Tooltip") }, + new GUIButton(new RectTransform(new Vector2(0.25f, 0.5f), buttonLayout.RectTransform), string.Empty, style: "StatusMonitorButton.ItemFinder") { UserData = MiniMapMode.ItemFinder, Enabled = EnableItemFinder, ToolTip = TextManager.Get("StatusMonitorButton.ItemFinder.Tooltip") } + ); + + foreach (GUIButton button in modeSwitchButtons) + { + button.OnClicked = (btn, o) => + { + if (!(o is MiniMapMode m)) { return false; } + + currentMode = m; + Zoom = defaultZoom; + mapOffset = Vector2.Zero; + recalculate = true; + + foreach (GUIButton otherButton in modeSwitchButtons) + { + otherButton.Selected = false; + } + + btn.Selected = true; + return true; + }; + + if (button.UserData is MiniMapMode buttonMode) + { + button.Selected = currentMode == buttonMode; + } + } + + List reports = Order.PrefabList.FindAll(o => o.IsReport && o.SymbolSprite != null && !o.Hidden); + + GUIFrame bottomFrame = new GUIFrame(new RectTransform(new Vector2(0.5f, 0.15f), paddedContainer.RectTransform, Anchor.BottomCenter), style: null) { CanBeFocused = false }; + + reportFrame = new GUILayoutGroup(new RectTransform(new Vector2(1), bottomFrame.RectTransform), isHorizontal: true) + { + AbsoluteSpacing = (int)(5 * GUI.Scale) + }; + + if (reports.Any()) + { + CrewManager.CreateReports(GameMain.GameSession?.CrewManager, reportFrame, reports, true); + } + + searchBarFrame = new GUILayoutGroup(new RectTransform(new Vector2(1), bottomFrame.RectTransform), isHorizontal: true, childAnchor: Anchor.Center); + searchBar = new GUITextBox(new RectTransform(new Vector2(1), searchBarFrame.RectTransform), string.Empty, createClearButton: true, createPenIcon: true) + { + OnEnterPressed = (box, text) => + { + SearchItems(text); + return true; + } + }; + + searchAutoComplete = new GUIFrame(new RectTransform(Vector2.One, GUI.Canvas), style: "GUIToolTip") + { + Visible = false, + CanBeFocused = false + }; + + SetTooltipPosition(searchAutoComplete, searchBar); + + GUIListBox listBox = new GUIListBox(new RectTransform(Vector2.One, searchAutoComplete.RectTransform)) + { + OnSelected = (component, o) => + { + if (o is ItemPrefab prefab) + { + searchedPrefab = prefab; + searchBar.TextBlock.Text = prefab.Name; + searchBar.Deselect(); + SearchItems(searchBar.Text); + } + return true; + } + }; + + foreach (ItemPrefab prefab in ItemPrefab.Prefabs.OrderBy(prefab => prefab.Name)) + { + CreateItemFrame(prefab, listBox.Content.RectTransform); + } + + searchBar.OnDeselected += (sender, key) => + { + searchAutoComplete.Visible = false; + }; + + searchBar.OnSelected += (sender, key) => + { + itemsFoundOnSub = Item.ItemList.Where(it => it.Submarine == item.Submarine && !it.NonInteractable && !it.HiddenInGame && it.Components.OfType().Any()).Select(it => it.Prefab).ToImmutableHashSet(); + }; + + searchBar.OnKeyHit += ControlSearchTooltip; + searchBar.OnTextChanged += UpdateSearchTooltip; + + hullInfoFrame = new GUIFrame(new RectTransform(new Vector2(0.13f, 0.13f), GUI.Canvas, minSize: new Point(250, 150)), style: "GUIToolTip") + { + CanBeFocused = false + + }; + var hullInfoContainer = new GUILayoutGroup(new RectTransform(new Vector2(0.9f, 0.9f), hullInfoFrame.RectTransform, Anchor.Center)) { Stretch = true, RelativeSpacing = 0.05f }; - hullNameText = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.4f), hullInfoContainer.RectTransform), "") { Wrap = true }; - hullBreachText = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.3f), hullInfoContainer.RectTransform), "") { Wrap = true }; - hullAirQualityText = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.3f), hullInfoContainer.RectTransform), "") { Wrap = true }; - hullWaterText = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.3f), hullInfoContainer.RectTransform), "") { Wrap = true }; + tooltipHeader = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.4f), hullInfoContainer.RectTransform), string.Empty) { Wrap = true }; + tooltipFirstLine = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.3f), hullInfoContainer.RectTransform), string.Empty) { Wrap = true }; + tooltipSecondLine = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.3f), hullInfoContainer.RectTransform), string.Empty) { Wrap = true }; + tooltipThirdLine = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.3f), hullInfoContainer.RectTransform), string.Empty) { Wrap = true }; hullInfoFrame.Children.ForEach(c => { @@ -70,34 +386,141 @@ namespace Barotrauma.Items.Components { base.AddToGUIUpdateList(); hullInfoFrame.AddToGUIUpdateList(order: 1); + if (currentMode == MiniMapMode.ItemFinder && searchBar.Selected) + { + searchAutoComplete.AddToGUIUpdateList(order: 1); + } } private void CreateHUD() { + subEntities.Clear(); prevResolution = new Point(GameMain.GraphicsWidth, GameMain.GraphicsHeight); - submarineContainer?.ClearChildren(); + submarineContainer.ClearChildren(); - if (item.Submarine == null) { return; } + if (item.Submarine is null) { return; } + + scissorComponent = new GUIScissorComponent(new RectTransform(Vector2.One, submarineContainer.RectTransform, Anchor.Center)); + miniMapContainer = new GUIFrame(new RectTransform(Vector2.One, scissorComponent.Content.RectTransform, Anchor.Center), style: null) { CanBeFocused = false }; + + miniMapFrame = CreateMiniMap(item.Submarine, miniMapContainer, MiniMapSettings.Default, null, out hullStatusComponents); + + IEnumerable pointsOfInterest = Item.ItemList.Where(it => it.Submarine == item.Submarine && !it.HiddenInGame && !it.NonInteractable && it.GetComponent() != null); + electricalFrame = CreateMiniMap(item.Submarine, miniMapContainer, new MiniMapSettings(createHullElements: false), pointsOfInterest, out electricalMapComponents); + + Dictionary electricChildren = new Dictionary(); + + foreach (var (entity, component) in electricalMapComponents) + { + GUIComponent parent = component.Component; + if (!(entity is Item it )) { continue; } + Sprite? sprite = it.Prefab.UpgradePreviewSprite; + if (sprite is null) { continue; } + + GUIImage child = new GUIImage(new RectTransform(Vector2.One, parent.RectTransform, Anchor.Center), sprite) + { + OutlineColor = ElectricalBaseColor, + Color = ElectricalBaseColor, + HoverCursor = CursorState.Hand, + SpriteEffects = item.Rotation > 90.0f && item.Rotation < 270.0f ? SpriteEffects.FlipVertically : SpriteEffects.None + }; + + electricChildren.Add(component, child); + } + + electricalChildren = electricChildren.ToImmutableDictionary(); + + Rectangle parentRect = miniMapFrame.Rect; - item.Submarine.CreateMiniMap(submarineContainer); displayedSubs.Clear(); displayedSubs.Add(item.Submarine); displayedSubs.AddRange(item.Submarine.DockedTo); + + subEntities = MapEntity.mapEntityList.Where(me => me.Submarine == item.Submarine && !me.HiddenInGame).OrderByDescending(w => w.SpriteDepth).ToList(); + + BakeSubmarine(item.Submarine, parentRect); + elementSize = GuiFrame.Rect.Size; } public override void UpdateHUD(Character character, float deltaTime, Camera cam) { //recreate HUD if the subs we should display have changed - if ((item.Submarine == null && displayedSubs.Count > 0) || //item not inside a sub anymore, but display is still showing subs - !displayedSubs.Contains(item.Submarine) || //current sub not displayer - prevResolution.X != GameMain.GraphicsWidth || prevResolution.Y != GameMain.GraphicsHeight || //resolution changed - item.Submarine.DockedTo.Any(s => !displayedSubs.Contains(s)) || //some of the docked subs not diplayed - !submarineContainer.Children.Any() || // We lack a GUI - displayedSubs.Any(s => s != item.Submarine && !item.Submarine.DockedTo.Contains(s))) //displaying a sub that shouldn't be displayed + if (item.Submarine == null && displayedSubs.Count > 0 || // item not inside a sub anymore, but display is still showing subs + item.Submarine is { } itemSub && + ( + !displayedSubs.Contains(itemSub) || // current sub not displayed + itemSub.DockedTo.Any(s => !displayedSubs.Contains(s)) || // some of the docked subs not displayed + displayedSubs.Any(s => s != itemSub && !itemSub.DockedTo.Contains(s)) // displaying a sub that shouldn't be displayed + ) || + prevResolution.X != GameMain.GraphicsWidth || prevResolution.Y != GameMain.GraphicsHeight || // resolution changed + !submarineContainer.Children.Any()) // We lack a GUI { CreateHUD(); } - + + if (PlayerInput.PrimaryMouseButtonDown()) + { + if (GUI.MouseOn == scissorComponent || scissorComponent.IsParentOf(GUI.MouseOn)) + { + dragMapStart = PlayerInput.MousePosition; + } + } + + float newZoom = Zoom; + + if (Math.Abs(PlayerInput.ScrollWheelSpeed) > 0 && (GUI.MouseOn == scissorComponent || scissorComponent.IsParentOf(GUI.MouseOn))) + { + newZoom = Math.Clamp(Zoom + PlayerInput.ScrollWheelSpeed / 1000.0f * Zoom, minZoom, maxZoom); + float distanceScale = newZoom / Zoom; + mapOffset *= distanceScale; + } + + recalculate |= !MathUtils.NearlyEqual(Zoom, newZoom); + Zoom = newZoom; + + Vector2 elementScale = new Vector2(Zoom); + + if (dragMapStart is { } dragStart) + { + if (dragMap || Vector2.DistanceSquared(dragStart, PlayerInput.MousePosition) > GUI.IntScale(dragTreshold * dragTreshold)) + { + mapOffset.X += PlayerInput.MouseSpeed.X; + mapOffset.Y += PlayerInput.MouseSpeed.Y; + + recalculate |= PlayerInput.MouseSpeed != Vector2.Zero; + dragMap = true; + } + } + + var (maxWidth, maxHeight) = miniMapContainer.Rect.Size.ToVector2() / 2f / Zoom; + + mapOffset.X = Math.Clamp(mapOffset.X, -maxWidth, maxWidth); + mapOffset.Y = Math.Clamp(mapOffset.Y, -maxHeight, maxHeight); + + if (!PlayerInput.PrimaryMouseButtonHeld()) + { + dragMapStart = null; + dragMap = false; + } + + if (recalculate) + { + miniMapContainer.RectTransform.LocalScale = elementScale; + miniMapContainer.RectTransform.RecalculateChildren(true, true); + miniMapContainer.RectTransform.AbsoluteOffset = mapOffset.ToPoint(); + recalculate = false; + } + + // is there a better way to do this? + if (GuiFrame.Rect.Size != elementSize) + { + if (item.Submarine is { } sub) + { + BakeSubmarine(sub, miniMapFrame.Rect); + } + elementSize = GuiFrame.Rect.Size; + } + float distort = 1.0f - item.Condition / item.MaxCondition; foreach (HullData hullData in hullDatas.Values) { @@ -107,223 +530,717 @@ namespace Barotrauma.Items.Components hullData.Distort = Rand.Range(0.0f, 1.0f) < distort * distort; if (hullData.Distort) { - hullData.Oxygen = Rand.Range(0.0f, 100.0f); - hullData.Water = Rand.Range(0.0f, 1.0f); + hullData.ReceivedOxygenAmount = Rand.Range(0.0f, 100.0f); + hullData.ReceivedWaterAmount = Rand.Range(0.0f, 1.0f); } hullData.DistortionTimer = Rand.Range(1.0f, 10.0f); } } + + UpdateHUDBack(); + + if (blipState > maxBlipState) + { + blipState = 0; + } + + blipState += deltaTime; + + if (currentMode == MiniMapMode.HullStatus && !EnableHullStatus || + currentMode == MiniMapMode.ElectricalView && !EnableElectricalView || + currentMode == MiniMapMode.HullCondition && !EnableHullCondition || + currentMode == MiniMapMode.ItemFinder && !EnableItemFinder) + { + SetDefaultMode(); + } + + modeSwitchButtons[0].Enabled = EnableHullStatus; + modeSwitchButtons[1].Enabled = EnableElectricalView; + modeSwitchButtons[2].Enabled = EnableHullCondition; + modeSwitchButtons[3].Enabled = EnableItemFinder; + } + + private void UpdateIDCards(Submarine sub) + { + if (hullDatas is null) { return; } + + foreach (HullData data in hullDatas.Values) + { + data.Cards.Clear(); + } + + foreach (Item it in sub.GetItems(true)) + { + if (it is { CurrentHull: { } hull } && it.GetComponent() is { } idCard && idCard.TeamID == sub.TeamID) + { + if (!hullDatas.ContainsKey(hull)) { continue; } + + hullDatas[hull].Cards.Add(idCard); + } + } } private void DrawHUDFront(SpriteBatch spriteBatch, GUICustomComponent container) { + // TODO remove + if (currentMode == MiniMapMode.HullCondition) + { + const string wipText = "work in progress"; + Vector2 textSize = GUI.LargeFont.MeasureString(wipText); + Vector2 textPos = GuiFrame.Rect.Center.ToVector2(); + + GUI.DrawString(spriteBatch, textPos - textSize / 2, wipText.ToUpper(), GUI.Style.Orange, Color.Black * 0.8f, backgroundPadding: 8, font: GUI.LargeFont); + } + if (Voltage < MinVoltage) { Vector2 textSize = GUI.Font.MeasureString(noPowerTip); Vector2 textPos = GuiFrame.Rect.Center.ToVector2(); + Color noPowerColor = GUI.Style.Orange * (float)Math.Abs(Math.Sin(Timing.TotalTime)); - GUI.DrawString(spriteBatch, textPos - textSize / 2, noPowerTip, - GUI.Style.Orange * (float)Math.Abs(Math.Sin(Timing.TotalTime)), Color.Black * 0.8f, font: GUI.SubHeadingFont); + GUI.DrawString(spriteBatch, textPos - textSize / 2, noPowerTip, noPowerColor, Color.Black * 0.8f, font: GUI.SubHeadingFont); return; } - if (!submarineContainer.Children.Any()) { return; } - foreach (GUIComponent child in submarineContainer.Children.FirstOrDefault()?.Children) + + if (currentMode == MiniMapMode.HullStatus) { - if (child.UserData is Hull hull) + Rectangle prevScissorRect = spriteBatch.GraphicsDevice.ScissorRectangle; + spriteBatch.End(); + spriteBatch.Begin(SpriteSortMode.Deferred, samplerState: GUI.SamplerState, rasterizerState: GameMain.ScissorTestEnable); + spriteBatch.GraphicsDevice.ScissorRectangle = submarineContainer.Rect; + + foreach (var (entity, component) in hullStatusComponents) { - if (hull.Submarine == null || !hull.Submarine.Info.IsOutpost) { continue; } - string text = TextManager.GetWithVariable("MiniMapOutpostDockingInfo", "[outpost]", hull.Submarine.Info.Name); - Vector2 textSize = GUI.Font.MeasureString(text); - Vector2 textPos = child.Center; - if (textPos.X + textSize.X / 2 > submarineContainer.Rect.Right) - textPos.X -= ((textPos.X + textSize.X / 2) - submarineContainer.Rect.Right) + 10 * GUI.xScale; - if (textPos.X - textSize.X / 2 < submarineContainer.Rect.X) - textPos.X += (submarineContainer.Rect.X - (textPos.X - textSize.X / 2)) + 10 * GUI.xScale; - GUI.DrawString(spriteBatch, textPos - textSize / 2, text, - GUI.Style.Orange * (float)Math.Abs(Math.Sin(Timing.TotalTime)), Color.Black * 0.8f); - break; + if (!(entity is Hull hull)) { continue; } + if (!hullDatas.TryGetValue(hull, out HullData? hullData) || hullData is null) { continue; } + DrawHullCards(spriteBatch, hull, hullData, component.Component); } - } + + spriteBatch.End(); + spriteBatch.GraphicsDevice.ScissorRectangle = prevScissorRect; + spriteBatch.Begin(SpriteSortMode.Deferred, samplerState: GUI.SamplerState, rasterizerState: GameMain.ScissorTestEnable); + } } - private void DrawHUDBack(SpriteBatch spriteBatch, GUICustomComponent container) + private void ControlSearchTooltip(GUITextBox sender, Keys key) { - Hull mouseOnHull = null; - hullInfoFrame.Visible = false; + if (!searchAutoComplete.Visible) { return; } + GUIListBox listBox = searchAutoComplete.GetChild(); + if (listBox is null) { return; } - foreach (Hull hull in Hull.hullList) + if (key == Keys.Down) { - var hullFrame = submarineContainer.Children.FirstOrDefault()?.FindChild(hull); - if (hullFrame == null) { continue; } - - if (GUI.MouseOn == hullFrame || hullFrame.IsParentOf(GUI.MouseOn)) - { - mouseOnHull = hull; - } - if (item.Submarine == null || !hasPower) - { - hullFrame.Color = Color.DarkCyan * 0.3f; - hullFrame.Children.First().Color = Color.DarkCyan * 0.3f; - } + listBox.SelectNext(true, autoScroll: true); } - - if (Voltage < MinVoltage) + else if (key == Keys.Up) { - return; + listBox.SelectPrevious(true, autoScroll: true); } - - float scale = 1.0f; - HashSet subs = new HashSet(); - foreach (Hull hull in Hull.hullList) + else if (key == Keys.Enter) { - if (hull.Submarine == null) { continue; } - var hullFrame = submarineContainer.Children.FirstOrDefault()?.FindChild(hull); - if (hullFrame == null) { continue; } + listBox.OnSelected?.Invoke(listBox, listBox.SelectedData); + searchBar.Deselect(); + } + } - hullFrame.Visible = true; - if (!submarineContainer.Rect.Contains(hullFrame.Rect)) + private bool UpdateSearchTooltip(GUITextBox box, string text) + { + MiniMapBlips = null; + searchedPrefab = null; + searchAutoComplete.Visible = true; + SetTooltipPosition(searchAutoComplete, box); + + GUIListBox listBox = searchAutoComplete.GetChild(); + if (listBox is null) { return false; } + + bool first = true; + + int i = 0; + + foreach (GUIComponent component in listBox.Content.Children) + { + component.Visible = false; + if (component.UserData is ItemPrefab prefab && itemsFoundOnSub.Contains(prefab)) { - if (hull.Submarine.Info.Type != SubmarineType.Player) + component.Visible = prefab.Name.ToLower().Contains(text.ToLower()); + + if (component.Visible && first) { - hullFrame.Visible = false; - continue; + listBox.Select(i, force: true, autoScroll: false); + first = false; } } - hullDatas.TryGetValue(hull, out HullData hullData); - if (hullData == null) + i++; + } + + listBox.BarScroll = 0f; + listBox.RecalculateChildren(); + + return true; + } + + private void SetTooltipPosition(GUIComponent tooltip, GUITextBox box) + { + int height = GuiFrame.Rect.Height / 2; + tooltip.RectTransform.NonScaledSize = new Point(box.Rect.Width, height); + tooltip.RectTransform.ScreenSpaceOffset = new Point(box.Rect.X, box.Rect.Y - height); + } + + private void CreateItemFrame(ItemPrefab prefab, RectTransform parent) + { + Sprite sprite = prefab.InventoryIcon ?? prefab.sprite; + if (sprite is null) { return; } + GUIFrame frame = new GUIFrame(new RectTransform(new Vector2(1f, 0.25f), parent), style: "ListBoxElement") + { + UserData = prefab + }; + + GUILayoutGroup layout = new GUILayoutGroup(new RectTransform(Vector2.One, frame.RectTransform), isHorizontal: true); + new GUIImage(new RectTransform(Vector2.One, layout.RectTransform, scaleBasis: ScaleBasis.BothHeight), sprite) + { + Color = prefab.InventoryIconColor + }; + + new GUITextBlock(new RectTransform(Vector2.One, layout.RectTransform), prefab.Name, font: GUI.SubHeadingFont); + layout.UserData = prefab; + } + + private void SearchItems(string text) + { + if (searchedPrefab is null) + { + Console.WriteLine("Bruh"); + ItemPrefab? first = ItemPrefab.Prefabs.FirstOrDefault(p => p.Name.ToLower().Equals(text.ToLower())); + + if (first is null) + { + searchBar.Flash(GUI.Style.Red); + return; + } + searchedPrefab = first; + } + + if (item.Submarine is null) { return; } + + HashSet foundItems = new HashSet(); + + foreach (Item it in Item.ItemList) + { + if (it.Submarine != item.Submarine) { continue; } + if (it.HiddenInGame || it.NonInteractable) { continue; } + if (it.GetComponent() is { Connections: { } conn} && conn.Any()) { continue; } + if (it.HasTag("traitormissionitem")) { continue; } + + if (it.Prefab == searchedPrefab) + { + // ignore items on players and hidden inventories + if (it.FindParentInventory(inv => inv is CharacterInventory || inv is ItemInventory { Owner: Item { HiddenInGame: true }}) is { }) { continue; } + + if (it.FindParentInventory(inventory => inventory is ItemInventory { Owner: Item { ParentInventory: null } }) is ItemInventory parent) + { + foundItems.Add((Item) parent.Owner); + } + else + { + foundItems.Add(it); + } + } + } + + + RectangleF dockedBorders = item.Submarine.GetDockedBorders(); + dockedBorders.Location += item.Submarine.WorldPosition; + RectangleF parentRect = miniMapFrame.Rect; + + HashSet positions = new HashSet(); + foreach (Item foundItem in foundItems) + { + RelativeEntityRect scaledRect = new RelativeEntityRect(dockedBorders, foundItem.WorldRect); + Vector2 pos = (scaledRect.PositionRelativeTo(parentRect, skipOffset: true) + scaledRect.SizeRelativeTo(parentRect) / 2f) / Zoom; + positions.Add(pos); + } + + MiniMapBlips = positions.ToImmutableHashSet(); + + searchAutoComplete.Visible = false; + } + + private void UpdateHUDBack() + { + hullInfoFrame.Visible = false; + electricalFrame.Visible = false; + miniMapFrame.Visible = false; + reportFrame.Visible = false; + searchBarFrame.Visible = false; + + switch (currentMode) + { + case MiniMapMode.HullStatus: + UpdateHullStatus(); + miniMapFrame.Visible = true; + reportFrame.Visible = true; + break; + case MiniMapMode.ElectricalView: + UpdateElectricalView(); + electricalFrame.Visible = true; + break; + case MiniMapMode.ItemFinder: + searchBarFrame.Visible = true; + break; + } + } + + private void UpdateHullStatus() + { + foreach (var (entity, (component, borderComponent)) in hullStatusComponents) + { + if (item.Submarine == null || !hasPower) + { + component.Color = NoPowerColor; + borderComponent.OutlineColor = NoPowerColor; + } + + if (Voltage < MinVoltage) { continue; } + + if (!component.Visible) { continue; } + if (!(entity is Hull hull)) { continue; } + + if (!submarineContainer.Rect.Contains(component.Rect)) + { + if (hull.Submarine.Info.Type != SubmarineType.Player) + { + component.Visible = borderComponent.Visible = false; + continue; + } + } + + hullDatas.TryGetValue(hull, out HullData? hullData); + if (hullData is null) { hullData = new HullData(); GetLinkedHulls(hull, hullData.LinkedHulls); hullDatas.Add(hull, hullData); } - - Color neutralColor = Color.DarkCyan; + + Color neutralColor = DefaultNeutralColor; + Color borderColor = neutralColor; + Color componentColor; + if (hull.IsWetRoom) { - neutralColor = new Color(9, 80, 159); + neutralColor = WetHullColor; } if (hullData.Distort) { - hullFrame.Children.First().Color = Color.Lerp(Color.Black, Color.DarkGray * 0.5f, Rand.Range(0.0f, 1.0f)); - hullFrame.Color = neutralColor * 0.5f; + borderComponent.OutlineColor = neutralColor * 0.5f; + component.Color = Color.Lerp(Color.Black, Color.DarkGray * 0.5f, Rand.Range(0.0f, 1.0f)); continue; } - - subs.Add(hull.Submarine); - scale = Math.Min( - hullFrame.Parent.Rect.Width / (float)hull.Submarine.Borders.Width, - hullFrame.Parent.Rect.Height / (float)hull.Submarine.Borders.Height); - - Color borderColor = neutralColor; - - float? gapOpenSum = 0.0f; + + hullData.HullOxygenAmount = RequireOxygenDetectors ? hullData.ReceivedOxygenAmount : hull.OxygenPercentage; + hullData.HullWaterAmount = RequireWaterDetectors ? hullData.ReceivedWaterAmount : Math.Min(hull.WaterVolume / hull.Volume, 1.0f); + + float gapOpenSum = 0.0f; + if (ShowHullIntegrity) { - gapOpenSum = hull.ConnectedGaps.Where(g => !g.IsRoomToRoom).Sum(g => g.Open); - borderColor = Color.Lerp(neutralColor, GUI.Style.Red, Math.Min((float)gapOpenSum, 1.0f)); + float amount = 1f + hullData.LinkedHulls.Count; + gapOpenSum = hull.ConnectedGaps.Concat(hullData.LinkedHulls.SelectMany(h => h.ConnectedGaps)).Where(g => !g.IsRoomToRoom).Sum(g => g.Open) / amount; + borderColor = Color.Lerp(neutralColor, GUI.Style.Red, Math.Min(gapOpenSum, 1.0f)); } - float? oxygenAmount = null; - if (!RequireOxygenDetectors || hullData?.Oxygen != null) + bool isHoveringOver = GUI.MouseOn == component; + + // When drawing tooltip we are only interested in the component we are hovering over + if (isHoveringOver) { - oxygenAmount = RequireOxygenDetectors ? hullData.Oxygen : hull.OxygenPercentage; - GUI.DrawRectangle( - spriteBatch, hullFrame.Rect, - Color.Lerp(GUI.Style.Red * 0.5f, GUI.Style.Green * 0.3f, (float)oxygenAmount / 100.0f), - true); - } + string header = hull.DisplayName; - float? waterAmount = null; - if (!RequireWaterDetectors || hullData.Water != null) - { - waterAmount = RequireWaterDetectors ? hullData.Water : Math.Min(hull.WaterVolume / hull.Volume, 1.0f); - if (hullFrame.Rect.Height * waterAmount > 3.0f) - { - Rectangle waterRect = new Rectangle( - hullFrame.Rect.X, (int)(hullFrame.Rect.Y + hullFrame.Rect.Height * (1.0f - waterAmount)), - hullFrame.Rect.Width, (int)(hullFrame.Rect.Height * waterAmount)); - - waterRect.Inflate(-3, -3); - - GUI.DrawRectangle(spriteBatch, waterRect, new Color(85, 136, 147), true); - GUI.DrawLine(spriteBatch, new Vector2(waterRect.X, waterRect.Y), new Vector2(waterRect.Right, waterRect.Y), Color.LightBlue); - } - } - - if (mouseOnHull == hull || - hullData.LinkedHulls.Contains(mouseOnHull)) - { - borderColor = Color.Lerp(borderColor, Color.White, 0.5f); - hullFrame.Children.First().Color = Color.White; - hullFrame.Color = borderColor; - } - else - { - hullFrame.Children.First().Color = neutralColor * 0.8f; - } - - if (mouseOnHull == hull) - { - hullInfoFrame.RectTransform.ScreenSpaceOffset = hullFrame.Rect.Center; - if (hullInfoFrame.Rect.Right > GameMain.GraphicsWidth) { hullInfoFrame.RectTransform.ScreenSpaceOffset -= new Point(hullInfoFrame.Rect.Width, 0); } - if (hullInfoFrame.Rect.Bottom > GameMain.GraphicsHeight) { hullInfoFrame.RectTransform.ScreenSpaceOffset -= new Point(0, hullInfoFrame.Rect.Height); } - - hullInfoFrame.Visible = true; - hullNameText.Text = hull.DisplayName; + float? oxygenAmount = hullData.HullOxygenAmount, + waterAmount = hullData.HullWaterAmount; foreach (Hull linkedHull in hullData.LinkedHulls) { - gapOpenSum += linkedHull.ConnectedGaps.Where(g => !g.IsRoomToRoom).Sum(g => g.Open); oxygenAmount += linkedHull.OxygenPercentage; waterAmount += Math.Min(linkedHull.WaterVolume / linkedHull.Volume, 1.0f); } + oxygenAmount /= (hullData.LinkedHulls.Count + 1); waterAmount /= (hullData.LinkedHulls.Count + 1); - hullBreachText.Text = gapOpenSum > 0.1f ? TextManager.Get("MiniMapHullBreach") : ""; - hullBreachText.TextColor = GUI.Style.Red; + string line1 = gapOpenSum > 0.1f ? TextManager.Get("MiniMapHullBreach") : string.Empty; + Color line1Color = GUI.Style.Red; - hullAirQualityText.Text = oxygenAmount == null ? TextManager.Get("MiniMapAirQualityUnavailable") : - TextManager.AddPunctuation(':', TextManager.Get("MiniMapAirQuality"), + (int)oxygenAmount + " %"); - hullAirQualityText.TextColor = oxygenAmount == null ? GUI.Style.Red : Color.Lerp(GUI.Style.Red, Color.LightGreen, (float)oxygenAmount / 100.0f); + string line2 = oxygenAmount == null ? TextManager.Get("MiniMapAirQualityUnavailable") : TextManager.AddPunctuation(':', TextManager.Get("MiniMapAirQuality"), +(int)oxygenAmount + " %"); + Color line2Color = oxygenAmount == null ? GUI.Style.Red : Color.Lerp(GUI.Style.Red, Color.LightGreen, (float)oxygenAmount / 100.0f); - hullWaterText.Text = waterAmount == null ? TextManager.Get("MiniMapWaterLevelUnavailable") : - TextManager.AddPunctuation(':', TextManager.Get("MiniMapWaterLevel"), (int)(waterAmount * 100.0f) + " %"); - hullWaterText.TextColor = waterAmount == null ? GUI.Style.Red : Color.Lerp(Color.LightGreen, GUI.Style.Red, (float)waterAmount); + string line3 = waterAmount == null ? TextManager.Get("MiniMapWaterLevelUnavailable") : TextManager.AddPunctuation(':', TextManager.Get("MiniMapWaterLevel"), (int)(waterAmount * 100.0f) + " %"); + Color line3Color = waterAmount == null ? GUI.Style.Red : Color.Lerp(Color.LightGreen, GUI.Style.Red, (float)waterAmount); + + SetTooltip(borderComponent.Rect.Center, header, line1, line2, line3, line1Color, line2Color, line3Color); } - - hullFrame.Color = borderColor; - } - - foreach (Submarine sub in subs) - { - if (sub.HullVertices == null || sub.Info.IsOutpost) { continue; } - - Rectangle worldBorders = sub.GetDockedBorders(); - worldBorders.Location += sub.WorldPosition.ToPoint(); - - scale = Math.Min( - submarineContainer.Rect.Width / (float)worldBorders.Width, - submarineContainer.Rect.Height / (float)worldBorders.Height) * 0.9f; - float displayScale = ConvertUnits.ToDisplayUnits(scale); - Vector2 offset = ConvertUnits.ToSimUnits(sub.WorldPosition - new Vector2(worldBorders.Center.X, worldBorders.Y - worldBorders.Height / 2)); - Vector2 center = container.Rect.Center.ToVector2(); - - for (int i = 0; i < sub.HullVertices.Count; i++) + // When setting the colors we want to know the linked hulls too or else the linked hull will not realize its being hovered over and reset the border color + foreach (Hull linkedHull in hullData.LinkedHulls) { - Vector2 start = (sub.HullVertices[i] + offset) * displayScale; - start.Y = -start.Y; - Vector2 end = (sub.HullVertices[(i + 1) % sub.HullVertices.Count] + offset) * displayScale; - end.Y = -end.Y; - GUI.DrawLine(spriteBatch, center + start, center + end, Color.DarkCyan * Rand.Range(0.3f, 0.35f), width: (int)(10 * GUI.Scale)); + if (!hullStatusComponents.ContainsKey(linkedHull)) { continue; } + + isHoveringOver |= hullStatusComponents[linkedHull].Component == GUI.MouseOn; + if (isHoveringOver) { break; } } + + if (isHoveringOver) + { + borderColor = Color.Lerp(borderColor, Color.White, 0.5f); + componentColor = HoverColor; + } + else + { + componentColor = neutralColor * 0.8f; + } + + borderComponent.OutlineColor = borderColor; + component.Color = componentColor; } } - private void GetLinkedHulls(Hull hull, List linkedHulls) + private void UpdateElectricalView() + { + foreach (var (entity, miniMapGuiComponent) in electricalMapComponents) + { + if (!(entity is Item it)) { continue; } + if (!electricalChildren.TryGetValue(miniMapGuiComponent, out GUIComponent component)) { continue; } + + if (item.Submarine == null || !hasPower) + { + component.Color = component.OutlineColor = NoPowerElectricalColor; + } + + if (Voltage < MinVoltage || !miniMapGuiComponent.Component.Visible) { continue; } + + int durability = (int)(it.Condition / it.MaxCondition * 100f); + Color color = ToolBox.GradientLerp(durability / 100f, GUI.Style.Red, GUI.Style.Orange, GUI.Style.Green, GUI.Style.Green); + + if (GUI.MouseOn == component) + { + string line1 = string.Empty; + string line2 = string.Empty; + + if (it.GetComponent() is { } battery) + { + int batteryCapacity = (int)(battery.Charge / battery.Capacity * 100f); + line2 = TextManager.GetWithVariable("statusmonitor.battery.tooltip", "[amount]", batteryCapacity.ToString()); + } + else if (it.GetComponent() is { } powerTransfer) + { + int current = (int) -powerTransfer.CurrPowerConsumption, + load = (int) powerTransfer.PowerLoad; + + line1 = TextManager.GetWithVariable("statusmonitor.junctioncurrent.tooltip", "[amount]", current.ToString()); + line2 = TextManager.GetWithVariable("statusmonitor.junctionload.tooltip", "[amount]", load.ToString()); + } + + string line3 = TextManager.GetWithVariable("statusmonitor.durability.tooltip", "[amount]", durability.ToString()); + SetTooltip(component.Rect.Center, it.Prefab.Name, line1, line2, line3, line3Color: color); + color = HoverColor; + } + + component.Color = component.OutlineColor = color; + } + } + + private void DrawHUDBack(SpriteBatch spriteBatch, GUICustomComponent container) + { + if (item.Submarine != null) + { + Rectangle parentRect = container.Rect; + if (miniMapFrame is { } miniMap) { parentRect = miniMap.Rect; } + + DrawSubmarine(spriteBatch, parentRect); + } + + if (Voltage < MinVoltage) { return; } + Rectangle prevScissorRect = spriteBatch.GraphicsDevice.ScissorRectangle; + spriteBatch.End(); + spriteBatch.Begin(SpriteSortMode.Deferred, samplerState: GUI.SamplerState, rasterizerState: GameMain.ScissorTestEnable); + spriteBatch.GraphicsDevice.ScissorRectangle = submarineContainer.Rect; + + if (currentMode == MiniMapMode.ItemFinder) + { + if (MiniMapBlips != null) + { + foreach (Vector2 blip in MiniMapBlips) + { + Vector2 parentSize = miniMapFrame.Rect.Size.ToVector2(); + Sprite pingCircle = GUI.Style.PingCircle.Sprite; + Vector2 targetSize = new Vector2(parentSize.X / 4f); + Vector2 spriteScale = targetSize / pingCircle.size; + float scale = Math.Min(blipState, maxBlipState / 2f); + float alpha = 1.0f - Math.Clamp((blipState - maxBlipState * 0.25f) * 2f, 0f, 1f); + pingCircle.Draw(spriteBatch, miniMapFrame.Rect.Location.ToVector2() + (blip * Zoom), GUI.Style.Red * alpha, pingCircle.Origin, 0f, spriteScale * scale, SpriteEffects.None); + } + } + } + else + { + bool hullsVisible = currentMode == MiniMapMode.HullStatus; + + foreach (var (entity, component) in hullStatusComponents) + { + if (!(entity is Hull hull)) { continue; } + if (!hullDatas.TryGetValue(hull, out HullData? hullData) || hullData is null) { continue; } + + if (hullData.Distort) { continue; } + + GUIComponent hullFrame = component.Component; + + if (hullsVisible && hullData.HullWaterAmount is { } waterAmount) + { + if (hullFrame.Rect.Height * waterAmount > 3.0f) + { + RectangleF waterRect = new RectangleF(hullFrame.Rect.X, hullFrame.Rect.Y + hullFrame.Rect.Height * (1.0f - waterAmount), hullFrame.Rect.Width, hullFrame.Rect.Height * waterAmount); + + GUI.DrawFilledRectangle(spriteBatch, waterRect, HullWaterColor); + GUI.DrawLine(spriteBatch, waterRect.Location, new Vector2(waterRect.Right, waterRect.Y), HullWaterLineColor); + } + } + + if (hullsVisible && hullData.HullOxygenAmount is { } oxygenAmount) + { + GUI.DrawRectangle(spriteBatch, hullFrame.Rect, Color.Lerp(GUI.Style.Red * 0.5f, GUI.Style.Green * 0.3f, oxygenAmount / 100.0f), true); + } + } + } + + spriteBatch.End(); + spriteBatch.GraphicsDevice.ScissorRectangle = prevScissorRect; + spriteBatch.Begin(SpriteSortMode.Deferred, samplerState: GUI.SamplerState, rasterizerState: GameMain.ScissorTestEnable); + } + + private void SetTooltip(Point pos, string header, string line1, string line2, string line3, Color? line1Color = null, Color? line2Color = null, Color? line3Color = null) + { + hullInfoFrame.RectTransform.ScreenSpaceOffset = pos; + + if (hullInfoFrame.Rect.Left > submarineContainer.Rect.Right) { hullInfoFrame.RectTransform.ScreenSpaceOffset = new Point(submarineContainer.Rect.Right, hullInfoFrame.RectTransform.ScreenSpaceOffset.Y); } + if (hullInfoFrame.Rect.Top > submarineContainer.Rect.Bottom) { hullInfoFrame.RectTransform.ScreenSpaceOffset = new Point(hullInfoFrame.RectTransform.ScreenSpaceOffset.X, submarineContainer.Rect.Bottom); } + + if (hullInfoFrame.Rect.Right > GameMain.GraphicsWidth) { hullInfoFrame.RectTransform.ScreenSpaceOffset -= new Point(hullInfoFrame.Rect.Width, 0); } + if (hullInfoFrame.Rect.Bottom > GameMain.GraphicsHeight) { hullInfoFrame.RectTransform.ScreenSpaceOffset -= new Point(0, hullInfoFrame.Rect.Height); } + + hullInfoFrame.Visible = true; + tooltipHeader.Text = header; + + tooltipFirstLine.Text = line1; + tooltipFirstLine.TextColor = line1Color ?? GUI.Style.TextColor; + + tooltipSecondLine.Text = line2; + tooltipSecondLine.TextColor = line2Color ?? GUI.Style.TextColor; + + tooltipThirdLine.Text = line3; + tooltipThirdLine.TextColor = line3Color ?? GUI.Style.TextColor; + } + + private void BakeSubmarine(Submarine sub, Rectangle container) + { + submarinePreview?.Dispose(); + Rectangle parentRect = new Rectangle(container.X, container.Y, container.Width, container.Height); + const int inflate = 128; + parentRect.Inflate(inflate, inflate); + RenderTarget2D rt = new RenderTarget2D(GameMain.Instance.GraphicsDevice, parentRect.Width, parentRect.Height, false, SurfaceFormat.Color, DepthFormat.None); + + using SpriteBatch spriteBatch = new SpriteBatch(GameMain.Instance.GraphicsDevice); + GameMain.Instance.GraphicsDevice.SetRenderTarget(rt); + GameMain.Instance.GraphicsDevice.Clear(Color.Transparent); + spriteBatch.Begin(SpriteSortMode.Deferred, samplerState: GUI.SamplerState, rasterizerState: GameMain.ScissorTestEnable); + Rectangle worldBorders = sub.GetDockedBorders(); + worldBorders.Location += sub.WorldPosition.ToPoint(); + + parentRect.Inflate(-inflate, -inflate); + + foreach (MapEntity entity in subEntities) + { + if (entity is Structure wall) + { + if (wall.IsPlatform) { continue; } + DrawStructure(spriteBatch, wall, parentRect, worldBorders, inflate); + } + + if (entity is Item it) + { + if (it.GetComponent() != null || it.ParentInventory != null) { continue; } + DrawItem(spriteBatch, it, parentRect, worldBorders, inflate); + } + } + + spriteBatch.End(); + GameMain.Instance.GraphicsDevice.SetRenderTarget(null); + submarinePreview = rt; + } + + private void DrawSubmarine(SpriteBatch spriteBatch, Rectangle parentRect) + { + Rectangle prevScissorRect = spriteBatch.GraphicsDevice.ScissorRectangle; + spriteBatch.End(); + if (submarinePreview is { } texture) + { + spriteBatch.Begin(SpriteSortMode.Deferred, samplerState: GUI.SamplerState, blendState: BlendState.NonPremultiplied, effect: GameMain.GameScreen.BlueprintEffect, rasterizerState: GameMain.ScissorTestEnable); + spriteBatch.GraphicsDevice.ScissorRectangle = submarineContainer.Rect; + + GameMain.GameScreen.BlueprintEffect.Parameters["width"].SetValue((float)texture.Width); + GameMain.GameScreen.BlueprintEffect.Parameters["height"].SetValue((float)texture.Height); + + Color blueprintBlue = BlueprintBlue * currentMode switch { MiniMapMode.HullStatus => 0.1f, MiniMapMode.ElectricalView => 0.1f, _ => 0.5f }; + + Vector2 origin = new Vector2(texture.Width / 2f, texture.Height / 2f); + spriteBatch.Draw(texture, parentRect.Center.ToVector2(), null, blueprintBlue, 0f, origin, Zoom, SpriteEffects.None, 0f); + + spriteBatch.End(); + } + spriteBatch.GraphicsDevice.ScissorRectangle = prevScissorRect; + spriteBatch.Begin(SpriteSortMode.Deferred, samplerState: GUI.SamplerState, rasterizerState: GameMain.ScissorTestEnable); + } + + private static void DrawItem(ISpriteBatch spriteBatch, Item item, Rectangle parent, Rectangle border, int inflate) + { + Sprite sprite = item.Sprite; + if (sprite is null) { return; } + + RectangleF entityRect = ScaleRectToUI(item, parent, border); + + Vector2 spriteScale = new Vector2(entityRect.Size.X / sprite.size.X, entityRect.Size.Y / sprite.size.Y); + Vector2 origin = new Vector2(sprite.Origin.X * spriteScale.X, sprite.Origin.Y * spriteScale.Y); + + if (item.GetComponent() is { } turret) + { + Vector2 drawPos = turret.GetDrawPos(); + drawPos.Y = -drawPos.Y; + if (turret.BarrelSprite is { } barrelSprite) + { + DrawAdditionalSprite(drawPos, barrelSprite, turret.Rotation + MathHelper.PiOver2); + } + } + + Vector2 pos = entityRect.Location + origin; + pos.X += inflate; + pos.Y += inflate; + + sprite.Draw(spriteBatch, pos, item.SpriteColor, sprite.Origin, MathHelper.ToRadians(item.Rotation), spriteScale, item.SpriteEffects); + + void DrawAdditionalSprite(Vector2 basePos, Sprite addSprite, float rotation) + { + RectangleF addRect = ScaleRectToUI(new RectangleF(basePos, addSprite.size * item.Scale), parent, border); + Vector2 addScale = new Vector2(addRect.Size.X / addSprite.size.X, addRect.Size.Y / addSprite.size.Y); + addSprite.Draw(spriteBatch, new Vector2(addRect.Location.X + inflate, addRect.Location.Y + inflate), item.SpriteColor, addSprite.Origin, rotation, addScale, item.SpriteEffects); + } + } + + private static void DrawStructure(ISpriteBatch spriteBatch, Structure structure, Rectangle parent, Rectangle border, int inflate) + { + Sprite sprite = structure.Sprite; + if (sprite is null) { return; } + + RectangleF entityRect = ScaleRectToUI(structure, parent, border); + Vector2 spriteScale = new Vector2(entityRect.Size.X / sprite.size.X, entityRect.Size.Y / sprite.size.Y); + sprite.Draw(spriteBatch, new Vector2(entityRect.Location.X + inflate, entityRect.Location.Y + inflate), structure.SpriteColor, Vector2.Zero, 0f, spriteScale, structure.SpriteEffects); + } + + private static RectangleF ScaleRectToUI(MapEntity entity, RectangleF parentRect, RectangleF worldBorders) + { + return ScaleRectToUI(entity.WorldRect, parentRect, worldBorders); + } + + private static RectangleF ScaleRectToUI(RectangleF rect, RectangleF parentRect, RectangleF worldBorders) + { + RelativeEntityRect relativeRect = new RelativeEntityRect(worldBorders, rect); + return relativeRect.RectangleRelativeTo(parentRect, skipOffset: true); + } + + private void DrawHullCards(SpriteBatch spriteBatch, Hull hull, HullData data, GUIComponent frame) + { + cardsToDraw.Clear(); + + if (GameMain.GameSession?.CrewManager is { ActiveOrders: { } orders }) + { + foreach (var pair in orders) + { + Order order = pair.First; + if (order is { SymbolSprite: { }, TargetEntity: Hull _ } && order.TargetEntity == hull) + { + cardsToDraw.Add(new MiniMapSprite(order)); + } + } + } + + foreach (IdCard card in data.Cards) + { + if (card.GetJob() is { Icon: { }} job) + { + cardsToDraw.Add(new MiniMapSprite(job)); + } + } + + if (!cardsToDraw.Any()) { return; } + + var (centerX, centerY) = frame.Center; + + const float padding = 8f; + float totalWidth = 0f; + + int i = 0; + foreach (MiniMapSprite info in cardsToDraw) + { + float spriteSize = info.Sprite.size.X * (frame.Rect.Height / info.Sprite.size.Y) + padding; + if (totalWidth + spriteSize > frame.Rect.Width) { break; } + + totalWidth += spriteSize; + i++; + } + + if (i > 0) { totalWidth -= padding; } + + float adjustedCenterX = centerX - totalWidth / 2f; + + float offset = 0; + int amount = 0; + foreach (MiniMapSprite info in cardsToDraw) + { + Sprite sprite = info.Sprite; + float scale = frame.Rect.Height / sprite.size.Y; + float spriteSize = sprite.size.X * scale; + float posX = adjustedCenterX + offset; + + if (posX + spriteSize > frame.Rect.X + frame.Rect.Width && amount > 0) + { + int amountLeft = cardsToDraw.Count - amount; + if (amountLeft > 0) + { + string text = $"+{amountLeft}"; // TODO localization + var (sizeX, sizeY) = GUI.SubHeadingFont.MeasureString(text); // TODO expensive, move to a global variable + float maxWidth = Math.Max(sizeX, sizeY); + Vector2 drawPos = new Vector2(frame.Rect.Right - sizeX, frame.Rect.Y - sizeY / 2f); + + UISprite icon = GUI.Style.IconOverflowIndicator; + + const int iconPadding = 4; + icon.Draw(spriteBatch, new Rectangle((int) drawPos.X - iconPadding, (int) drawPos.Y - iconPadding, (int) maxWidth + iconPadding * 2, (int) maxWidth + iconPadding * 2), Color.White, SpriteEffects.None); + + GUI.DrawString(spriteBatch, drawPos, text, GUI.Style.TextColor, font: GUI.SubHeadingFont); + } + break; + } + + float halfSize = spriteSize / 2f; + if (i > 0) { offset += halfSize; } + Vector2 pos = new Vector2(adjustedCenterX + offset, centerY); + sprite.Draw(spriteBatch, pos, info.Color, scale: scale, origin: sprite.size / 2f); + offset += halfSize + padding; + amount++; + } + } + + public static void GetLinkedHulls(Hull hull, List linkedHulls) { foreach (var linkedEntity in hull.linkedTo) { @@ -335,5 +1252,270 @@ namespace Barotrauma.Items.Components } } } + + public static GUIFrame CreateMiniMap(Submarine sub, GUIComponent parent, MiniMapSettings settings) + { + return CreateMiniMap(sub, parent, settings, null, out _); + } + + public static GUIFrame CreateMiniMap(Submarine sub, GUIComponent parent, MiniMapSettings settings, IEnumerable? pointsOfInterest, out ImmutableDictionary elements) + { + if (settings.Equals(default(MiniMapSettings))) + { + throw new ArgumentException($"Provided {nameof(MiniMapSettings)} is not valid, did you mean {nameof(MiniMapSettings)}.{nameof(MiniMapSettings.Default)}?", nameof(settings)); + } + + Dictionary pointsOfInterestCollection = new Dictionary(); + + RectangleF worldBorders = sub.GetDockedBorders(); + worldBorders.Location += sub.WorldPosition; + + // create a container that has the same "aspect ratio" as the sub + float aspectRatio = worldBorders.Width / worldBorders.Height; + float parentAspectRatio = parent.Rect.Width / (float)parent.Rect.Height; + + const float elementPadding = 0.9f; + + Vector2 containerScale = parentAspectRatio > aspectRatio ? new Vector2(aspectRatio / parentAspectRatio, 1.0f) : new Vector2(1.0f, parentAspectRatio / aspectRatio); + + GUIFrame hullContainer = new GUIFrame(new RectTransform(containerScale * elementPadding, parent.RectTransform, Anchor.Center), style: null); + + ImmutableHashSet connectedSubs = sub.GetConnectedSubs().ToImmutableHashSet(); + ImmutableHashSet hullList = ImmutableHashSet.Empty; + ImmutableDictionary> combinedHulls = ImmutableDictionary>.Empty; + + if (settings.CreateHullElements) + { + hullList = Hull.hullList.Where(IsPartofSub).ToImmutableHashSet(); + combinedHulls = CombinedHulls(hullList); + } + + // Make components for non-linked hulls + foreach (Hull hull in hullList.Where(IsStandaloneHull)) + { + RelativeEntityRect relativeRect = new RelativeEntityRect(worldBorders, hull.WorldRect); + + GUIFrame hullFrame = new GUIFrame(new RectTransform(relativeRect.RelativeSize, hullContainer.RectTransform) { RelativeOffset = relativeRect.RelativePosition }, style: "ScanLines", color: settings.ElementColor) + { + OutlineColor = settings.ElementColor, + OutlineThickness = 2, + UserData = hull + }; + + pointsOfInterestCollection.Add(hull, new MiniMapGUIComponent(hullFrame)); + } + + // Make components for linked hulls + foreach (var (mainHull, linkedHulls) in combinedHulls) + { + MiniMapHullData data = ConstructHullPolygon(mainHull, linkedHulls, hullContainer, worldBorders); + + RelativeEntityRect relativeRect = new RelativeEntityRect(worldBorders, data.Bounds); + + float highestY = 0f, + highestX = 0f; + + foreach (var (r, _) in data.RectDatas) + { + float y = r.Y - -r.Height, + x = r.X; + + if (y > highestY) { highestY = y; } + if (x > highestX) { highestX = x; } + } + + Dictionary hullsAndFrames = new Dictionary(); + + foreach (var (snappredRect, hull) in data.RectDatas) + { + RectangleF rect = snappredRect; + rect.Height = -rect.Height; + rect.Y -= rect.Height; + + var (parentW, parentH) = hullContainer.Rect.Size.ToVector2(); + Vector2 size = new Vector2(rect.Width / parentW, rect.Height / parentH); + Vector2 pos = new Vector2(rect.X / parentW, rect.Y / parentH); + + GUIFrame hullFrame = new GUIFrame(new RectTransform(size, hullContainer.RectTransform) { RelativeOffset = pos }, style: "ScanLinesSeamless", color: settings.ElementColor) + { + UserData = hull, + UVOffset = new Vector2(highestX - rect.X, highestY - rect.Y) + }; + + hullsAndFrames.Add(hull, hullFrame); + } + + /* + * This exists because the rectangle of GUIComponents still uses Rectangle instead of RectangleF + * and because of rounding sometimes it creates 1px gaps between which looks nasty so we snap + * the rectangles together if they are 2 pixels apart or less. + */ + foreach (var (hull1, frame1) in hullsAndFrames) + { + Rectangle rect1 = frame1.Rect; + foreach (var (hull2, frame2) in hullsAndFrames) + { + if (hull2 == hull1) { continue; } + + Rectangle rect2 = frame2.Rect; + Point size = frame1.RectTransform.NonScaledSize; + + const int treshold = 2; + + int diffY = rect2.Top - rect1.Bottom; + int diffX = rect2.Left - rect1.Right; + + if (diffY <= treshold && diffY > 0) + { + size.Y += diffY; + } + + if (diffX <= treshold && diffX > 0) + { + size.X += diffX; + } + + frame1.RectTransform.NonScaledSize = size; + } + } + + GUICustomComponent linkedHullFrame = new GUICustomComponent(new RectTransform(relativeRect.RelativeSize, hullContainer.RectTransform) { RelativeOffset = relativeRect.RelativePosition }, (spriteBatch, component) => + { + foreach (List list in data.Polygon) + { + spriteBatch.DrawPolygonInner(hullContainer.Rect.Location.ToVector2(), list, component.OutlineColor, 2f); + } + }, (deltaTime, component) => + { + if (component.Parent.Rect.Size != data.ParentSize) + { + data = ConstructHullPolygon(mainHull, linkedHulls, hullContainer, worldBorders); + } + }) + { + UserData = hullsAndFrames.Values.ToHashSet(), + OutlineColor = settings.ElementColor, + CanBeFocused = false + }; + + foreach (var (hull, component) in hullsAndFrames) + { + pointsOfInterestCollection.Add(hull, new MiniMapGUIComponent(component, linkedHullFrame)); + } + } + + if (pointsOfInterest != null) + { + foreach (MapEntity entity in pointsOfInterest) + { + RelativeEntityRect relativeRect = new RelativeEntityRect(worldBorders, entity.WorldRect); + + GUIFrame poiComponent = new GUIFrame(new RectTransform(relativeRect.RelativeSize, hullContainer.RectTransform) { RelativeOffset = relativeRect.RelativePosition }, style: null) + { + CanBeFocused = false, + UserData = entity + }; + + pointsOfInterestCollection.Add(entity, new MiniMapGUIComponent(poiComponent)); + } + } + + elements = pointsOfInterestCollection.ToImmutableDictionary(); + + return hullContainer; + + bool IsPartofSub(MapEntity entity) + { + if (entity.Submarine != sub && !connectedSubs.Contains(entity.Submarine)) { return false; } + return !settings.IgnoreOutposts || sub.IsEntityFoundOnThisSub(entity, true); + } + + bool IsStandaloneHull(Hull hull) + { + return !combinedHulls.ContainsKey(hull) && !combinedHulls.Values.Any(hh => hh.Contains(hull)); + } + } + + private static ImmutableDictionary> CombinedHulls(ImmutableHashSet hulls) + { + Dictionary> combinedHulls = new Dictionary>(); + + foreach (Hull hull in hulls) + { + if (combinedHulls.ContainsKey(hull) || combinedHulls.Values.Any(hh => hh.Contains(hull))) { continue; } + + List linkedHulls = new List(); + GetLinkedHulls(hull, linkedHulls); + + linkedHulls.Remove(hull); + + foreach (Hull linkedHull in linkedHulls) + { + if (!combinedHulls.ContainsKey(hull)) + { + combinedHulls.Add(hull, new HashSet()); + } + + combinedHulls[hull].Add(linkedHull); + } + } + + return combinedHulls.ToImmutableDictionary(pair => pair.Key, pair => pair.Value.ToImmutableHashSet()); + } + + private static MiniMapHullData ConstructHullPolygon(Hull mainHull, ImmutableHashSet linkedHulls, GUIComponent parent, RectangleF worldBorders) + { + Rectangle parentRect = parent.Rect; + + Dictionary rects = new Dictionary(); + Rectangle worldRect = mainHull.WorldRect; + worldRect.Y = -worldRect.Y; + + rects.Add(mainHull, worldRect); + + foreach (Hull hull in linkedHulls) + { + Rectangle rect = hull.WorldRect; + rect.Y = -rect.Y; + + worldRect = Rectangle.Union(worldRect, rect); + rects.Add(hull, rect); + } + + worldRect.Y = -worldRect.Y; + + List normalizedRects = new List(); + List hullRefs = new List(); + + foreach (var (hull, rect) in rects) + { + Rectangle wRect = rect; + wRect.Y = -wRect.Y; + + var (posX, posY, sizeX, sizeY) = new RelativeEntityRect(worldBorders, wRect); + + RectangleF newRect = new RectangleF(posX * parentRect.Width, posY * parentRect.Height, sizeX * parentRect.Width, sizeY * parentRect.Height); + + normalizedRects.Add(newRect); + hullRefs.Add(hull); + } + + ImmutableArray snappedRectangles = ToolBox.SnapRectangles(normalizedRects, treshold: 1); + + List> polygon = ToolBox.CombineRectanglesIntoShape(snappedRectangles); + + List> scaledPolygon = new List>(); + + foreach (List list in polygon) + { + var (polySizeX, polySizeY) = ToolBox.GetPolygonBoundingBoxSize(list); + float sizeX = polySizeX - 1f, + sizeY = polySizeY - 1f; + + scaledPolygon.Add(ToolBox.ScalePolygon(list, new Vector2(sizeX / polySizeX, sizeY / polySizeY))); + } + + return new MiniMapHullData(scaledPolygon, worldRect, parentRect.Size, snappedRectangles, hullRefs.ToImmutableArray()); + } } } diff --git a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Pump.cs b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Pump.cs index 3877a2ccf..a6b0b74b8 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Pump.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Pump.cs @@ -142,6 +142,7 @@ namespace Barotrauma.Items.Components partial void UpdateProjSpecific(float deltaTime) { + float rotationRad = MathHelper.ToRadians(item.Rotation); if (FlowPercentage < 0.0f) { foreach (var (position, emitter) in pumpOutEmitters) @@ -149,12 +150,13 @@ namespace Barotrauma.Items.Components if (item.CurrentHull != null && item.CurrentHull.Surface < item.Rect.Location.Y + position.Y) { continue; } //only emit "pump out" particles when underwater - Vector2 relativeParticlePos = (item.WorldRect.Location.ToVector2() + position * item.Scale) - item.WorldPosition; - float angle = 0.0f; + Vector2 relativeParticlePos = (item.WorldRect.Location.ToVector2() + position * item.Scale) - item.WorldPosition; + relativeParticlePos = MathUtils.RotatePoint(relativeParticlePos, item.FlippedX ? rotationRad : -rotationRad); + float angle = -rotationRad; if (item.FlippedX) { relativeParticlePos.X = -relativeParticlePos.X; - angle = MathHelper.Pi; + angle += MathHelper.Pi; } if (item.FlippedY) { @@ -170,11 +172,12 @@ namespace Barotrauma.Items.Components foreach (var (position, emitter) in pumpInEmitters) { Vector2 relativeParticlePos = (item.WorldRect.Location.ToVector2() + position * item.Scale) - item.WorldPosition; - float angle = 0.0f; + relativeParticlePos = MathUtils.RotatePoint(relativeParticlePos, item.FlippedX ? rotationRad : -rotationRad); + float angle = -rotationRad; if (item.FlippedX) { relativeParticlePos.X = -relativeParticlePos.X; - angle = MathHelper.Pi; + angle += MathHelper.Pi; } if (item.FlippedY) { diff --git a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Steering.cs b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Steering.cs index 1f32930b3..b66bcaa5a 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Steering.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Machines/Steering.cs @@ -888,6 +888,7 @@ namespace Barotrauma.Items.Components maintainPosOriginIndicator?.Remove(); steeringIndicator?.Remove(); enterOutpostPrompt?.Close(); + pathFinder = null; } public void ClientWrite(IWriteMessage msg, object[] extraData = null) diff --git a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Power/PowerContainer.cs b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Power/PowerContainer.cs index 4b6c91176..643b2042e 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Power/PowerContainer.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Power/PowerContainer.cs @@ -71,7 +71,7 @@ namespace Barotrauma.Items.Components var chargeText = new GUITextBlock(new RectTransform(new Vector2(0.6f, 1), textArea.RectTransform, Anchor.CenterRight), "", textColor: GUI.Style.TextColor, font: GUI.Font, textAlignment: Alignment.CenterRight) { - TextGetter = () => $"{(int)charge}/{(int)capacity} {kWmin} ({((int)MathUtils.Percentage(charge, capacity)).ToString()} %)" + TextGetter = () => $"{(int)Math.Round(charge)}/{(int)capacity} {kWmin} ({(int)Math.Round(MathUtils.Percentage(charge, capacity))} %)" }; if (chargeText.TextSize.X > chargeText.Rect.Width) { chargeText.Font = GUI.SmallFont; } diff --git a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Repairable.cs b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Repairable.cs index 0099e8bfb..a770a45cb 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Repairable.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Repairable.cs @@ -15,6 +15,8 @@ namespace Barotrauma.Items.Components public GUIButton SabotageButton { get; private set; } + public GUIButton TinkerButton { get; private set; } + private GUIProgressBar progressBar; private List particleEmitters = new List(); @@ -25,6 +27,7 @@ namespace Barotrauma.Items.Components private string repairButtonText, repairingText; private string sabotageButtonText, sabotagingText; + private string tinkerButtonText, tinkeringText; private FixActions requestStartFixAction; @@ -46,7 +49,7 @@ namespace Barotrauma.Items.Components public override bool ShouldDrawHUD(Character character) { if (!HasRequiredItems(character, false) || character.SelectedConstruction != item) return false; - return item.ConditionPercentage < RepairThreshold || character.IsTraitor && item.ConditionPercentage > MinSabotageCondition || (CurrentFixer == character && (!item.IsFullCondition || (character.IsTraitor && item.ConditionPercentage > MinSabotageCondition))); + return item.ConditionPercentage < RepairThreshold || character.IsTraitor && item.ConditionPercentage > MinSabotageCondition || (CurrentFixer == character && (!item.IsFullCondition || (character.IsTraitor && item.ConditionPercentage > MinSabotageCondition))) || CanTinker(character); } partial void InitProjSpecific(XElement element) @@ -148,6 +151,20 @@ namespace Barotrauma.Items.Components return true; } }; + + tinkerButtonText = "Tinker"; + tinkeringText = "Tinkering"; + TinkerButton = new GUIButton(new RectTransform(new Vector2(0.8f, 0.15f), paddedFrame.RectTransform, Anchor.BottomCenter), tinkerButtonText, style: "GUIButtonSmall") + { + IgnoreLayoutGroups = true, + Visible = false, + OnClicked = (btn, obj) => + { + requestStartFixAction = FixActions.Tinker; + item.CreateClientEvent(this); + return true; + } + }; } partial void UpdateProjSpecific(float deltaTime) @@ -176,6 +193,7 @@ namespace Barotrauma.Items.Components { case FixActions.Repair: case FixActions.Sabotage: + case FixActions.Tinker: StartRepairing(Character.Controlled, requestStartFixAction); requestStartFixAction = FixActions.None; break; @@ -226,6 +244,13 @@ namespace Barotrauma.Items.Components sabotageButtonText : sabotagingText + new string('.', ((int)(Timing.TotalTime * 2.0f) % 3) + 1); + TinkerButton.Visible = CanTinker(character); + TinkerButton.IgnoreLayoutGroups = !TinkerButton.Visible; + TinkerButton.Enabled = (currentFixerAction == FixActions.None || (CurrentFixer == character && currentFixerAction != FixActions.Tinker)) && CanTinker(character); + TinkerButton.Text = (currentFixerAction == FixActions.None || CurrentFixer != character || currentFixerAction != FixActions.Tinker && CanTinker(character)) ? + tinkerButtonText : + tinkeringText + new string('.', ((int)(Timing.TotalTime * 2.0f) % 3) + 1); + System.Diagnostics.Debug.Assert(GuiFrame.GetChild(0) is GUILayoutGroup, "Repair UI hierarchy has changed, could not find skill texts"); foreach (GUIComponent c in GuiFrame.GetChild(0).Children) { diff --git a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Signal/Terminal.cs b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Signal/Terminal.cs index 353e4550b..fe20dca85 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Signal/Terminal.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Signal/Terminal.cs @@ -85,7 +85,7 @@ namespace Barotrauma.Items.Components GUITextBlock newBlock = new GUITextBlock( new RectTransform(new Vector2(1, 0), historyBox.Content.RectTransform, anchor: Anchor.TopCenter), "> " + input, - textColor: Color.LimeGreen, wrap: true) + textColor: Color.LimeGreen, wrap: true, font: UseMonospaceFont ? GUI.MonospacedFont : GUI.GlobalFont) { CanBeFocused = false }; diff --git a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Turret.cs b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Turret.cs index f28cdf48b..e78bdf3b2 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Turret.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Items/Components/Turret.cs @@ -534,20 +534,20 @@ namespace Barotrauma.Items.Components minRotationWidget.Draw(spriteBatch, (float)Timing.Step); maxRotationWidget.Draw(spriteBatch, (float)Timing.Step); - Vector2 GetDrawPos() - { - Vector2 drawPos = new Vector2(item.Rect.X + transformedBarrelPos.X, item.Rect.Y - transformedBarrelPos.Y); - if (item.Submarine != null) { drawPos += item.Submarine.DrawPosition; } - drawPos.Y = -drawPos.Y; - return drawPos; - } - void UpdateBarrel() { rotation = (minRotation + maxRotation) / 2; } } + public Vector2 GetDrawPos() + { + Vector2 drawPos = new Vector2(item.Rect.X + transformedBarrelPos.X, item.Rect.Y - transformedBarrelPos.Y); + if (item.Submarine != null) { drawPos += item.Submarine.DrawPosition; } + drawPos.Y = -drawPos.Y; + return drawPos; + } + private Widget GetWidget(string id, SpriteBatch spriteBatch, int size = 5, float thickness = 1f, Action initMethod = null) { Vector2 offset = new Vector2(size / 2 + 5, -10); diff --git a/Barotrauma/BarotraumaClient/ClientSource/Items/Inventory.cs b/Barotrauma/BarotraumaClient/ClientSource/Items/Inventory.cs index e563f152d..21ac893a5 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Items/Inventory.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Items/Inventory.cs @@ -478,7 +478,7 @@ namespace Barotrauma } if (container == null) { return false; } - return owner.SelectedCharacter != null|| (!(owner is Character character)) || !container.KeepOpenWhenEquippedBy(character) || !owner.HasEquippedItem(container.Item); + return owner.SelectedCharacter != null|| (!(owner is Character character)) || !container.KeepOpenWhenEquippedBy(character) || !owner.HasEquippedItem(container.Item); } protected virtual bool HideSlot(int i) @@ -667,6 +667,10 @@ namespace Barotrauma if (subInventory.visualSlots == null) { subInventory.CreateSlots(); } canMove = container.MovableFrame && !subInventory.IsInventoryHoverAvailable(Owner as Character, container) && subInventory.originalPos != Point.Zero; + if (this is CharacterInventory characterInventory && characterInventory.CurrentLayout != CharacterInventory.Layout.Default) + { + canMove = false; + } if (canMove) { @@ -826,11 +830,23 @@ namespace Barotrauma return rect.Contains(PlayerInput.MousePosition); } + public static bool IsMouseOnInventory + { + get; private set; + } + + /// + /// Refresh the value of IsMouseOnInventory + /// + public static void RefreshMouseOnInventory() + { + IsMouseOnInventory = DetermineMouseOnInventory(); + } + /// /// Is the mouse on any inventory element (slot, equip button, subinventory...) /// - /// - public static bool IsMouseOnInventory(bool ignoreDraggedItem = false) + private static bool DetermineMouseOnInventory(bool ignoreDraggedItem = false) { if (GameMain.GameSession?.Campaign != null && (GameMain.GameSession.Campaign.ShowCampaignUI || GameMain.GameSession.Campaign.ForceMapUI)) @@ -1112,7 +1128,7 @@ namespace Barotrauma { Character.Controlled.ClearInputs(); - if (!IsMouseOnInventory(ignoreDraggedItem: true) && + if (!DetermineMouseOnInventory(ignoreDraggedItem: true) && CharacterHealth.OpenHealthWindow != null) { bool dropSuccessful = false; @@ -1306,7 +1322,9 @@ namespace Barotrauma protected static Rectangle GetSubInventoryHoverArea(SlotReference subSlot) { Rectangle hoverArea; - if (!subSlot.Inventory.Movable() || Character.Controlled?.Inventory == subSlot.ParentInventory && !Character.Controlled.HasEquippedItem(subSlot.Item)) + if (!subSlot.Inventory.Movable() || + (Character.Controlled?.Inventory == subSlot.ParentInventory && !Character.Controlled.HasEquippedItem(subSlot.Item)) || + (subSlot.ParentInventory is CharacterInventory characterInventory && characterInventory.CurrentLayout != CharacterInventory.Layout.Default)) { hoverArea = subSlot.Slot.Rect; hoverArea.Location += subSlot.Slot.DrawOffset.ToPoint(); diff --git a/Barotrauma/BarotraumaClient/ClientSource/Items/Item.cs b/Barotrauma/BarotraumaClient/ClientSource/Items/Item.cs index d675203fd..237c062d3 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Items/Item.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Items/Item.cs @@ -332,7 +332,7 @@ namespace Barotrauma foreach (var decorativeSprite in Prefab.DecorativeSprites) { if (!spriteAnimState[decorativeSprite].IsActive) { continue; } - Vector2 offset = decorativeSprite.GetOffset(ref spriteAnimState[decorativeSprite].OffsetState, spriteAnimState[decorativeSprite].RandomOffsetMultiplier, -rotationRad) * Scale; + Vector2 offset = decorativeSprite.GetOffset(ref spriteAnimState[decorativeSprite].OffsetState, spriteAnimState[decorativeSprite].RandomOffsetMultiplier, flippedX && Prefab.CanSpriteFlipX ? rotationRad : -rotationRad) * Scale; if (flippedX && Prefab.CanSpriteFlipX) { offset.X = -offset.X; } if (flippedY && Prefab.CanSpriteFlipY) { offset.Y = -offset.Y; } decorativeSprite.Sprite.DrawTiled(spriteBatch, @@ -368,7 +368,7 @@ namespace Barotrauma { if (!spriteAnimState[decorativeSprite].IsActive) { continue; } float rot = decorativeSprite.GetRotation(ref spriteAnimState[decorativeSprite].RotationState, spriteAnimState[decorativeSprite].RandomRotationFactor); - Vector2 offset = decorativeSprite.GetOffset(ref spriteAnimState[decorativeSprite].OffsetState, spriteAnimState[decorativeSprite].RandomOffsetMultiplier, -rotationRad) * Scale; + Vector2 offset = decorativeSprite.GetOffset(ref spriteAnimState[decorativeSprite].OffsetState, spriteAnimState[decorativeSprite].RandomOffsetMultiplier, flippedX && Prefab.CanSpriteFlipX ? rotationRad : -rotationRad) * Scale; if (flippedX && Prefab.CanSpriteFlipX) { offset.X = -offset.X; } if (flippedY && Prefab.CanSpriteFlipY) { offset.Y = -offset.Y; } decorativeSprite.Sprite.Draw(spriteBatch, new Vector2(DrawPosition.X + offset.X, -(DrawPosition.Y + offset.Y)), color, @@ -1623,6 +1623,10 @@ namespace Barotrauma { wifiComponent.TeamID = (CharacterTeamType)teamID; } + foreach (IdCard idCard in item.GetComponents()) + { + idCard.TeamID = (CharacterTeamType)teamID; + } if (descriptionChanged) { item.Description = itemDesc; } if (tagsChanged) { item.Tags = tags; } var nameTag = item.GetComponent(); diff --git a/Barotrauma/BarotraumaClient/ClientSource/Map/Explosion.cs b/Barotrauma/BarotraumaClient/ClientSource/Map/Explosion.cs index 308010cac..57d7b3e44 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Map/Explosion.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Map/Explosion.cs @@ -8,6 +8,8 @@ namespace Barotrauma { partial void ExplodeProjSpecific(Vector2 worldPosition, Hull hull) { + if (GameMain.Client?.MidRoundSyncing ?? false) { return; } + if (shockwave) { GameMain.ParticleManager.CreateParticle("shockwave", worldPosition, diff --git a/Barotrauma/BarotraumaClient/ClientSource/Map/Hull.cs b/Barotrauma/BarotraumaClient/ClientSource/Map/Hull.cs index 2138e1109..13533eb7d 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Map/Hull.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Map/Hull.cs @@ -676,7 +676,7 @@ namespace Barotrauma } else { - remoteBackgroundSections.Add(new BackgroundSection(new Rectangle(0, 0, 1, 1), i, colorStrength, color, 0)); + remoteBackgroundSections.Add(new BackgroundSection(new Rectangle(0, 0, 1, 1), (ushort)i, colorStrength, color, 0)); } } paintAmount = BackgroundSections.Sum(s => s.ColorStrength); diff --git a/Barotrauma/BarotraumaClient/ClientSource/Map/Lights/LightManager.cs b/Barotrauma/BarotraumaClient/ClientSource/Map/Lights/LightManager.cs index bb8e93052..e4c73b52c 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Map/Lights/LightManager.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Map/Lights/LightManager.cs @@ -238,13 +238,13 @@ namespace Barotrauma.Lights //draw a black rectangle on hulls to hide background lights behind subs //--------------------------------------------------------------------------------------------------- - if (backgroundObstructor != null) + /*if (backgroundObstructor != null) { spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.NonPremultiplied); spriteBatch.Draw(backgroundObstructor, new Rectangle(0, 0, (int)(GameMain.GraphicsWidth * currLightMapScale), (int)(GameMain.GraphicsHeight * currLightMapScale)), Color.Black); spriteBatch.End(); - } + }*/ spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.Opaque, transformMatrix: spriteBatchTransform); Dictionary visibleHulls = GetVisibleHulls(cam); @@ -258,7 +258,7 @@ namespace Barotrauma.Lights spriteBatch.End(); SolidColorEffect.CurrentTechnique = SolidColorEffect.Techniques["SolidColor"]; - SolidColorEffect.Parameters["color"].SetValue(AmbientLight.ToVector4()); + SolidColorEffect.Parameters["color"].SetValue(AmbientLight.Opaque().ToVector4()); spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.NonPremultiplied, transformMatrix: spriteBatchTransform, effect: SolidColorEffect); Submarine.DrawDamageable(spriteBatch, null); spriteBatch.End(); diff --git a/Barotrauma/BarotraumaClient/ClientSource/Map/Submarine.cs b/Barotrauma/BarotraumaClient/ClientSource/Map/Submarine.cs index 28e2bbdb2..04701beb5 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Map/Submarine.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Map/Submarine.cs @@ -7,6 +7,7 @@ using Microsoft.Xna.Framework.Graphics; using System; using System.Collections; using System.Collections.Generic; +using System.Collections.Immutable; using Barotrauma.IO; using System.Linq; using System.Xml.Linq; @@ -403,6 +404,8 @@ namespace Barotrauma } } + // TODO remove + [Obsolete("Use MiniMap.CreateMiniMap()")] public void CreateMiniMap(GUIComponent parent, IEnumerable pointsOfInterest = null, bool ignoreOutpost = false) { Rectangle worldBorders = GetDockedBorders(); @@ -417,24 +420,125 @@ namespace Barotrauma GUIFrame hullContainer = new GUIFrame(new RectTransform( (parentAspectRatio > aspectRatio ? new Vector2(aspectRatio / parentAspectRatio, 1.0f) : new Vector2(1.0f, parentAspectRatio / aspectRatio)) * scale, parent.RectTransform, Anchor.Center), - style: null); + style: null) + { + UserData = "hullcontainer" + }; var connectedSubs = GetConnectedSubs(); - foreach (Hull hull in Hull.hullList) - { - if (hull.Submarine != this && !connectedSubs.Contains(hull.Submarine)) { continue; } - if (ignoreOutpost && !IsEntityFoundOnThisSub(hull, true)) { continue; } + HashSet hullList = Hull.hullList.Where(hull => hull.Submarine == this || connectedSubs.Contains(hull.Submarine)).Where(hull => !ignoreOutpost || IsEntityFoundOnThisSub(hull, true)).ToHashSet(); + + Dictionary> combinedHulls = new Dictionary>(); + + foreach (Hull hull in hullList) + { + if (combinedHulls.ContainsKey(hull) || combinedHulls.Values.Any(hh => hh.Contains(hull))) { continue; } + + List linkedHulls = new List(); + MiniMap.GetLinkedHulls(hull, linkedHulls); + + linkedHulls.Remove(hull); + + foreach (Hull linkedHull in linkedHulls) + { + if (!combinedHulls.ContainsKey(hull)) + { + combinedHulls.Add(hull, new HashSet()); + } + + combinedHulls[hull].Add(linkedHull); + } + } + + foreach (Hull hull in hullList) + { Vector2 relativeHullPos = new Vector2( (hull.WorldRect.X - worldBorders.X) / (float)worldBorders.Width, (worldBorders.Y - hull.WorldRect.Y) / (float)worldBorders.Height); Vector2 relativeHullSize = new Vector2(hull.Rect.Width / (float)worldBorders.Width, hull.Rect.Height / (float)worldBorders.Height); - var hullFrame = new GUIFrame(new RectTransform(relativeHullSize, hullContainer.RectTransform) { RelativeOffset = relativeHullPos }, style: "MiniMapRoom", color: Color.DarkCyan * 0.8f) + bool hideHull = combinedHulls.ContainsKey(hull) || combinedHulls.Values.Any(hh => hh.Contains(hull)); + + if (hideHull) { continue; } + + Color color = Color.DarkCyan * 0.8f; + + var hullFrame = new GUIFrame(new RectTransform(relativeHullSize, hullContainer.RectTransform) { RelativeOffset = relativeHullPos }, style: "MiniMapRoom", color: color) { UserData = hull }; - new GUIFrame(new RectTransform(Vector2.One, hullFrame.RectTransform), style: "ScanLines", color: Color.DarkCyan * 0.8f); + + new GUIFrame(new RectTransform(Vector2.One, hullFrame.RectTransform), style: "ScanLines", color: color); + } + + foreach (var (mainHull, linkedHulls) in combinedHulls) + { + MiniMapHullData data = ConstructLinkedHulls(mainHull, linkedHulls, hullContainer, worldBorders); + + Vector2 relativeHullPos = new Vector2( + (data.Bounds.X - worldBorders.X) / worldBorders.Width, + (worldBorders.Y - data.Bounds.Y) / worldBorders.Height); + + Vector2 relativeHullSize = new Vector2(data.Bounds.Width / worldBorders.Width, data.Bounds.Height / worldBorders.Height); + + Color color = Color.DarkCyan * 0.8f; + + float highestY = 0f, + highestX = 0f; + + foreach (var (r, _) in data.RectDatas) + { + float y = r.Y - -r.Height, + x = r.X; + + if (y > highestY) { highestY = y; } + if (x > highestX) { highestX = x; } + } + + HashSet frames = new HashSet(); + + foreach (var (snappredRect, hull) in data.RectDatas) + { + RectangleF rect = snappredRect; + rect.Height = -rect.Height; + rect.Y -= rect.Height; + + var (parentW, parentH) = hullContainer.Rect.Size.ToVector2(); + Vector2 size = new Vector2(rect.Width / parentW, rect.Height / parentH); + // TODO this won't be required if we some day switch RectTransform to use RectangleF + const float padding = 0.001f; + size.X += padding; + size.Y += padding; + Vector2 pos = new Vector2(rect.X / parentW, rect.Y / parentH); + + GUIFrame hullFrame = new GUIFrame(new RectTransform(size, hullContainer.RectTransform) { RelativeOffset = pos }, style: "ScanLinesSeamless", color: color) + { + UserData = hull, + UVOffset = new Vector2(highestX - rect.X, highestY - rect.Y) + }; + + frames.Add(hullFrame); + } + + new GUICustomComponent(new RectTransform(relativeHullSize, hullContainer.RectTransform) { RelativeOffset = relativeHullPos }, (spriteBatch, component) => + { + foreach (List list in data.Polygon) + { + spriteBatch.DrawPolygonInner(hullContainer.Rect.Location.ToVector2(), list, component.Color, 2f); + } + }, (deltaTime, component) => + { + if (component.Parent.Rect.Size != data.ParentSize) + { + data = ConstructLinkedHulls(mainHull, linkedHulls, hullContainer, worldBorders); + } + }) + { + UserData = frames, + Color = color, + CanBeFocused = false + }; } if (pointsOfInterest != null) @@ -453,6 +557,64 @@ namespace Barotrauma } } + public static MiniMapHullData ConstructLinkedHulls(Hull mainHull, HashSet linkedHulls, GUIComponent parent, Rectangle worldBorders) + { + Rectangle parentRect = parent.Rect; + + Dictionary rects = new Dictionary(); + Rectangle worldRect = mainHull.WorldRect; + worldRect.Y = -worldRect.Y; + + rects.Add(mainHull, worldRect); + + foreach (Hull hull in linkedHulls) + { + Rectangle rect = hull.WorldRect; + rect.Y = -rect.Y; + + worldRect = Rectangle.Union(worldRect, rect); + rects.Add(hull, rect); + } + + worldRect.Y = -worldRect.Y; + + List normalizedRects = new List(); + List hullRefs = new List(); + foreach (var (hull, rect) in rects) + { + Rectangle wRect = rect; + wRect.Y = -wRect.Y; + + var (posX, posY) = new Vector2( + (wRect.X - worldBorders.X) / (float)worldBorders.Width, + (worldBorders.Y - wRect.Y) / (float)worldBorders.Height); + + var (scaleX, scaleY) = new Vector2(wRect.Width / (float)worldBorders.Width, wRect.Height / (float)worldBorders.Height); + + RectangleF newRect = new RectangleF(posX * parentRect.Width, posY * parentRect.Height, scaleX * parentRect.Width, scaleY * parentRect.Height); + + normalizedRects.Add(newRect); + hullRefs.Add(hull); + } + + ImmutableArray snappedRectangles = ToolBox.SnapRectangles(normalizedRects, treshold: 1); + + List> polygon = ToolBox.CombineRectanglesIntoShape(snappedRectangles); + + List> scaledPolygon = new List>(); + + foreach (List list in polygon) + { + var (polySizeX, polySizeY) = ToolBox.GetPolygonBoundingBoxSize(list); + float sizeX = polySizeX - 1f, + sizeY = polySizeY - 1f; + + scaledPolygon.Add(ToolBox.ScalePolygon(list, new Vector2(sizeX / polySizeX, sizeY / polySizeY))); + } + + return new MiniMapHullData(scaledPolygon, worldRect, parentRect.Size, snappedRectangles, hullRefs.ToImmutableArray()); + } + public void CheckForErrors() { List errorMsgs = new List(); diff --git a/Barotrauma/BarotraumaClient/ClientSource/Networking/ChatMessage.cs b/Barotrauma/BarotraumaClient/ClientSource/Networking/ChatMessage.cs index feee46eb0..67c758aa6 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Networking/ChatMessage.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Networking/ChatMessage.cs @@ -64,7 +64,10 @@ namespace Barotrauma.Networking string orderOption = orderMessageInfo.OrderOption; orderOption ??= orderMessageInfo.OrderOptionIndex.HasValue && orderMessageInfo.OrderOptionIndex >= 0 && orderMessageInfo.OrderOptionIndex < orderPrefab.Options.Length ? orderPrefab.Options[orderMessageInfo.OrderOptionIndex.Value] : ""; - txt = orderPrefab.GetChatMessage(orderMessageInfo.TargetCharacter?.Name, senderCharacter?.CurrentHull?.DisplayName, givingOrderToSelf: orderMessageInfo.TargetCharacter == senderCharacter, orderOption: orderOption); + txt = orderPrefab.GetChatMessage(orderMessageInfo.TargetCharacter?.Name, senderCharacter?.CurrentHull?.DisplayName, + givingOrderToSelf: orderMessageInfo.TargetCharacter == senderCharacter, + orderOption: orderOption, + priority: orderMessageInfo.Priority); if (GameMain.Client.GameStarted && Screen.Selected == GameMain.GameScreen) { diff --git a/Barotrauma/BarotraumaClient/ClientSource/Networking/GameClient.cs b/Barotrauma/BarotraumaClient/ClientSource/Networking/GameClient.cs index 363d909a3..bc8cc1075 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Networking/GameClient.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Networking/GameClient.cs @@ -550,6 +550,13 @@ namespace Barotrauma.Networking okButton.OnClicked += msgBox.Close; var cancelButton = msgBox.Buttons[1]; cancelButton.OnClicked += msgBox.Close; + passwordBox.OnEnterPressed += (GUITextBox textBox, string text) => + { + msgBox.Close(); + clientPeer?.SendPassword(passwordBox.Text); + requiresPw = false; + return true; + }; okButton.OnClicked += (GUIButton button, object obj) => { @@ -565,6 +572,8 @@ namespace Barotrauma.Networking GameMain.ServerListScreen.Select(); return true; }; + yield return CoroutineStatus.Running; + passwordBox.Select(); while (GUIMessageBox.MessageBoxes.Contains(msgBox)) { diff --git a/Barotrauma/BarotraumaClient/ClientSource/Networking/ServerInfo.cs b/Barotrauma/BarotraumaClient/ClientSource/Networking/ServerInfo.cs index 931cd5d44..ee2ffa7c1 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Networking/ServerInfo.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Networking/ServerInfo.cs @@ -110,12 +110,7 @@ namespace Barotrauma.Networking if (frame == null) { return; } - var previewContainer = new GUILayoutGroup(new RectTransform(new Vector2(0.95f, 0.98f), frame.RectTransform, Anchor.Center)) - { - Stretch = true - }; - - var title = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), previewContainer.RectTransform, Anchor.CenterLeft), ServerName, font: GUI.LargeFont) + var title = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), frame.RectTransform), ServerName, font: GUI.LargeFont) { ToolTip = ServerName }; @@ -141,41 +136,30 @@ namespace Barotrauma.Networking } }; - new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), previewContainer.RectTransform), + new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), frame.RectTransform), TextManager.AddPunctuation(':', TextManager.Get("ServerListVersion"), string.IsNullOrEmpty(GameVersion) ? TextManager.Get("Unknown") : GameVersion)); - bool hidePlaystyleBanner = previewContainer.Rect.Height < 380 || !PlayStyle.HasValue; + bool hidePlaystyleBanner = !PlayStyle.HasValue; if (!hidePlaystyleBanner) { PlayStyle playStyle = PlayStyle ?? Networking.PlayStyle.Serious; Sprite playStyleBannerSprite = ServerListScreen.PlayStyleBanners[(int)playStyle]; float playStyleBannerAspectRatio = playStyleBannerSprite.SourceRect.Width / playStyleBannerSprite.SourceRect.Height; - var playStyleBanner = new GUIImage(new RectTransform(new Point(previewContainer.Rect.Width, (int)(previewContainer.Rect.Width / playStyleBannerAspectRatio)), previewContainer.RectTransform), + var playStyleBanner = new GUIImage(new RectTransform(new Point(frame.Rect.Width, (int)(frame.Rect.Width / playStyleBannerAspectRatio)), frame.RectTransform), playStyleBannerSprite, null, true); - var playStyleName = new GUITextBlock(new RectTransform(new Vector2(0.15f, 0.0f), playStyleBanner.RectTransform) { RelativeOffset = new Vector2(0.01f, 0.06f) }, + var playStyleName = new GUITextBlock(new RectTransform(new Vector2(0.15f, 0.0f), playStyleBanner.RectTransform) { RelativeOffset = new Vector2(0.0f, 0.06f) }, TextManager.AddPunctuation(':', TextManager.Get("serverplaystyle"), TextManager.Get("servertag."+ playStyle)), textColor: Color.White, font: GUI.SmallFont, textAlignment: Alignment.Center, color: ServerListScreen.PlayStyleColors[(int)playStyle], style: "GUISlopedHeader"); playStyleName.RectTransform.NonScaledSize = (playStyleName.Font.MeasureString(playStyleName.Text) + new Vector2(20, 5) * GUI.Scale).ToPoint(); playStyleName.RectTransform.IsFixedSize = true; - - var serverTypeContainer = new GUIFrame(new RectTransform(new Vector2(0.9f, 0.2f), playStyleBanner.RectTransform, Anchor.BottomLeft, Pivot.BottomLeft), - "MainMenuNotifBackground", Color.Black) - { - CanBeFocused = false, - }; - - var serverType = new GUITextBlock(new RectTransform(Vector2.One, serverTypeContainer.RectTransform, Anchor.CenterLeft), - TextManager.Get((OwnerID != 0 || LobbyID != 0) ? "SteamP2PServer" : "DedicatedServer"), textAlignment: Alignment.CenterLeft); - } - else - { - var serverType = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.1f), previewContainer.RectTransform, Anchor.CenterLeft), - TextManager.Get((OwnerID != 0 || LobbyID != 0) ? "SteamP2PServer" : "DedicatedServer"), textAlignment: Alignment.CenterLeft); } + var serverType = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), frame.RectTransform), + TextManager.Get((OwnerID != 0 || LobbyID != 0) ? "SteamP2PServer" : "DedicatedServer"), textAlignment: Alignment.TopLeft); + serverType.RectTransform.MinSize = new Point(0, (int)(serverType.Rect.Height * 1.5f)); - var content = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.6f), previewContainer.RectTransform)) + var content = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.6f), frame.RectTransform)) { Stretch = true }; @@ -285,7 +269,6 @@ namespace Barotrauma.Networking else usingWhiteList.Selected = UsingWhiteList.Value; - content.RectTransform.SizeChanged += () => { GUITextBlock.AutoScaleAndNormalize(allowSpectating.TextBlock, allowRespawn.TextBlock, usingWhiteList.TextBlock); @@ -294,7 +277,7 @@ namespace Barotrauma.Networking new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), content.RectTransform), TextManager.Get("ServerListContentPackages"), textAlignment: Alignment.Center, font: GUI.SubHeadingFont); - var contentPackageList = new GUIListBox(new RectTransform(new Vector2(1.0f, 0.2f), content.RectTransform)) { ScrollBarVisible = true }; + var contentPackageList = new GUIListBox(new RectTransform(new Vector2(1.0f, 0.3f), frame.RectTransform)) { ScrollBarVisible = true }; if (ContentPackageNames.Count == 0) { new GUITextBlock(new RectTransform(Vector2.One, contentPackageList.Content.RectTransform), TextManager.Get("Unknown"), textAlignment: Alignment.Center) @@ -309,7 +292,7 @@ namespace Barotrauma.Networking var packageText = new GUITickBox(new RectTransform(new Vector2(1.0f, 0.15f), contentPackageList.Content.RectTransform) { MinSize = new Point(0, 15) }, ContentPackageNames[i]) { - Enabled = false + CanBeFocused = false }; if (i < ContentPackageHashes.Count) { @@ -322,7 +305,7 @@ namespace Barotrauma.Networking //workshop download link found if (i < ContentPackageWorkshopIds.Count && ContentPackageWorkshopIds[i] != 0) { - packageText.TextColor = Color.Yellow; + packageText.TextColor = GUI.Style.Yellow; packageText.ToolTip = TextManager.GetWithVariable("ServerListIncompatibleContentPackageWorkshopAvailable", "[contentpackage]", ContentPackageNames[i]); } else //no package or workshop download link found, tough luck diff --git a/Barotrauma/BarotraumaClient/ClientSource/Networking/SteamManager.cs b/Barotrauma/BarotraumaClient/ClientSource/Networking/SteamManager.cs index d9647ac72..13604817e 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Networking/SteamManager.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Networking/SteamManager.cs @@ -1207,7 +1207,7 @@ namespace Barotrauma.Steam foreach (string file in allPackageFiles) { if (file == metaDataFilePath) { continue; } - string relativePath = UpdaterUtil.GetRelativePath(file, item.Directory); + string relativePath = Path.GetRelativePath(item.Directory, file); string fullPath = Path.GetFullPath(relativePath); if (contentPackage.Files.Any(f => { string fp = Path.GetFullPath(f.Path); return fp == fullPath; })) { continue; } nonContentFiles.Add(relativePath); diff --git a/Barotrauma/BarotraumaClient/ClientSource/Particles/Particle.cs b/Barotrauma/BarotraumaClient/ClientSource/Particles/Particle.cs index 3a4852708..7747a7b16 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Particles/Particle.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Particles/Particle.cs @@ -3,7 +3,6 @@ using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using System; using System.Collections.Generic; -using System.Reflection.Metadata; namespace Barotrauma.Particles { @@ -16,6 +15,8 @@ namespace Barotrauma.Particles public delegate void OnChangeHullHandler(Vector2 position, Hull currentHull); public OnChangeHullHandler OnChangeHull; + public OnChangeHullHandler OnCollision; + private Vector2 position; private Vector2 prevPosition; @@ -166,6 +167,7 @@ namespace Barotrauma.Particles HighQualityCollisionDetection = false; OnChangeHull = null; + OnCollision = null; subEmitters.Clear(); hasSubEmitters = false; @@ -340,12 +342,20 @@ namespace Barotrauma.Particles Vector2 collisionNormal = Vector2.Zero; if (velocity.Y < 0.0f && position.Y - prefab.CollisionRadius * size.Y < hullRect.Y - hullRect.Height) { - if (prefab.DeleteOnCollision) { return UpdateResult.Delete; } + if (prefab.DeleteOnCollision) + { + OnCollision?.Invoke(position, currentHull); + return UpdateResult.Delete; + } collisionNormal = new Vector2(0.0f, 1.0f); } else if (velocity.Y > 0.0f && position.Y + prefab.CollisionRadius * size.Y > hullRect.Y) { - if (prefab.DeleteOnCollision) { return UpdateResult.Delete; } + if (prefab.DeleteOnCollision) + { + OnCollision?.Invoke(position, currentHull); + return UpdateResult.Delete; + } collisionNormal = new Vector2(0.0f, -1.0f); } @@ -487,6 +497,8 @@ namespace Barotrauma.Particles velocity.Y = Math.Sign(collisionNormal.Y) * Math.Abs(velocity.Y) * prefab.Restitution; } + OnCollision?.Invoke(position, currentHull); + velocity += subVel; } @@ -523,6 +535,8 @@ namespace Barotrauma.Particles velocity.Y *= (1.0f - prefab.Friction); } + OnCollision?.Invoke(position, currentHull); + velocity *= prefab.Restitution; } diff --git a/Barotrauma/BarotraumaClient/ClientSource/Particles/ParticleEmitter.cs b/Barotrauma/BarotraumaClient/ClientSource/Particles/ParticleEmitter.cs index f54793630..72d20579a 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Particles/ParticleEmitter.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Particles/ParticleEmitter.cs @@ -138,6 +138,8 @@ namespace Barotrauma.Particles public void Emit(float deltaTime, Vector2 position, Hull hullGuess = null, float angle = 0.0f, float particleRotation = 0.0f, float velocityMultiplier = 1.0f, float sizeMultiplier = 1.0f, float amountMultiplier = 1.0f, Color? colorMultiplier = null, ParticlePrefab overrideParticle = null, Tuple tracerPoints = null) { + if (GameMain.Client?.MidRoundSyncing ?? false) { return; } + if (initialDelay < Prefab.Properties.InitialDelay) { initialDelay += deltaTime; diff --git a/Barotrauma/BarotraumaClient/ClientSource/Particles/ParticleManager.cs b/Barotrauma/BarotraumaClient/ClientSource/Particles/ParticleManager.cs index 9ce02308e..182e826f9 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Particles/ParticleManager.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Particles/ParticleManager.cs @@ -133,22 +133,41 @@ namespace Barotrauma.Particles public Particle CreateParticle(ParticlePrefab prefab, Vector2 position, Vector2 velocity, float rotation = 0.0f, Hull hullGuess = null, bool drawOnTop = false, float collisionIgnoreTimer = 0f, Tuple tracerPoints = null) { - if (particleCount >= MaxParticles || prefab == null || prefab.Sprites.Count == 0) { return null; } - - // this should be optimized for tracers after prototyping - if (tracerPoints == null) + if (prefab == null || prefab.Sprites.Count == 0) { return null; } + + if (particleCount >= MaxParticles) { - Vector2 particleEndPos = prefab.CalculateEndPosition(position, velocity); - - Vector2 minPos = new Vector2(Math.Min(position.X, particleEndPos.X), Math.Min(position.Y, particleEndPos.Y)); - Vector2 maxPos = new Vector2(Math.Max(position.X, particleEndPos.X), Math.Max(position.Y, particleEndPos.Y)); - - Rectangle expandedViewRect = MathUtils.ExpandRect(cam.WorldView, MaxOutOfViewDist); - - if (minPos.X > expandedViewRect.Right || maxPos.X < expandedViewRect.X) { return null; } - if (minPos.Y > expandedViewRect.Y || maxPos.Y < expandedViewRect.Y - expandedViewRect.Height) { return null; } + for (int i = 0; i < particleCount; i++) + { + if (particles[i].Prefab.Priority < prefab.Priority) + { + RemoveParticle(i); + break; + } + } + if (particleCount >= MaxParticles) { return null; } } + Vector2 particleEndPos = prefab.CalculateEndPosition(position, velocity); + + Vector2 minPos = new Vector2(Math.Min(position.X, particleEndPos.X), Math.Min(position.Y, particleEndPos.Y)); + Vector2 maxPos = new Vector2(Math.Max(position.X, particleEndPos.X), Math.Max(position.Y, particleEndPos.Y)); + + if (tracerPoints != null) + { + minPos = new Vector2( + Math.Min(Math.Min(minPos.X, tracerPoints.Item1.X), tracerPoints.Item2.X), + Math.Min(Math.Min(minPos.Y, tracerPoints.Item1.Y), tracerPoints.Item2.Y)); + maxPos = new Vector2( + Math.Max(Math.Max(maxPos.X, tracerPoints.Item1.X), tracerPoints.Item2.X), + Math.Max(Math.Max(maxPos.Y, tracerPoints.Item1.Y), tracerPoints.Item2.Y)); + } + + Rectangle expandedViewRect = MathUtils.ExpandRect(cam.WorldView, MaxOutOfViewDist); + + if (minPos.X > expandedViewRect.Right || maxPos.X < expandedViewRect.X) { return null; } + if (minPos.Y > expandedViewRect.Y || maxPos.Y < expandedViewRect.Y - expandedViewRect.Height) { return null; } + if (particles[particleCount] == null) particles[particleCount] = new Particle(); particles[particleCount].Init(prefab, position, velocity, rotation, hullGuess, drawOnTop, collisionIgnoreTimer, tracerPoints: tracerPoints); diff --git a/Barotrauma/BarotraumaClient/ClientSource/Particles/ParticlePrefab.cs b/Barotrauma/BarotraumaClient/ClientSource/Particles/ParticlePrefab.cs index 104789a59..9882048e8 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Particles/ParticlePrefab.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Particles/ParticlePrefab.cs @@ -180,16 +180,13 @@ namespace Barotrauma.Particles [Editable, Serialize("1.0,1.0", false, description: "The maximum initial size of the particle.")] public Vector2 StartSizeMax { get; private set; } - [Editable] - [Serialize("0.0,0.0", false, description: "How much the size of the particle changes per second. The rate of growth for each particle is randomize between SizeChangeMin and SizeChangeMax.")] + [Editable, Serialize("0.0,0.0", false, description: "How much the size of the particle changes per second. The rate of growth for each particle is randomize between SizeChangeMin and SizeChangeMax.")] public Vector2 SizeChangeMin { get; private set; } - [Editable] - [Serialize("0.0,0.0", false, description: "How much the size of the particle changes per second. The rate of growth for each particle is randomize between SizeChangeMin and SizeChangeMax.")] + [Editable, Serialize("0.0,0.0", false, description: "How much the size of the particle changes per second. The rate of growth for each particle is randomize between SizeChangeMin and SizeChangeMax.")] public Vector2 SizeChangeMax { get; private set; } - [Editable] - [Serialize(0.0f, false, description: "How many seconds it takes for the particle to grow to it's initial size.")] + [Editable, Serialize(0.0f, false, description: "How many seconds it takes for the particle to grow to it's initial size.")] public float GrowTime { get; private set; } //rendering ----------------------------------------- @@ -215,6 +212,9 @@ namespace Barotrauma.Particles [Editable, Serialize(ParticleBlendState.AlphaBlend, false, description: "The type of blending to use when rendering the particle.")] public ParticleBlendState BlendState { get; private set; } + [Editable, Serialize(0, false, description: "Particles with a higher priority can replace lower-priority ones if the maximum number of active particles has been reached.")] + public int Priority { get; private set; } + //animation ----------------------------------------- [Editable(0.0f, float.MaxValue), Serialize(1.0f, false, description: "The duration of the particle's animation cycle (if it's animated).")] diff --git a/Barotrauma/BarotraumaClient/ClientSource/Program.cs b/Barotrauma/BarotraumaClient/ClientSource/Program.cs index 0ee887f01..b8beb4aa6 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Program.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Program.cs @@ -54,9 +54,11 @@ namespace Barotrauma executableDir = Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location); Directory.SetCurrentDirectory(executableDir); SteamManager.Initialize(); + EnableNvOptimus(); Game = new GameMain(args); Game.Run(); Game.Dispose(); + FreeNvOptimus(); CrossThread.ProcessTasks(); } @@ -263,6 +265,27 @@ namespace Barotrauma " if you'd like to help fix this bug, you may post it on Barotrauma's GitHub issue tracker: https://github.com/Regalis11/Barotrauma/issues/", filePath); } } - } + + private static IntPtr nvApi64Dll = IntPtr.Zero; + private static void EnableNvOptimus() + { +#if WINDOWS && X64 + // We force load nvapi64.dll so nvidia gives us the dedicated GPU on optimus laptops. + // This is not a method for getting optimus that is documented by nvidia, but it works, so... + if (NativeLibrary.TryLoad("nvapi64.dll", out nvApi64Dll)) + { + DebugConsole.Log("Loaded nvapi64.dll successfully"); + } #endif } + + private static void FreeNvOptimus() + { + #warning TODO: determine if we can do this safely + //NativeLibrary.Free(nvApi64Dll); + } + + } +#endif + + } diff --git a/Barotrauma/BarotraumaClient/ClientSource/Screens/CampaignSetupUI.cs b/Barotrauma/BarotraumaClient/ClientSource/Screens/CampaignSetupUI.cs index 7882cc77b..32a158105 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Screens/CampaignSetupUI.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Screens/CampaignSetupUI.cs @@ -466,7 +466,7 @@ namespace Barotrauma { var sub = child.UserData as SubmarineInfo; if (sub == null) { return; } - child.Visible = string.IsNullOrEmpty(filter) ? true : sub.DisplayName.ToLower().Contains(filter.ToLower()); + child.Visible = string.IsNullOrEmpty(filter) || sub.DisplayName.ToLower().Contains(filter.ToLower()); } } diff --git a/Barotrauma/BarotraumaClient/ClientSource/Screens/CampaignUI.cs b/Barotrauma/BarotraumaClient/ClientSource/Screens/CampaignUI.cs index 947077154..27efd044d 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Screens/CampaignUI.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Screens/CampaignUI.cs @@ -628,7 +628,7 @@ namespace Barotrauma { TextGetter = () => { - return TextManager.AddPunctuation(':', TextManager.Get("Missions"), $"{Campaign.NumberOfMissionsAtLocation(destination)}/{Campaign.Settings.MaxMissionCount}"); + return TextManager.AddPunctuation(':', TextManager.Get("Missions"), $"{Campaign.NumberOfMissionsAtLocation(destination)}/{Campaign.Settings.TotalMaxMissionCount}"); } }; @@ -735,7 +735,7 @@ namespace Barotrauma private void UpdateMaxMissions(Location location) { - hasMaxMissions = Campaign.NumberOfMissionsAtLocation(location) >= Campaign.Settings.MaxMissionCount; + hasMaxMissions = Campaign.NumberOfMissionsAtLocation(location) >= Campaign.Settings.TotalMaxMissionCount; } } } diff --git a/Barotrauma/BarotraumaClient/ClientSource/Screens/CharacterEditor/Wizard.cs b/Barotrauma/BarotraumaClient/ClientSource/Screens/CharacterEditor/Wizard.cs index 6d6d44024..e5a343cbe 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Screens/CharacterEditor/Wizard.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Screens/CharacterEditor/Wizard.cs @@ -262,7 +262,7 @@ namespace Barotrauma.CharacterEditor { FileSelection.OnFileSelected = (file) => { - string relativePath = UpdaterUtil.GetRelativePath(Path.GetFullPath(file), Environment.CurrentDirectory); + string relativePath = Path.GetRelativePath(Environment.CurrentDirectory, Path.GetFullPath(file)); string destinationPath = relativePath; //copy file to XML path if it's not located relative to the game's files diff --git a/Barotrauma/BarotraumaClient/ClientSource/Screens/EventEditor/EventEditorScreen.cs b/Barotrauma/BarotraumaClient/ClientSource/Screens/EventEditor/EventEditorScreen.cs index 75bbf5cfc..d85bf42ee 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Screens/EventEditor/EventEditorScreen.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Screens/EventEditor/EventEditorScreen.cs @@ -541,7 +541,7 @@ namespace Barotrauma private XElement? ExportXML() { - XElement mainElement = new XElement("ScriptedEvent", new XAttribute("identifier", projectName.RemoveWhitespace().ToLower())); + XElement mainElement = new XElement("ScriptedEvent", new XAttribute("identifier", projectName.RemoveWhitespace().ToLowerInvariant())); EditorNode? startNode = null; foreach (EditorNode eventNode in nodeList.Where(node => node is EventNode || node is SpecialNode)) { diff --git a/Barotrauma/BarotraumaClient/ClientSource/Screens/GameScreen.cs b/Barotrauma/BarotraumaClient/ClientSource/Screens/GameScreen.cs index a179926ae..a2420730e 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Screens/GameScreen.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Screens/GameScreen.cs @@ -25,6 +25,7 @@ namespace Barotrauma public Effect PostProcessEffect { get; private set; } public Effect GradientEffect { get; private set; } public Effect GrainEffect { get; private set; } + public Effect BlueprintEffect { get; set; } public GameScreen(GraphicsDevice graphics, ContentManager content) { @@ -43,12 +44,14 @@ namespace Barotrauma PostProcessEffect = content.Load("Effects/postprocess_opengl"); GradientEffect = content.Load("Effects/gradientshader_opengl"); GrainEffect = content.Load("Effects/grainshader_opengl"); + BlueprintEffect = content.Load("Effects/blueprintshader_opengl"); #else //var blurEffect = content.Load("Effects/blurshader"); damageEffect = content.Load("Effects/damageshader"); PostProcessEffect = content.Load("Effects/postprocess"); GradientEffect = content.Load("Effects/gradientshader"); GrainEffect = content.Load("Effects/grainshader"); + BlueprintEffect = content.Load("Effects/blueprintshader"); #endif damageStencil = TextureLoader.FromFile("Content/Map/walldamage.png"); diff --git a/Barotrauma/BarotraumaClient/ClientSource/Screens/NetLobbyScreen.cs b/Barotrauma/BarotraumaClient/ClientSource/Screens/NetLobbyScreen.cs index 7e9f8c97a..071349710 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Screens/NetLobbyScreen.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Screens/NetLobbyScreen.cs @@ -2020,7 +2020,8 @@ namespace Barotrauma var playerFrame = (GUITextBlock)PlayerList.Content.FindChild(client); if (playerFrame == null) { return; } playerFrame.Text = client.Name; - + + playerFrame.ToolTip = ""; Color color = Color.White; if (SelectedMode == GameModePreset.PvP) { @@ -2028,15 +2029,28 @@ namespace Barotrauma { case CharacterTeamType.Team1: color = new Color(0, 110, 150, 255); + playerFrame.ToolTip = TextManager.GetWithVariable("teampreference", "[team]", TextManager.Get("teampreference.team1")); break; case CharacterTeamType.Team2: color = new Color(150, 110, 0, 255); + playerFrame.ToolTip = TextManager.GetWithVariable("teampreference", "[team]", TextManager.Get("teampreference.team2")); + break; + default: + playerFrame.ToolTip = TextManager.GetWithVariable("teampreference", "[team]", TextManager.Get("none")); break; } } - else if (JobPrefab.Prefabs.ContainsKey(client.PreferredJob)) + else { - color = JobPrefab.Prefabs[client.PreferredJob].UIColor; + if (JobPrefab.Prefabs.ContainsKey(client.PreferredJob)) + { + color = JobPrefab.Prefabs[client.PreferredJob].UIColor; + playerFrame.ToolTip = TextManager.GetWithVariable("jobpreference", "[job]", JobPrefab.Prefabs[client.PreferredJob].Name); + } + else + { + playerFrame.ToolTip = TextManager.GetWithVariable("jobpreference", "[job]", TextManager.Get("none")); + } } playerFrame.Color = color * 0.4f; playerFrame.HoverColor = color * 0.6f; diff --git a/Barotrauma/BarotraumaClient/ClientSource/Screens/ServerListScreen.cs b/Barotrauma/BarotraumaClient/ClientSource/Screens/ServerListScreen.cs index 5ac93c54e..4430efdb1 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Screens/ServerListScreen.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Screens/ServerListScreen.cs @@ -24,7 +24,8 @@ namespace Barotrauma private GUIFrame menu; private GUIListBox serverList; - private GUIFrame serverPreview; + private GUIFrame serverPreviewContainer; + private GUIListBox serverPreview; private GUIButton joinButton; private ServerInfo selectedServer; @@ -340,11 +341,11 @@ namespace Barotrauma void RecalculateHolder() { float listContainerSubtract = filtersHolder.Visible ? sidebarWidth : 0.0f; - listContainerSubtract += serverPreview.Visible ? sidebarWidth : 0.0f; + listContainerSubtract += serverPreviewContainer.Visible ? sidebarWidth : 0.0f; float toggleButtonsSubtract = 1.1f * filterToggle.Rect.Width / serverListHolder.Rect.Width; listContainerSubtract += filterToggle.Visible ? toggleButtonsSubtract : 0.0f; - listContainerSubtract += serverPreviewToggleButton.Visible ? toggleButtonsSubtract : 0.0f; + listContainerSubtract += serverPreviewContainer.Visible ? toggleButtonsSubtract : 0.0f; serverListContainer.RectTransform.RelativeSize = new Vector2(1.0f - listContainerSubtract, 1.0f); serverListHolder.Recalculate(); @@ -567,17 +568,17 @@ namespace Barotrauma { joinButton.Enabled = true; selectedServer = serverInfo; - if (!serverPreview.Visible) + if (!serverPreviewContainer.Visible) { - serverPreview.RectTransform.RelativeSize = new Vector2(sidebarWidth, 1.0f); + serverPreviewContainer.RectTransform.RelativeSize = new Vector2(sidebarWidth, 1.0f); serverPreviewToggleButton.Visible = true; serverPreviewToggleButton.IgnoreLayoutGroups = false; - serverPreview.Visible = true; - serverPreview.IgnoreLayoutGroups = false; + serverPreviewContainer.Visible = true; + serverPreviewContainer.IgnoreLayoutGroups = false; RecalculateHolder(); } - serverInfo.CreatePreviewWindow(serverPreview); - btn.Children.ForEach(c => c.SpriteEffects = serverPreview.Visible ? SpriteEffects.None : SpriteEffects.FlipHorizontally); + serverInfo.CreatePreviewWindow(serverPreview.Content); + btn.Children.ForEach(c => c.SpriteEffects = serverPreviewContainer.Visible ? SpriteEffects.None : SpriteEffects.FlipHorizontally); } return true; } @@ -592,24 +593,28 @@ namespace Barotrauma Visible = false, OnClicked = (btn, userdata) => { - serverPreview.RectTransform.RelativeSize = new Vector2(0.2f, 1.0f); - serverPreview.Visible = !serverPreview.Visible; - serverPreview.IgnoreLayoutGroups = !serverPreview.Visible; + serverPreviewContainer.RectTransform.RelativeSize = new Vector2(0.2f, 1.0f); + serverPreviewContainer.Visible = !serverPreviewContainer.Visible; + serverPreviewContainer.IgnoreLayoutGroups = !serverPreviewContainer.Visible; RecalculateHolder(); - btn.Children.ForEach(c => c.SpriteEffects = serverPreview.Visible ? SpriteEffects.None : SpriteEffects.FlipHorizontally); + btn.Children.ForEach(c => c.SpriteEffects = serverPreviewContainer.Visible ? SpriteEffects.None : SpriteEffects.FlipHorizontally); return true; } }; - serverPreview = new GUIFrame(new RectTransform(new Vector2(sidebarWidth, 1.0f), serverListHolder.RectTransform, Anchor.Center), style: null) + serverPreviewContainer = new GUIFrame(new RectTransform(new Vector2(sidebarWidth, 1.0f), serverListHolder.RectTransform, Anchor.Center), style: null) { Color = new Color(12, 14, 15, 255) * 0.5f, OutlineColor = Color.Black, IgnoreLayoutGroups = true, Visible = false }; + serverPreview = new GUIListBox(new RectTransform(Vector2.One, serverPreviewContainer.RectTransform, Anchor.Center)) + { + Padding = Vector4.One * 10 * GUI.Scale + }; // Spacing new GUIFrame(new RectTransform(new Vector2(1.0f, 0.02f), bottomRow.RectTransform), style: null); @@ -1697,7 +1702,7 @@ namespace Barotrauma UpdateFriendsList(); serverList.ClearChildren(); - serverPreview.ClearChildren(); + serverPreview.Content.ClearChildren(); joinButton.Enabled = false; selectedServer = null; diff --git a/Barotrauma/BarotraumaClient/ClientSource/Screens/SteamWorkshopScreen.cs b/Barotrauma/BarotraumaClient/ClientSource/Screens/SteamWorkshopScreen.cs index e40a03ece..350ff7ac5 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Screens/SteamWorkshopScreen.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Screens/SteamWorkshopScreen.cs @@ -1604,7 +1604,7 @@ namespace Barotrauma if (string.IsNullOrEmpty(file) || !File.Exists(file)) { continue; } string modFolder = Path.GetDirectoryName(itemContentPackage.Path); - string filePathRelativeToModFolder = UpdaterUtil.GetRelativePath(file, Path.Combine(Environment.CurrentDirectory, modFolder)); + string filePathRelativeToModFolder = Path.GetRelativePath(Path.Combine(Environment.CurrentDirectory, modFolder), file); //file is not inside the mod folder, we need to move it if (filePathRelativeToModFolder.StartsWith("..") || diff --git a/Barotrauma/BarotraumaClient/ClientSource/Screens/TestScreen.cs b/Barotrauma/BarotraumaClient/ClientSource/Screens/TestScreen.cs new file mode 100644 index 000000000..0deb694c4 --- /dev/null +++ b/Barotrauma/BarotraumaClient/ClientSource/Screens/TestScreen.cs @@ -0,0 +1,125 @@ +#nullable enable +using System; +using System.Linq; +using Barotrauma.Items.Components; +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; + +/* + * This screen only exists because I'm going mental without access to EnC on Linux. + * This is fucking stupid and horrible. + * Remember to remove this crap eventually. + * - Markus + */ +namespace Barotrauma +{ + class TestScreen : EditorScreen + { + public override Camera Cam { get; } + + private Item? miniMapItem; + + private Submarine? submarine; + private Character? dummyCharacter; + public static Effect BlueprintEffect; + + public TestScreen() + { + Cam = new Camera(); + BlueprintEffect = GameMain.GameScreen.BlueprintEffect; + + new GUIButton(new RectTransform(new Point(256, 256), Frame.RectTransform), "Reload shader") + { + OnClicked = (button, o) => + { + BlueprintEffect.Dispose(); + GameMain.Instance.Content.Unload(); + BlueprintEffect = GameMain.Instance.Content.Load("Effects/blueprintshader_opengl"); + GameMain.GameScreen.BlueprintEffect = BlueprintEffect; + return true; + } + }; + } + + public override void Select() + { + base.Select(); + + if (dummyCharacter is { Removed: false }) + { + dummyCharacter?.Remove(); + } + + // ???????? + submarine = new Submarine(SubmarineInfo.SavedSubmarines.FirstOrDefault(info => info.Name.Equals("Kastrull", StringComparison.OrdinalIgnoreCase))); + miniMapItem = new Item(ItemPrefab.Find(null, "statusmonitor"), Vector2.Zero, submarine); + MiniMap miniMap = miniMapItem.GetComponent(); + miniMap.PowerConsumption = 0; + + dummyCharacter = Character.Create(CharacterPrefab.HumanSpeciesName, Vector2.Zero, "", id: Entity.DummyID, hasAi: false); + dummyCharacter.Info.Name = "Galldren"; + dummyCharacter.Inventory.CreateSlots(); + + Character.Controlled = dummyCharacter; + GameMain.World.ProcessChanges(); + } + + public override void AddToGUIUpdateList() + { + Frame.AddToGUIUpdateList(); + CharacterHUD.AddToGUIUpdateList(dummyCharacter); + dummyCharacter?.SelectedConstruction?.AddToGUIUpdateList(); + } + + public override void Update(double deltaTime) + { + base.Update(deltaTime); + + if (dummyCharacter is { } dummy && miniMapItem is { } item) + { + if (dummy.SelectedConstruction != item) + { + dummy.SelectedConstruction = item; + } + dummy.SelectedConstruction?.UpdateHUD(Cam, dummy, (float)deltaTime); + Vector2 pos = FarseerPhysics.ConvertUnits.ToSimUnits(item.Position); + foreach (Limb limb in dummy.AnimController.Limbs) + { + limb.body.SetTransform(pos, 0.0f); + } + + if (dummy.AnimController?.Collider is { } collider) + { + collider.SetTransform(pos, 0); + } + + dummy.ControlLocalPlayer((float)deltaTime, Cam, false); + dummy.Control((float)deltaTime, Cam); + dummy.Submarine = submarine; + } + } + + public override void Draw(double deltaTime, GraphicsDevice graphics, SpriteBatch spriteBatch) + { + base.Draw(deltaTime, graphics, spriteBatch); + graphics.Clear(BackgroundColor); + + spriteBatch.Begin(SpriteSortMode.BackToFront, transformMatrix: Cam.Transform); + miniMapItem?.Draw(spriteBatch, false); + if (dummyCharacter is { } dummy) + { + dummyCharacter.DrawFront(spriteBatch, Cam); + dummyCharacter.Draw(spriteBatch, Cam); + } + spriteBatch.End(); + + spriteBatch.Begin(SpriteSortMode.Deferred, samplerState: GUI.SamplerState); + + GUI.Draw(Cam, spriteBatch); + + dummyCharacter?.DrawHUD(spriteBatch, Cam, false); + + spriteBatch.End(); + } + } +} \ No newline at end of file diff --git a/Barotrauma/BarotraumaClient/ClientSource/Sounds/SoundPlayer.cs b/Barotrauma/BarotraumaClient/ClientSource/Sounds/SoundPlayer.cs index de7051846..f6e679850 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Sounds/SoundPlayer.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Sounds/SoundPlayer.cs @@ -38,6 +38,7 @@ namespace Barotrauma public readonly string File; public readonly string Type; public readonly bool DuckVolume; + public readonly float Volume; public readonly Vector2 IntensityRange; @@ -52,6 +53,7 @@ namespace Barotrauma this.Type = element.GetAttributeString("type", "").ToLowerInvariant(); this.IntensityRange = element.GetAttributeVector2("intensityrange", new Vector2(0.0f, 100.0f)); this.DuckVolume = element.GetAttributeBool("duckvolume", false); + this.Volume = element.GetAttributeFloat("volume", 1.0f); this.ContinueFromPreviousTime = element.GetAttributeBool("continuefromprevioustime", false); this.Element = element; } @@ -816,6 +818,8 @@ namespace Barotrauma } } + int noiseLoopIndex = 1; + updateMusicTimer -= deltaTime; if (updateMusicTimer <= 0.0f) { @@ -851,7 +855,6 @@ namespace Barotrauma } } - int noiseLoopIndex = 1; if (Level.Loaded?.Type == LevelData.LevelType.LocationConnection) { // Find background noise loop for the current biome @@ -917,7 +920,7 @@ namespace Barotrauma { //mute the channel musicChannel[i].Gain = MathHelper.Lerp(musicChannel[i].Gain, 0.0f, MusicLerpSpeed * deltaTime); - if (musicChannel[i].Gain < 0.01f) DisposeMusicChannel(i); + if (musicChannel[i].Gain < 0.01f) { DisposeMusicChannel(i); } } } //something should be playing, but the targetMusic is invalid @@ -932,7 +935,7 @@ namespace Barotrauma if (musicChannel[i] != null && musicChannel[i].IsPlaying) { musicChannel[i].Gain = MathHelper.Lerp(musicChannel[i].Gain, 0.0f, MusicLerpSpeed * deltaTime); - if (musicChannel[i].Gain < 0.01f) DisposeMusicChannel(i); + if (musicChannel[i].Gain < 0.01f) { DisposeMusicChannel(i); } } //channel free now, start playing the correct clip if (currentMusic[i] == null || (musicChannel[i] == null || !musicChannel[i].IsPlaying)) @@ -949,7 +952,7 @@ namespace Barotrauma targetMusic[i] = null; break; } - musicChannel[i] = currentMusic[i].Play(0.0f, "music"); + musicChannel[i] = currentMusic[i].Play(0.0f, i == noiseLoopIndex ? "" : "music"); if (targetMusic[i].ContinueFromPreviousTime) { musicChannel[i].StreamSeekPos = targetMusic[i].PreviousTime; @@ -963,13 +966,13 @@ namespace Barotrauma if (musicChannel[i] == null || !musicChannel[i].IsPlaying) { musicChannel[i]?.Dispose(); - musicChannel[i] = currentMusic[i].Play(0.0f, "music"); + musicChannel[i] = currentMusic[i].Play(0.0f, i == noiseLoopIndex ? "" : "music"); musicChannel[i].Looping = true; } - float targetGain = 1.0f; + float targetGain = targetMusic[i].Volume; if (targetMusic[i].DuckVolume) { - targetGain = (float)Math.Sqrt(1.0f / activeTrackCount); + targetGain *= (float)Math.Sqrt(1.0f / activeTrackCount); } musicChannel[i].Gain = MathHelper.Lerp(musicChannel[i].Gain, targetGain, MusicLerpSpeed * deltaTime); } diff --git a/Barotrauma/BarotraumaClient/ClientSource/Utils/ToolBox.cs b/Barotrauma/BarotraumaClient/ClientSource/Utils/ToolBox.cs index d5847be30..327dac75a 100644 --- a/Barotrauma/BarotraumaClient/ClientSource/Utils/ToolBox.cs +++ b/Barotrauma/BarotraumaClient/ClientSource/Utils/ToolBox.cs @@ -1,9 +1,10 @@ using Microsoft.Xna.Framework; using System; using System.Collections.Generic; +using System.Collections.Immutable; using System.Linq; using System.Text; -using System.Text.RegularExpressions; +using Color = Microsoft.Xna.Framework.Color; namespace Barotrauma { @@ -54,6 +55,225 @@ namespace Barotrauma return isInside; } + + public static Vector2 GetPolygonBoundingBoxSize(List verticess) + { + float minX = verticess[0].X; + float maxX = verticess[0].X; + float minY = verticess[0].Y; + float maxY = verticess[0].Y; + + foreach (var (vertX, vertY) in verticess) + { + minX = Math.Min(vertX, minX); + maxX = Math.Max(vertX, maxX); + minY = Math.Min(vertY, minY); + maxY = Math.Max(vertY, maxY); + } + + return new Vector2(maxX - minX, maxY - minY); + } + + public static List ScalePolygon(List vertices, Vector2 scale) + { + List newVertices = new List(); + + Vector2 center = GetPolygonCentroid(vertices); + + foreach (Vector2 vert in vertices) + { + Vector2 centerVector = vert - center; + Vector2 centerVectorScale = centerVector * scale; + Vector2 scaledVector = centerVectorScale + center; + newVertices.Add(scaledVector); + } + + return newVertices; + } + + public static Vector2 GetPolygonCentroid(List poly) + { + float accumulatedArea = 0.0f; + float centerX = 0.0f; + float centerY = 0.0f; + + for (int i = 0, j = poly.Count - 1; i < poly.Count; j = i++) + { + float temp = poly[i].X * poly[j].Y - poly[j].X * poly[i].Y; + accumulatedArea += temp; + centerX += (poly[i].X + poly[j].X) * temp; + centerY += (poly[i].Y + poly[j].Y) * temp; + } + + if (Math.Abs(accumulatedArea) < 1E-7f) { return Vector2.Zero; } // Avoid division by zero + + accumulatedArea *= 3f; + return new Vector2(centerX / accumulatedArea, centerY / accumulatedArea); + } + + public static List SnapVertices(List points, int treshold = 1) + { + Stack toCheck = new Stack(); + List newPoints = new List(); + + foreach (Vector2 point in points) + { + toCheck.Push(point); + } + + while (toCheck.TryPop(out Vector2 point)) + { + Vector2 newPoint = new Vector2(point.X, point.Y); + foreach (Vector2 otherPoint in toCheck.Concat(newPoints)) + { + float diffX = Math.Abs(newPoint.X - otherPoint.X), + diffY = Math.Abs(newPoint.Y - otherPoint.Y); + + if (diffX <= treshold) + { + newPoint.X = Math.Max(newPoint.X, otherPoint.X); + } + + if (diffY <= treshold) + { + newPoint.Y = Math.Max(newPoint.Y, otherPoint.Y); + } + } + newPoints.Add(newPoint); + } + + return newPoints; + } + + public static ImmutableArray SnapRectangles(IEnumerable rects, int treshold = 1) + { + List list = new List(); + + List points = new List(); + + foreach (RectangleF rect in rects) + { + points.Add(new Vector2(rect.Left, rect.Top)); + points.Add(new Vector2(rect.Right, rect.Top)); + points.Add(new Vector2(rect.Right, rect.Bottom)); + points.Add(new Vector2(rect.Left, rect.Bottom)); + } + + points = SnapVertices(points, treshold); + + for (int i = 0; i < points.Count; i += 4) + { + Vector2 topLeft = points[i]; + Vector2 bottomRight = points[i + 2]; + + list.Add(new RectangleF(topLeft, bottomRight - topLeft)); + } + + return list.ToImmutableArray(); + } + + public static List> CombineRectanglesIntoShape(IEnumerable rectangles) + { + List points = + (from point in rectangles.SelectMany(RectangleToPoints) + group point by point + into g + where g.Count() % 2 == 1 + select g.Key) + .ToList(); + + List sortedY = points.OrderBy(p => p.Y).ThenByDescending(p => p.X).ToList(); + List sortedX = points.OrderBy(p => p.X).ThenByDescending(p => p.Y).ToList(); + + Dictionary edgesH = new Dictionary(); + Dictionary edgesV = new Dictionary(); + + int i = 0; + while (i < points.Count) + { + float currY = sortedY[i].Y; + + while (i < points.Count && Math.Abs(sortedY[i].Y - currY) < 0.01f) + { + edgesH[sortedY[i]] = sortedY[i + 1]; + edgesH[sortedY[i + 1]] = sortedY[i]; + i += 2; + } + + } + + i = 0; + + while (i < points.Count) + { + float currX = sortedX[i].X; + while (i < points.Count && Math.Abs(sortedX[i].X - currX) < 0.01f) + { + edgesV[sortedX[i]] = sortedX[i + 1]; + edgesV[sortedX[i + 1]] = sortedX[i]; + i += 2; + } + } + + List> polygons = new List>(); + + while (edgesH.Any()) + { + var (key, _) = edgesH.First(); + List<(Vector2 Point, int Direction)> polygon = new List<(Vector2 Point, int Direction)> { (key, 0) }; + edgesH.Remove(key); + + while (true) + { + var (curr, direction) = polygon[^1]; + + if (direction == 0) + { + Vector2 nextVertex = edgesV[curr]; + edgesV.Remove(curr); + polygon.Add((nextVertex, 1)); + } + else + { + Vector2 nextVertex = edgesH[curr]; + edgesH.Remove(curr); + polygon.Add((nextVertex, 0)); + } + + if (polygon[^1] == polygon[0]) + { + polygon.Remove(polygon[^1]); + break; + } + } + + List poly = polygon.Select(t => t.Point).ToList(); + + foreach (Vector2 vertex in poly) + { + if (edgesH.ContainsKey(vertex)) + { + edgesH.Remove(vertex); + } + + if (edgesV.ContainsKey(vertex)) + { + edgesV.Remove(vertex); + } + } + + polygons.Add(poly); + } + + return polygons; + + static IEnumerable RectangleToPoints(RectangleF rect) + { + (float x1, float y1, float x2, float y2) = (rect.Left, rect.Top, rect.Right, rect.Bottom); + Vector2[] pts = { new Vector2(x1, y1), new Vector2(x2, y1), new Vector2(x2, y2), new Vector2(x1, y2) }; + return pts; + } + } // Convert an RGB value into an HLS value. public static Vector3 RgbToHLS(this Color color) diff --git a/Barotrauma/BarotraumaClient/Content/Effects/blueprintshader.xnb b/Barotrauma/BarotraumaClient/Content/Effects/blueprintshader.xnb new file mode 100644 index 0000000000000000000000000000000000000000..8ef4446712b01dd4e2facd95b6493ab5c4f50f75 GIT binary patch literal 2462 zcmb_eOK%%h6h1SyXC?u~R>cCrq84Jo!m^rBpsf^e?ZhE!6Q^-pnTJH3bkbOL$I)c0 z&TZNGKb4-5H?ZqQu= zWC|?gZ~Ngt=jagpZ*@UEXj#Yby_U>&J$T_mMb@(d~oZlU;cRXbN3Cu^y8!NEdXds zW50xTkP`XJ6}bc5^=@$W5@as1$K$7nb{VWCui=~AW$>?R9vg`96ajxrBx6Z-pf!)N zm&jj4G;Dp5?9lL*qzwO!c-aBs0OR$s4;;l?z>C(~_}0 z@+IC?d8T+*)fd-GJ3gpunhR&AVwYjSEE%US-e^EM1v!JBgeBC^orUV$j6@3+~IRF zkr4y-6CJ}w-HdTEnELQs;}|9nc8xJ{)SXdr5D$5bEIKabhF-!PC?m%3?iijmTH*r7 ze4`;_S-6`X?iucyx<9zH$UW+h$0GH2SGGSvF(o)$#DLyIgVnF|kPs2;eb#a(r{v~~ zl9t1mZ!|=9bCNpC=M4D z|4wo_U*xG&1b=5q`#+If|2nkv1G#6=Gw+v99KZTPEYoIus@k`zYg`qXqaSHv`!tqK zzXpTDkU!_+nALy5FhAp{eFn26GXILsHLo#x29F`DURVcl7ZNz;JrBoO>;lLBoz(fW z_}z=`W)}ZfFG%SnYlJMO2i6O6lXlL7J!|sJ9A29Csrn}l09aa zvo$+=*7Ujdzoz}K>G#IlXm7o~w#k15>=i%dvc+H^&WAcu7VAUB#b0VJ)Wfhlqvt&E zgCq6ZA8pm@>pSbUO{vsw*0yD5wOOgvwpZk|hMWc9n1eag&K$SzMtHkfu@*Y#z;E9>h^DHPyRhSb%>P66)`P>2AI1r+xpJrHABOE95-YRS MIyzbuyop8r0nLmnp#T5? literal 0 HcmV?d00001 diff --git a/Barotrauma/BarotraumaClient/Content/Effects/blueprintshader_opengl.xnb b/Barotrauma/BarotraumaClient/Content/Effects/blueprintshader_opengl.xnb new file mode 100644 index 0000000000000000000000000000000000000000..608cdb04cd7e68fcd4635dcb9ce1e1423230e47a GIT binary patch literal 2010 zcmaJ?+iuf95Oo@*&`3f3gq8ZzLTc<>3JB$;>E)pmRkT8tswy(}I$hQAhV>1P(O8DYKNbwv1c5Ul(CM?(b3GVQ#10Y3EspOtPN! zu6GY$oBKgn0_+|c$;G~*8(nhP!>4?}`T*bslQ7hUsV;izqOUFn>SCxaj$p9|MKhlg z&}kd^T=D46xL<{sPa!5iijo6sHutFLoggfbYAum6f11@Ap9$#wn0s8Trj8Aw#8y)B zu|cNZ1jc774}u#jls7aPb1ocArW6yKBrZePm6$V!%q-^bA9UK^I_(`$C=4(@qzO(` z?_^(U?xOVA)RPpQM-(W~7XXw8;O(VEz+N5~hQ7?gc27^LO*~`j26>Hm8yKrl3ZcWC zui8yk4j9z|Goyz@$#R*JSEa-xElxvbB+WRN3k6dk`eist6BSUA06&0oVWnK0&N`C> z<}6GSgH0$?UoJ`%R#MBQ8ZL%_$|~6?^=K2(P!)wlwdsbcC__iE2H4#@sOE7JpT zQJQg7wPItLeKjw7U7NT6G;dZYc2(vA1x3d)T^NU=vW~(Clr2|eLnlhvOO&0HK4k)# z{|h6htba98?R+Qst{lsZRQ_*@q#Nf3$GDt`Z04l-Y8AESEAy#3q8NtrTlBGTVJ$3E z!MN2KwgyEe)v&d&WI|1aV@a*`sEPS8e9LI?RfNTD@Y%Q1*KET&ah9KJ9exPjn5LR2wXD@EDo9{Ziw2=hDJI7u` S=K?-zTBCJk1%avk#lSxT8&p^T literal 0 HcmV?d00001 diff --git a/Barotrauma/BarotraumaClient/LinuxClient.csproj b/Barotrauma/BarotraumaClient/LinuxClient.csproj index 62c0cd40a..dac5130ed 100644 --- a/Barotrauma/BarotraumaClient/LinuxClient.csproj +++ b/Barotrauma/BarotraumaClient/LinuxClient.csproj @@ -6,7 +6,7 @@ Barotrauma FakeFish, Undertow Games Barotrauma - 0.14.9.0 + 0.1500.0.0 Copyright © FakeFish 2018-2020 AnyCPU;x64 Barotrauma diff --git a/Barotrauma/BarotraumaClient/MacClient.csproj b/Barotrauma/BarotraumaClient/MacClient.csproj index ac537775c..6d8757d5b 100644 --- a/Barotrauma/BarotraumaClient/MacClient.csproj +++ b/Barotrauma/BarotraumaClient/MacClient.csproj @@ -6,7 +6,7 @@ Barotrauma FakeFish, Undertow Games Barotrauma - 0.14.9.0 + 0.1500.0.0 Copyright © FakeFish 2018-2020 AnyCPU;x64 Barotrauma diff --git a/Barotrauma/BarotraumaClient/Shaders/Content.mgcb b/Barotrauma/BarotraumaClient/Shaders/Content.mgcb index 901a2171c..e88794f28 100644 --- a/Barotrauma/BarotraumaClient/Shaders/Content.mgcb +++ b/Barotrauma/BarotraumaClient/Shaders/Content.mgcb @@ -67,3 +67,9 @@ /processorParam:DebugMode=Auto /build:grainshader.fx +#begin blueprintshader.fx +/importer:EffectImporter +/processor:EffectProcessor +/processorParam:DebugMode=Auto +/build:blueprintshader.fx + diff --git a/Barotrauma/BarotraumaClient/Shaders/Content_opengl.mgcb b/Barotrauma/BarotraumaClient/Shaders/Content_opengl.mgcb index cb119ed14..16d516848 100644 --- a/Barotrauma/BarotraumaClient/Shaders/Content_opengl.mgcb +++ b/Barotrauma/BarotraumaClient/Shaders/Content_opengl.mgcb @@ -67,3 +67,8 @@ /processorParam:DebugMode=Auto /build:grainshader_opengl.fx +#begin blueprintshader_opengl.fx +/importer:EffectImporter +/processor:EffectProcessor +/processorParam:DebugMode=Auto +/build:blueprintshader_opengl.fx diff --git a/Barotrauma/BarotraumaClient/Shaders/blueprintshader.fx b/Barotrauma/BarotraumaClient/Shaders/blueprintshader.fx new file mode 100644 index 000000000..87048562e --- /dev/null +++ b/Barotrauma/BarotraumaClient/Shaders/blueprintshader.fx @@ -0,0 +1,48 @@ +// vim:ft=hlsl +sampler TextureSampler : register(s0); + +float width; +float height; + +float3 sobel(float2 uv) +{ + float x = 0; + float y = 0; + + float w = 1.0 / width; + float h = 1.0 / height; + + x += tex2D(TextureSampler, uv + float2(-w, -h)) * -1.0; + x += tex2D(TextureSampler, uv + float2(-w, 0)) * -2.0; + x += tex2D(TextureSampler, uv + float2(-w, h)) * -1.0; + + x += tex2D(TextureSampler, uv + float2( w, -h)) * 1.0; + x += tex2D(TextureSampler, uv + float2( w, 0)) * 2.0; + x += tex2D(TextureSampler, uv + float2( w, h)) * 1.0; + + y += tex2D(TextureSampler, uv + float2(-w, -h)) * -1.0; + y += tex2D(TextureSampler, uv + float2( 0, -h)) * -2.0; + y += tex2D(TextureSampler, uv + float2( w, -h)) * -1.0; + + y += tex2D(TextureSampler, uv + float2(-w, h)) * 1.0; + y += tex2D(TextureSampler, uv + float2( 0, h)) * 2.0; + y += tex2D(TextureSampler, uv + float2( w, h)) * 1.0; + + return sqrt(x * x + y * y); +} + +float4 blueprint(float4 position : SV_POSITION, float4 clr : COLOR0, float2 texCoord : TEXCOORD0) : COLOR0 +{ + float3 s = sobel(texCoord); + float a = tex2D(TextureSampler, texCoord).a; + a *= clr.a; + return float4(clr.r + s.r, clr.g + s.g, clr.b + s.b, a); +} + +technique Blueprint +{ + pass Pass1 + { + PixelShader = compile ps_4_0_level_9_1 blueprint(); + } +} diff --git a/Barotrauma/BarotraumaClient/Shaders/blueprintshader_opengl.fx b/Barotrauma/BarotraumaClient/Shaders/blueprintshader_opengl.fx new file mode 100644 index 000000000..4af0d4b36 --- /dev/null +++ b/Barotrauma/BarotraumaClient/Shaders/blueprintshader_opengl.fx @@ -0,0 +1,48 @@ +// vim:ft=hlsl +sampler TextureSampler : register(s0); + +float width; +float height; + +float3 sobel(float2 uv) +{ + float x = 0; + float y = 0; + + float w = 1.0 / width; + float h = 1.0 / height; + + x += tex2D(TextureSampler, uv + float2(-w, -h)) * -1.0; + x += tex2D(TextureSampler, uv + float2(-w, 0)) * -2.0; + x += tex2D(TextureSampler, uv + float2(-w, h)) * -1.0; + + x += tex2D(TextureSampler, uv + float2( w, -h)) * 1.0; + x += tex2D(TextureSampler, uv + float2( w, 0)) * 2.0; + x += tex2D(TextureSampler, uv + float2( w, h)) * 1.0; + + y += tex2D(TextureSampler, uv + float2(-w, -h)) * -1.0; + y += tex2D(TextureSampler, uv + float2( 0, -h)) * -2.0; + y += tex2D(TextureSampler, uv + float2( w, -h)) * -1.0; + + y += tex2D(TextureSampler, uv + float2(-w, h)) * 1.0; + y += tex2D(TextureSampler, uv + float2( 0, h)) * 2.0; + y += tex2D(TextureSampler, uv + float2( w, h)) * 1.0; + + return sqrt(x * x + y * y); +} + +float4 blueprint(float4 position : SV_POSITION, float4 clr : COLOR0, float2 texCoord : TEXCOORD0) : COLOR0 +{ + float3 s = sobel(texCoord); + float a = tex2D(TextureSampler, texCoord).a; + a *= clr.a; + return float4(clr.r + s.r, clr.g + s.g, clr.b + s.b, a); +} + +technique Blueprint +{ + pass Pass1 + { + PixelShader = compile ps_3_0 blueprint(); + } +} diff --git a/Barotrauma/BarotraumaClient/WindowsClient.csproj b/Barotrauma/BarotraumaClient/WindowsClient.csproj index c597f6633..bc67e5f17 100644 --- a/Barotrauma/BarotraumaClient/WindowsClient.csproj +++ b/Barotrauma/BarotraumaClient/WindowsClient.csproj @@ -6,7 +6,7 @@ Barotrauma FakeFish, Undertow Games Barotrauma - 0.14.9.0 + 0.1500.0.0 Copyright © FakeFish 2018-2020 AnyCPU;x64 Barotrauma diff --git a/Barotrauma/BarotraumaServer/LinuxServer.csproj b/Barotrauma/BarotraumaServer/LinuxServer.csproj index 4c90c5c2e..d563f8dfa 100644 --- a/Barotrauma/BarotraumaServer/LinuxServer.csproj +++ b/Barotrauma/BarotraumaServer/LinuxServer.csproj @@ -6,7 +6,7 @@ Barotrauma FakeFish, Undertow Games Barotrauma Dedicated Server - 0.14.9.0 + 0.1500.0.0 Copyright © FakeFish 2018-2020 AnyCPU;x64 DedicatedServer diff --git a/Barotrauma/BarotraumaServer/MacServer.csproj b/Barotrauma/BarotraumaServer/MacServer.csproj index 403968026..79640545b 100644 --- a/Barotrauma/BarotraumaServer/MacServer.csproj +++ b/Barotrauma/BarotraumaServer/MacServer.csproj @@ -6,7 +6,7 @@ Barotrauma FakeFish, Undertow Games Barotrauma Dedicated Server - 0.14.9.0 + 0.1500.0.0 Copyright © FakeFish 2018-2020 AnyCPU;x64 DedicatedServer diff --git a/Barotrauma/BarotraumaServer/ServerSource/Characters/Character.cs b/Barotrauma/BarotraumaServer/ServerSource/Characters/Character.cs index acf0f00de..f9f51b713 100644 --- a/Barotrauma/BarotraumaServer/ServerSource/Characters/Character.cs +++ b/Barotrauma/BarotraumaServer/ServerSource/Characters/Character.cs @@ -46,5 +46,10 @@ namespace Barotrauma } } } + + partial void OnMoneyChanged(int prevAmount, int newAmount) + { + GameMain.NetworkMember.CreateEntityEvent(this, new object[] { NetEntityEvent.Type.UpdateMoney }); + } } } diff --git a/Barotrauma/BarotraumaServer/ServerSource/Characters/CharacterInfo.cs b/Barotrauma/BarotraumaServer/ServerSource/Characters/CharacterInfo.cs index f4d7baa52..148bfeda3 100644 --- a/Barotrauma/BarotraumaServer/ServerSource/Characters/CharacterInfo.cs +++ b/Barotrauma/BarotraumaServer/ServerSource/Characters/CharacterInfo.cs @@ -2,6 +2,7 @@ using Microsoft.Xna.Framework; using System; using System.Collections.Generic; +using System.Linq; namespace Barotrauma { @@ -22,6 +23,14 @@ namespace Barotrauma } } + partial void OnExperienceChanged(int prevAmount, int newAmount, Vector2 textPopupPos) + { + if (Math.Abs(prevAmount - newAmount) > 0) + { + GameMain.NetworkMember.CreateEntityEvent(Character, new object[] { NetEntityEvent.Type.UpdateExperience }); + } + } + public void ServerWrite(IWriteMessage msg) { msg.Write(ID); @@ -53,6 +62,17 @@ namespace Barotrauma msg.Write((byte)0); } // TODO: animations + msg.Write((byte)savedStatValues.SelectMany(s => s.Value).Count()); + foreach (var savedStatValuePair in savedStatValues) + { + foreach (var savedStatValue in savedStatValuePair.Value) + { + msg.Write((byte)savedStatValuePair.Key); + msg.Write(savedStatValue.StatIdentifier); + msg.Write(savedStatValue.StatValue); + msg.Write(savedStatValue.RemoveOnDeath); + } + } } } } diff --git a/Barotrauma/BarotraumaServer/ServerSource/Characters/CharacterNetworking.cs b/Barotrauma/BarotraumaServer/ServerSource/Characters/CharacterNetworking.cs index bcd25ddf9..f5c86cae2 100644 --- a/Barotrauma/BarotraumaServer/ServerSource/Characters/CharacterNetworking.cs +++ b/Barotrauma/BarotraumaServer/ServerSource/Characters/CharacterNetworking.cs @@ -238,7 +238,7 @@ namespace Barotrauma break; case ClientNetObject.ENTITY_STATE: - int eventType = msg.ReadRangedInteger(0, 3); + int eventType = msg.ReadRangedInteger(0, 4); switch (eventType) { case 0: @@ -268,8 +268,35 @@ namespace Barotrauma if (IsIncapacitated) { var causeOfDeath = CharacterHealth.GetCauseOfDeath(); - Kill(causeOfDeath.First, causeOfDeath.Second); + Kill(causeOfDeath.type, causeOfDeath.affliction); } + break; + case 3: // NetEntityEvent.Type.UpdateTalents + if (c.Character != this) + { +#if DEBUG + DebugConsole.Log("Received a character update message from a client who's not controlling the character"); +#endif + return; + } + + // get the full list of talents from the player, only give the ones + // that are not already given (or otherwise not viable) + ushort talentCount = msg.ReadUInt16(); + List talentSelection = new List(); + for (int i = 0; i < talentCount; i++) + { + UInt32 talentIdentifier = msg.ReadUInt32(); + var prefab = TalentPrefab.TalentPrefabs.Find(p => p.UIntIdentifier == talentIdentifier); + if (prefab != null) { talentSelection.Add(prefab.Identifier); } + } + talentSelection = TalentTree.CheckTalentSelection(this, talentSelection); + + foreach (string talent in talentSelection) + { + GiveTalent(talent); + } + break; } break; @@ -283,7 +310,7 @@ namespace Barotrauma if (extraData != null) { - const int min = 0, max = 9; + const int min = 0, max = 12; switch ((NetEntityEvent.Type)extraData[0]) { case NetEntityEvent.Type.InventoryState: @@ -394,6 +421,22 @@ namespace Barotrauma msg.Write(inventoryItemIDs[i]); } break; + case NetEntityEvent.Type.UpdateExperience: + msg.WriteRangedInteger(10, min, max); + msg.Write(Info.ExperiencePoints); + break; + case NetEntityEvent.Type.UpdateTalents: + msg.WriteRangedInteger(11, min, max); + msg.Write((ushort)characterTalents.Count); + foreach (var unlockedTalent in characterTalents) + { + msg.Write(unlockedTalent.Prefab.UIntIdentifier); + } + break; + case NetEntityEvent.Type.UpdateMoney: + msg.WriteRangedInteger(12, min, max); + msg.Write(GameMain.GameSession.Campaign.Money); + break; default: DebugConsole.ThrowError("Invalid NetworkEvent type for entity " + ToString() + " (" + (NetEntityEvent.Type)extraData[0] + ")"); break; @@ -499,7 +542,7 @@ namespace Barotrauma if (writeStatus) { WriteStatus(tempBuffer); - (AIController as EnemyAIController)?.PetBehavior?.ServerWrite(tempBuffer); + AIController?.ServerWrite(tempBuffer); HealthUpdatePending = false; } diff --git a/Barotrauma/BarotraumaServer/ServerSource/DebugConsole.cs b/Barotrauma/BarotraumaServer/ServerSource/DebugConsole.cs index 4e69294a8..9401b8cfb 100644 --- a/Barotrauma/BarotraumaServer/ServerSource/DebugConsole.cs +++ b/Barotrauma/BarotraumaServer/ServerSource/DebugConsole.cs @@ -1187,6 +1187,7 @@ namespace Barotrauma NewMessage("*****************", Color.Lime); GameServer.Log("Console command \"restart\" executed: closing the server...", ServerLog.MessageType.ServerMessage); GameMain.Instance.CloseServer(); + GameMain.Instance.TryStartChildServerRelay(); GameMain.Instance.StartServer(); })); diff --git a/Barotrauma/BarotraumaServer/ServerSource/GameMain.cs b/Barotrauma/BarotraumaServer/ServerSource/GameMain.cs index 95b3ee358..ddaefc903 100644 --- a/Barotrauma/BarotraumaServer/ServerSource/GameMain.cs +++ b/Barotrauma/BarotraumaServer/ServerSource/GameMain.cs @@ -18,7 +18,17 @@ namespace Barotrauma { public static readonly Version Version = Assembly.GetEntryAssembly().GetName().Version; - public static World World; + + private static World world; + public static World World + { + get + { + if (world == null) { world = new World(new Vector2(0, -9.82f)); } + return world; + } + set { world = value; } + } public static GameSettings Config; public static GameServer Server; @@ -123,6 +133,8 @@ namespace Barotrauma ItemAssemblyPrefab.LoadAll(); LevelObjectPrefab.LoadAll(); BallastFloraPrefab.LoadAll(GetFilesOfType(ContentType.MapCreature)); + TalentPrefab.LoadAll(GetFilesOfType(ContentType.Talents)); + TalentTree.LoadAll(GetFilesOfType(ContentType.TalentTrees)); GameModePreset.Init(); DecalManager = new DecalManager(); @@ -179,6 +191,20 @@ namespace Barotrauma } } + public bool TryStartChildServerRelay() + { + for (int i = 0; i < CommandLineArgs.Length; i++) + { + switch (CommandLineArgs[i].Trim()) + { + case "-pipes": + ChildServerRelay.Start(CommandLineArgs[i + 2], CommandLineArgs[i + 1]); + return true; + } + } + return false; + } + public void StartServer() { string name = "Server"; @@ -264,7 +290,7 @@ namespace Barotrauma i++; break; case "-pipes": - ChildServerRelay.Start(CommandLineArgs[i + 2], CommandLineArgs[i + 1]); + //handled in TryStartChildServerRelay i += 2; break; } @@ -323,6 +349,7 @@ namespace Barotrauma Hyper.ComponentModel.HyperTypeDescriptionProvider.Add(typeof(Items.Components.ItemComponent)); Hyper.ComponentModel.HyperTypeDescriptionProvider.Add(typeof(Hull)); + TryStartChildServerRelay(); Init(); StartServer(); diff --git a/Barotrauma/BarotraumaServer/ServerSource/GameSession/GameModes/CharacterCampaignData.cs b/Barotrauma/BarotraumaServer/ServerSource/GameSession/GameModes/CharacterCampaignData.cs index 94152023e..21c9f7c8e 100644 --- a/Barotrauma/BarotraumaServer/ServerSource/GameSession/GameModes/CharacterCampaignData.cs +++ b/Barotrauma/BarotraumaServer/ServerSource/GameSession/GameModes/CharacterCampaignData.cs @@ -56,6 +56,6 @@ namespace Barotrauma public void ApplyOrderData(Character character) { CharacterInfo.ApplyOrderData(character, OrderData); - } + } } } diff --git a/Barotrauma/BarotraumaServer/ServerSource/Items/Components/Machines/Steering.cs b/Barotrauma/BarotraumaServer/ServerSource/Items/Components/Machines/Steering.cs index 7b29551ae..472cf14b9 100644 --- a/Barotrauma/BarotraumaServer/ServerSource/Items/Components/Machines/Steering.cs +++ b/Barotrauma/BarotraumaServer/ServerSource/Items/Components/Machines/Steering.cs @@ -16,6 +16,12 @@ namespace Barotrauma.Items.Components set { unsentChanges = value; } } + protected override void RemoveComponentSpecific() + { + base.RemoveComponentSpecific(); + pathFinder = null; + } + public void ServerRead(ClientNetObject type, IReadMessage msg, Barotrauma.Networking.Client c) { diff --git a/Barotrauma/BarotraumaServer/ServerSource/Items/Item.cs b/Barotrauma/BarotraumaServer/ServerSource/Items/Item.cs index ce354ecaf..c393668e2 100644 --- a/Barotrauma/BarotraumaServer/ServerSource/Items/Item.cs +++ b/Barotrauma/BarotraumaServer/ServerSource/Items/Item.cs @@ -289,6 +289,14 @@ namespace Barotrauma teamID = (byte)wifiComponent.TeamID; break; } + if (teamID == 0) + { + foreach (IdCard idCard in GetComponents()) + { + teamID = (byte)idCard.TeamID; + break; + } + } msg.Write(teamID); bool tagsChanged = tags.Count != prefab.Tags.Count || !tags.All(t => prefab.Tags.Contains(t)); diff --git a/Barotrauma/BarotraumaServer/ServerSource/Networking/ChildServerRelay.cs b/Barotrauma/BarotraumaServer/ServerSource/Networking/ChildServerRelay.cs index 6226d0b2c..584342950 100644 --- a/Barotrauma/BarotraumaServer/ServerSource/Networking/ChildServerRelay.cs +++ b/Barotrauma/BarotraumaServer/ServerSource/Networking/ChildServerRelay.cs @@ -1,12 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using Barotrauma.IO; -using System.IO.Pipes; -using System.Text; -using System.Threading; -using System.Threading.Tasks; -using Microsoft.Win32.SafeHandles; +using System.IO.Pipes; namespace Barotrauma.Networking { diff --git a/Barotrauma/BarotraumaServer/ServerSource/Networking/GameServer.cs b/Barotrauma/BarotraumaServer/ServerSource/Networking/GameServer.cs index 232ecf417..2df0be84f 100644 --- a/Barotrauma/BarotraumaServer/ServerSource/Networking/GameServer.cs +++ b/Barotrauma/BarotraumaServer/ServerSource/Networking/GameServer.cs @@ -2354,6 +2354,8 @@ namespace Barotrauma.Networking characterData.ApplyHealthData(spawnedCharacter); characterData.ApplyOrderData(spawnedCharacter); spawnedCharacter.GiveIdCardTags(mainSubWaypoints[i]); + spawnedCharacter.LoadTalents(); + characterData.HasSpawned = true; } spawnedCharacter.OwnerClientEndPoint = teamClients[i].Connection.EndPointString; @@ -2366,6 +2368,8 @@ namespace Barotrauma.Networking spawnedCharacter.TeamID = teamID; spawnedCharacter.GiveJobItems(mainSubWaypoints[i]); spawnedCharacter.GiveIdCardTags(mainSubWaypoints[i]); + // talents are only avilable for players in online sessions, but modders or someone else might want to have them loaded anyway + spawnedCharacter.LoadTalents(); } } @@ -2431,6 +2435,7 @@ namespace Barotrauma.Networking roundStartTime = DateTime.Now; + startGameCoroutine = null; yield return CoroutineStatus.Success; } @@ -2619,8 +2624,8 @@ namespace Barotrauma.Networking } } - Submarine.Unload(); entityEventManager.Clear(); + Submarine.Unload(); GameMain.NetLobbyScreen.Select(); Log("Round ended.", ServerLog.MessageType.ServerMessage); @@ -3145,28 +3150,19 @@ namespace Barotrauma.Networking public void SendOrderChatMessage(OrderChatMessage message) { if (message.Sender == null || message.Sender.SpeechImpediment >= 100.0f) { return; } - //ChatMessageType messageType = ChatMessage.CanUseRadio(message.Sender) ? ChatMessageType.Radio : ChatMessageType.Default; - //check which clients can receive the message and apply distance effects foreach (Client client in ConnectedClients) { - string modifiedMessage = message.Text; - - if (message.Sender != null && - client.Character != null && !client.Character.IsDead) + if (message.Sender != null && client.Character != null && !client.Character.IsDead) { //too far to hear the msg -> don't send if (!client.Character.CanHearCharacter(message.Sender)) { continue; } } - SendDirectChatMessage(new OrderChatMessage(message.Order, message.OrderOption, message.OrderPriority, message.TargetEntity, message.TargetCharacter, message.Sender), client); } - - string myReceivedMessage = message.Text; - - if (!string.IsNullOrWhiteSpace(myReceivedMessage)) + if (!string.IsNullOrWhiteSpace(message.Text)) { - AddChatMessage(new OrderChatMessage(message.Order, message.OrderOption, message.OrderPriority, myReceivedMessage, message.TargetEntity, message.TargetCharacter, message.Sender)); + AddChatMessage(new OrderChatMessage(message.Order, message.OrderOption, message.OrderPriority, message.Text, message.TargetEntity, message.TargetCharacter, message.Sender)); } } diff --git a/Barotrauma/BarotraumaServer/ServerSource/Networking/NetEntityEvent/ServerEntityEventManager.cs b/Barotrauma/BarotraumaServer/ServerSource/Networking/NetEntityEvent/ServerEntityEventManager.cs index dd851251d..95aa0e83f 100644 --- a/Barotrauma/BarotraumaServer/ServerSource/Networking/NetEntityEvent/ServerEntityEventManager.cs +++ b/Barotrauma/BarotraumaServer/ServerSource/Networking/NetEntityEvent/ServerEntityEventManager.cs @@ -44,11 +44,11 @@ namespace Barotrauma.Networking class ServerEntityEventManager : NetEntityEventManager { - private List events; + private readonly List events; //list of unique events (i.e. !IsDuplicate) created during the round //used for syncing clients who join mid-round - private List uniqueEvents; + private readonly List uniqueEvents; private UInt16 lastSentToAll; private UInt16 lastSentToAnyone; @@ -90,11 +90,11 @@ namespace Barotrauma.Networking } } - private List bufferedEvents; + private readonly List bufferedEvents; private UInt16 ID; - private GameServer server; + private readonly GameServer server; private double lastEventCountHighWarning; diff --git a/Barotrauma/BarotraumaServer/ServerSource/Networking/RespawnManager.cs b/Barotrauma/BarotraumaServer/ServerSource/Networking/RespawnManager.cs index 7f97a81d9..d162db6f0 100644 --- a/Barotrauma/BarotraumaServer/ServerSource/Networking/RespawnManager.cs +++ b/Barotrauma/BarotraumaServer/ServerSource/Networking/RespawnManager.cs @@ -284,6 +284,8 @@ namespace Barotrauma.Networking partial void RespawnCharactersProjSpecific(Vector2? shuttlePos) { + respawnedCharacters.Clear(); + var respawnSub = RespawnShuttle ?? Submarine.MainSub; MultiPlayerCampaign campaign = GameMain.GameSession.GameMode as MultiPlayerCampaign; @@ -300,7 +302,7 @@ namespace Barotrauma.Networking if (matchingData != null && !matchingData.HasSpawned) { c.CharacterInfo = matchingData.CharacterInfo; - } + } //all characters are in Team 1 in game modes/missions with only one team. //if at some point we add a game mode with multiple teams where respawning is possible, this needs to be reworked @@ -355,8 +357,21 @@ namespace Barotrauma.Networking characterInfos[i].ClearCurrentOrders(); - var character = Character.Create(characterInfos[i], shuttleSpawnPoints[i].WorldPosition, characterInfos[i].Name, isRemotePlayer: !bot, hasAi: bot); + bool forceSpawnInMainSub = false; + if (!bot && campaign != null) + { + var matchingData = campaign?.GetClientCharacterData(clients[i]); + if (matchingData != null && !matchingData.HasSpawned) + { + forceSpawnInMainSub = true; + } + } + + var character = Character.Create(characterInfos[i], (forceSpawnInMainSub ? mainSubSpawnPoints[i] : shuttleSpawnPoints[i]).WorldPosition, characterInfos[i].Name, isRemotePlayer: !bot, hasAi: bot); character.TeamID = CharacterTeamType.Team1; + character.LoadTalents(); + + respawnedCharacters.Add(character); if (bot) { diff --git a/Barotrauma/BarotraumaServer/ServerSource/Traitors/Goals/GoalFindItem.cs b/Barotrauma/BarotraumaServer/ServerSource/Traitors/Goals/GoalFindItem.cs index 582a853fe..a95f200bc 100644 --- a/Barotrauma/BarotraumaServer/ServerSource/Traitors/Goals/GoalFindItem.cs +++ b/Barotrauma/BarotraumaServer/ServerSource/Traitors/Goals/GoalFindItem.cs @@ -185,7 +185,10 @@ namespace Barotrauma { existingItems.Add(item); } - Entity.Spawner.AddToSpawnQueue(targetPrefab, targetContainer.OwnInventory); + Entity.Spawner.AddToSpawnQueue(targetPrefab, targetContainer.OwnInventory, null, item => + { + item.AddTag("traitormissionitem"); + }); target = null; } else if (allowExisting) diff --git a/Barotrauma/BarotraumaServer/WindowsServer.csproj b/Barotrauma/BarotraumaServer/WindowsServer.csproj index d5b2ff207..879a52022 100644 --- a/Barotrauma/BarotraumaServer/WindowsServer.csproj +++ b/Barotrauma/BarotraumaServer/WindowsServer.csproj @@ -6,7 +6,7 @@ Barotrauma FakeFish, Undertow Games Barotrauma Dedicated Server - 0.14.9.0 + 0.1500.0.0 Copyright © FakeFish 2018-2020 AnyCPU;x64 DedicatedServer diff --git a/Barotrauma/BarotraumaShared/Data/ContentPackages/Vanilla 0.9.xml b/Barotrauma/BarotraumaShared/Data/ContentPackages/Vanilla 0.9.xml index 19f21b7a6..f5c2f7d19 100644 --- a/Barotrauma/BarotraumaShared/Data/ContentPackages/Vanilla 0.9.xml +++ b/Barotrauma/BarotraumaShared/Data/ContentPackages/Vanilla 0.9.xml @@ -63,6 +63,11 @@ + + + + + @@ -147,6 +152,12 @@ + + + + + + @@ -261,4 +272,11 @@ + + + + + + + \ No newline at end of file diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/AIController.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/AIController.cs index 4e3f6b91e..168edfa9e 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/AIController.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/AIController.cs @@ -1,7 +1,8 @@ -using Microsoft.Xna.Framework; +using Barotrauma.Items.Components; +using Barotrauma.Networking; +using Microsoft.Xna.Framework; using System; using System.Collections.Generic; -using Barotrauma.Items.Components; using System.Linq; namespace Barotrauma @@ -328,5 +329,8 @@ namespace Barotrauma protected virtual void OnStateChanged(AIState from, AIState to) { } protected virtual void OnTargetChanged(AITarget previousTarget, AITarget newTarget) { } + + public virtual void ClientRead(IReadMessage msg) { } + public virtual void ServerWrite(IWriteMessage msg) { } } } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/EnemyAIController.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/EnemyAIController.cs index ba65f0c2c..6a86228e6 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/EnemyAIController.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/EnemyAIController.cs @@ -1,5 +1,6 @@ using Barotrauma.Extensions; using Barotrauma.Items.Components; +using Barotrauma.Networking; using FarseerPhysics; using FarseerPhysics.Dynamics; using Microsoft.Xna.Framework; @@ -37,6 +38,12 @@ namespace Barotrauma PreviousState = _state; OnStateChanged(_state, value); _state = value; + if (_state == AIState.Attack) + { +#if CLIENT + Character.PlaySound(CharacterSound.SoundType.Attack, maxInterval: 3); +#endif + } } } @@ -50,6 +57,8 @@ namespace Barotrauma private readonly float updateTargetsInterval = 1; private readonly float updateMemoriesInverval = 1; private readonly float attackLimbResetInterval = 2; + // Min priority for the memorized targets. The actual value fades gradually, unless kept fresh by selecting the target. + private const float minPriority = 10; private readonly float avoidLookAheadDistance; @@ -394,7 +403,7 @@ namespace Barotrauma public void SelectTarget(AITarget target, float priority) { SelectedAiTarget = target; - selectedTargetMemory = GetTargetMemory(target, true); + selectedTargetMemory = GetTargetMemory(target, addIfNotFound: true); selectedTargetMemory.Priority = priority; ignoredTargets.Remove(target); } @@ -641,7 +650,7 @@ namespace Barotrauma { Character c = a.Character; if (c.IsDead || c.Removed) { return false; } - if (!IsFriendly(Character, c)) { return true; } + if (!Character.IsFriendly(c)) { return true; } // Only apply the threshold to friendly characters return a.Damage >= selectedTargetingParams.DamageThreshold; } @@ -976,7 +985,7 @@ namespace Barotrauma Character owner = GetOwner(item); if (owner != null) { - if (IsFriendly(Character, owner)) + if (Character.IsFriendly(owner)) { ResetAITarget(); State = AIState.Idle; @@ -1337,7 +1346,7 @@ namespace Barotrauma } else { - canAttack = Character.CharacterList.All(c => c == Character || !IsFriendly(Character, c) || IsFarEnough(c)); + canAttack = Character.CharacterList.All(c => c == Character || !Character.IsFriendly(c) || IsFarEnough(c)); } if (canAttack) { @@ -1356,7 +1365,7 @@ namespace Barotrauma { hitTarget = limb.character; } - if (hitTarget != null && !hitTarget.IsDead && IsFriendly(Character, hitTarget)) + if (hitTarget != null && !hitTarget.IsDead && Character.IsFriendly(hitTarget)) { return true; } @@ -1764,7 +1773,7 @@ namespace Barotrauma Character.AnimController.ReleaseStuckLimbs(); LatchOntoAI?.DeattachFromBody(reset: true, cooldown: 1); if (attacker == null || attacker.AiTarget == null || attacker.Removed || attacker.IsDead) { return; } - bool isFriendly = IsFriendly(Character, attacker); + bool isFriendly = Character.IsFriendly(attacker); if (wasLatched) { State = AIState.Escape; @@ -1840,7 +1849,7 @@ namespace Barotrauma } } - AITargetMemory targetMemory = GetTargetMemory(attacker.AiTarget, true); + AITargetMemory targetMemory = GetTargetMemory(attacker.AiTarget, addIfNotFound: true); targetMemory.Priority += GetRelativeDamage(attackResult.Damage, Character.Vitality) * AIParams.AggressionHurt; // Only allow to react once. Otherwise would attack the target with only a fraction of a cooldown @@ -1884,16 +1893,15 @@ namespace Barotrauma private bool UpdateLimbAttack(float deltaTime, Limb attackingLimb, Vector2 attackSimPos, float distance = -1, Limb targetLimb = null) { if (SelectedAiTarget?.Entity == null) { return false; } - - ActiveAttack = attackingLimb?.attack; - + if (attackingLimb?.attack == null) { return false; } + ActiveAttack = attackingLimb.attack; if (wallTarget != null) { // If the selected target is not the wall target, make the wall target the selected target. var aiTarget = wallTarget.Structure.AiTarget; if (aiTarget != null && SelectedAiTarget != aiTarget) { - SelectTarget(aiTarget, GetTargetMemory(SelectedAiTarget, true).Priority); + SelectTarget(aiTarget, GetTargetMemory(SelectedAiTarget, addIfNotFound: true).Priority); State = AIState.Attack; } } @@ -1902,23 +1910,35 @@ namespace Barotrauma { //simulate attack input to get the character to attack client-side Character.SetInput(InputType.Attack, true, true); -#if SERVER - GameMain.NetworkMember.CreateEntityEvent(Character, new object[] + if (!ActiveAttack.IsRunning) { +#if SERVER + GameMain.NetworkMember.CreateEntityEvent(Character, new object[] + { Networking.NetEntityEvent.Type.SetAttackTarget, attackingLimb, (damageTarget as Entity)?.ID ?? Entity.NullEntityID, damageTarget is Character character && targetLimb != null ? Array.IndexOf(character.AnimController.Limbs, targetLimb) : 0, SimPosition.X, SimPosition.Y - }); + }); +#else + Character.PlaySound(CharacterSound.SoundType.Attack, maxInterval: 3); #endif + } + if (attackingLimb.UpdateAttack(deltaTime, attackSimPos, damageTarget, out AttackResult attackResult, distance, targetLimb)) { if (damageTarget.Health > 0 && attackResult.Damage > 0) { // Managed to hit a living/non-destroyed target. Increase the priority more if the target is low in health -> dies easily/soon - selectedTargetMemory.Priority += GetRelativeDamage(attackResult.Damage, damageTarget.Health) * AIParams.AggressionGreed; + float greed = AIParams.AggressionGreed; + if (!(damageTarget is Character)) + { + // Halve the greed for attacking non-characters. + greed /= 2; + } + selectedTargetMemory.Priority += GetRelativeDamage(attackResult.Damage, damageTarget.Health) * greed; } else { @@ -2125,6 +2145,9 @@ namespace Barotrauma string targetingTag = null; if (targetCharacter != null) { + // ignore if target is tagged to be explicitly ignored (Feign Death) + if (targetCharacter.HasAbilityFlag(AbilityFlags.IgnoredByEnemyAI)) { continue; } + if (targetCharacter.IsDead) { targetingTag = "dead"; @@ -2139,7 +2162,7 @@ namespace Barotrauma } else { - if (IsFriendly(Character, targetCharacter)) + if (Character.IsFriendly(targetCharacter)) { continue; } @@ -2449,7 +2472,7 @@ namespace Barotrauma { if (otherCharacter == character) { continue; } if (otherCharacter.AIController?.SelectedAiTarget != aiTarget) { continue; } - if (!IsFriendly(character, otherCharacter)) { continue; } + if (!character.IsFriendly(otherCharacter)) { continue; } valueModifier /= 2; } } @@ -2469,7 +2492,7 @@ namespace Barotrauma // -> just ignore the distance and attack whatever has the highest priority dist = Math.Max(dist, 100.0f); - AITargetMemory targetMemory = GetTargetMemory(aiTarget, true); + AITargetMemory targetMemory = GetTargetMemory(aiTarget, addIfNotFound: true); if (Character.CurrentHull != null && Math.Abs(toTarget.Y) > Character.CurrentHull.Size.Y) { // Inside the sub, treat objects that are up or down, as they were farther away. @@ -2527,7 +2550,7 @@ namespace Barotrauma // Don't target items that we own. // This is a rare case, and almost entirely related to Humanhusks, so let's check it last to reduce unnecessary checks (although the check shouldn't be expensive) if (owner == character) { continue; } - if (owner != null && (IsFriendly(Character, owner) || owner.AiTarget != null && ignoredTargets.Contains(owner.AiTarget))) + if (owner != null && (Character.IsFriendly(owner) || owner.AiTarget != null && ignoredTargets.Contains(owner.AiTarget))) { continue; } @@ -2599,7 +2622,7 @@ namespace Barotrauma wall = wallTarget?.Structure; } // The target is not a wall or it's not the same as we are attached to -> release - bool releaseTarget = wall == null || (!wall.Bodies.Contains(LatchOntoAI.AttachJoints[0].BodyB) && wall.Submarine?.PhysicsBody?.FarseerBody != LatchOntoAI.AttachJoints[0].BodyB); + bool releaseTarget = wall?.Bodies == null || (!wall.Bodies.Contains(LatchOntoAI.AttachJoints[0].BodyB) && wall.Submarine?.PhysicsBody?.FarseerBody != LatchOntoAI.AttachJoints[0].BodyB); if (!releaseTarget) { for (int i = 0; i < wall.Sections.Length; i++) @@ -2847,10 +2870,15 @@ namespace Barotrauma { if (addIfNotFound) { - memory = new AITargetMemory(target, 10); + memory = new AITargetMemory(target, minPriority); targetMemories.Add(target, memory); } } + if (addIfNotFound) + { + // Keep the memory alive. + memory.Priority = Math.Max(memory.Priority, minPriority); + } return memory; } @@ -3014,7 +3042,7 @@ namespace Barotrauma { if (!onlyExisting && !tempParams.ContainsKey(tag)) { - if (AIParams.TryAddNewTarget(tag, state, priority ?? 100, out targetParams)) + if (AIParams.TryAddNewTarget(tag, state, priority ?? minPriority, out targetParams)) { tempParams.Add(tag, targetParams); } @@ -3051,6 +3079,7 @@ namespace Barotrauma ChangeParams(target.SpeciesName, state, priority); if (target.IsHuman) { + priority = GetTargetParams("human")?.Priority; // Target also items, because if we are blind and the target doesn't move, we can only perceive the target when it uses items if (state == AIState.Attack || state == AIState.Escape) { @@ -3061,20 +3090,19 @@ namespace Barotrauma { // If the target is shooting from the submarine, we might not perceive it because it doesn't move. // --> Target the submarine too. - if (target.Submarine != null && (canAttackDoors || canAttackWalls)) + if (target.Submarine != null && Character.Submarine == null && (canAttackDoors || canAttackWalls)) { - ChangeParams("room", state, priority); + ChangeParams("room", state, priority * 0.1f); if (canAttackWalls) { - ChangeParams("wall", state, priority); + ChangeParams("wall", state, priority * 0.1f); } if (canAttackDoors) { - ChangeParams("door", state, priority); + ChangeParams("door", state, priority * 0.1f); } } ChangeParams("provocative", state, priority, onlyExisting: true); - ChangeParams("light", state, priority, onlyExisting: true); } } } @@ -3306,7 +3334,17 @@ namespace Barotrauma return null; } - public static bool IsFriendly(Character me, Character other) => other.SpeciesName == me.SpeciesName || other.Params.CompareGroup(me.Params.Group); + public override void ServerWrite(IWriteMessage msg) + { + msg.Write((byte)State); + PetBehavior?.ServerWrite(msg); + } + + public override void ClientRead(IReadMessage msg) + { + State = (AIState)msg.ReadByte(); + PetBehavior?.ClientRead(msg); + } } //the "memory" of the Character diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/HumanAIController.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/HumanAIController.cs index 8c562b697..a67aa81f3 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/HumanAIController.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/HumanAIController.cs @@ -915,10 +915,10 @@ namespace Barotrauma return false; } - public static void ReportProblem(Character reporter, Order order) + public static void ReportProblem(Character reporter, Order order, Hull targetHull = null) { if (reporter == null || order == null) { return; } - var visibleHulls = new List(reporter.GetVisibleHulls()); + var visibleHulls = targetHull is null ? new List(reporter.GetVisibleHulls()) : new List { targetHull }; foreach (var hull in visibleHulls) { PropagateHullSafety(reporter, hull); @@ -1415,7 +1415,7 @@ namespace Barotrauma if (GameMain.GameSession?.Campaign?.Map?.CurrentLocation != null) { var reputationLoss = damageAmount * Reputation.ReputationLossPerWallDamage; - GameMain.GameSession.Campaign.Map.CurrentLocation.Reputation.Value -= reputationLoss; + GameMain.GameSession.Campaign.Map.CurrentLocation.Reputation.AddReputation(-reputationLoss); } if (accumulatedDamage <= WarningThreshold) { return; } @@ -1510,7 +1510,7 @@ namespace Barotrauma var reputationLoss = MathHelper.Clamp( (item.Prefab.GetMinPrice() ?? 0) * Reputation.ReputationLossPerStolenItemPrice, Reputation.MinReputationLossPerStolenItem, Reputation.MaxReputationLossPerStolenItem); - GameMain.GameSession.Campaign.Map.CurrentLocation.Reputation.Value -= reputationLoss; + GameMain.GameSession.Campaign.Map.CurrentLocation.Reputation.AddReputation(-reputationLoss); } item.StolenDuringRound = true; otherCharacter.Speak(TextManager.Get("dialogstealwarning"), null, Rand.Range(0.5f, 1.0f), "thief", 10.0f); @@ -1971,13 +1971,13 @@ namespace Barotrauma if (c.Removed) { continue; } if (c.TeamID != Character.TeamID) { continue; } if (c.IsIncapacitated) { continue; } - other = c; if (c.IsPlayer) { if (c.SelectedConstruction == target.Item) { // If the other character is player, don't try to operate - return true; + other = c; + break; } } else if (c.AIController is HumanAIController operatingAI) @@ -1991,7 +1991,8 @@ namespace Barotrauma if (!isOrder && isTargetOrdered) { // If the other bot is ordered to operate the item, let him do it, unless we are ordered too - return true; + other = c; + break; } else { @@ -2012,18 +2013,20 @@ namespace Barotrauma // Steering is hard-coded -> cannot use the required skills collection defined in the xml if (Character.GetSkillLevel("helm") <= c.GetSkillLevel("helm")) { - return true; + other = c; + break; } } else if (target.DegreeOfSuccess(Character) <= target.DegreeOfSuccess(c)) { - return true; + other = c; + break; } } } } } - return false; + return other != null; bool IsOrderedToOperateThis(AIController ai) => ai is HumanAIController humanAI && humanAI.ObjectiveManager.CurrentOrder is AIObjectiveOperateItem operateOrder && operateOrder.Component.Item == target.Item; } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/IndoorsSteeringManager.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/IndoorsSteeringManager.cs index cb8bdeff7..918287729 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/IndoorsSteeringManager.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/IndoorsSteeringManager.cs @@ -161,12 +161,13 @@ namespace Barotrauma private Vector2 CalculateSteeringSeek(Vector2 target, float weight, Func startNodeFilter = null, Func endNodeFilter = null, Func nodeFilter = null, bool checkVisibility = true) { Vector2 targetDiff = target - currentTarget; - if (currentPath != null && currentPath.Nodes.Any()) + if (currentPath != null && currentPath.Nodes.Any() && character.Submarine != null) { - //current path calculated relative to a different sub than where the character is now + //target in a different sub than where the character is now //take that into account when calculating if the target has moved - Submarine currentPathSub = currentPath?.Nodes.First().Submarine; - if (currentPathSub != character.Submarine && character.Submarine != null) + Submarine currentPathSub = currentPath?.CurrentNode?.Submarine; + if (currentPathSub == character.Submarine) { currentPathSub = currentPath?.Nodes.LastOrDefault()?.Submarine; } + if (currentPathSub != character.Submarine && targetDiff.LengthSquared() > 1 && currentPathSub != null) { Vector2 subDiff = character.Submarine.SimPosition - currentPathSub.SimPosition; targetDiff += subDiff; diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Objectives/AIObjectiveCombat.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Objectives/AIObjectiveCombat.cs index fa7112563..79842539a 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Objectives/AIObjectiveCombat.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Objectives/AIObjectiveCombat.cs @@ -101,11 +101,11 @@ namespace Barotrauma public enum CombatMode { - Defensive, - Offensive, - Arrest, - Retreat, - None + Defensive, // Use weapons against the enemy, but try to retreat to a safe place + Offensive, // Engage the enemy and keep attacking it + Arrest, // Try to arrest the enemy without using lethal weapons (stunning + handcuffs) + Retreat, // Run to a safe place without attacking the target + None // Don't use } public CombatMode Mode { get; private set; } @@ -958,14 +958,15 @@ namespace Barotrauma } if (reloadTimer > 0) { return; } if (holdFireCondition != null && holdFireCondition()) { return; } - float sqrDist = Vector2.DistanceSquared(character.Position, Enemy.Position); + sqrDistance = Vector2.DistanceSquared(character.WorldPosition, Enemy.WorldPosition); + distanceTimer = distanceCheckInterval; if (WeaponComponent is MeleeWeapon meleeWeapon) { bool closeEnough = true; float sqrRange = meleeWeapon.Range * meleeWeapon.Range; if (character.AnimController.InWater) { - if (sqrDist > sqrRange) + if (sqrDistance > sqrRange) { closeEnough = false; } @@ -1003,7 +1004,7 @@ namespace Barotrauma { if (WeaponComponent is RepairTool repairTool) { - if (sqrDist > repairTool.Range * repairTool.Range) { return; } + if (sqrDistance > repairTool.Range * repairTool.Range) { return; } } float aimFactor = MathHelper.PiOver2 * (1 - AimAccuracy); if (VectorExtensions.Angle(VectorExtensions.Forward(Weapon.body.TransformedRotation), Enemy.Position - Weapon.Position) < MathHelper.PiOver4 + aimFactor) diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Objectives/AIObjectiveExtinguishFire.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Objectives/AIObjectiveExtinguishFire.cs index b6163032a..251c0362b 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Objectives/AIObjectiveExtinguishFire.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Objectives/AIObjectiveExtinguishFire.cs @@ -53,9 +53,13 @@ namespace Barotrauma distanceFactor = 1; } float severity = AIObjectiveExtinguishFires.GetFireSeverity(targetHull); - if (severity > 0.5f && !isOrder) + if (severity > 0.75f && !isOrder && + targetHull.RoomName != null && + !targetHull.RoomName.Contains("reactor", StringComparison.OrdinalIgnoreCase) && + !targetHull.RoomName.Contains("engine", StringComparison.OrdinalIgnoreCase) && + !targetHull.RoomName.Contains("command", StringComparison.OrdinalIgnoreCase)) { - // Ignore severe fires unless ordered. (Let the fire drain all the oxygen instead). + // Ignore severe fires to prevent casualities unless ordered to extinguish. Priority = 0; Abandon = true; } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Objectives/AIObjectiveExtinguishFires.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Objectives/AIObjectiveExtinguishFires.cs index 62787477d..97d9450c2 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Objectives/AIObjectiveExtinguishFires.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Objectives/AIObjectiveExtinguishFires.cs @@ -25,7 +25,7 @@ namespace Barotrauma /// /// 0-1 based on the horizontal size of all of the fires in the hull. /// - public static float GetFireSeverity(Hull hull) => MathHelper.Lerp(0, 1, MathUtils.InverseLerp(0, Math.Min(hull.Rect.Width, 1000), hull.FireSources.Sum(fs => fs.Size.X))); + public static float GetFireSeverity(Hull hull) => MathHelper.Lerp(0, 1, MathUtils.InverseLerp(0, 500, hull.FireSources.Sum(fs => fs.Size.X))); protected override IEnumerable GetList() => Hull.hullList; diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Objectives/AIObjectiveFightIntruders.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Objectives/AIObjectiveFightIntruders.cs index 14c01cb47..a28df6cf9 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Objectives/AIObjectiveFightIntruders.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Objectives/AIObjectiveFightIntruders.cs @@ -63,6 +63,7 @@ namespace Barotrauma if (target.CurrentHull == null) { return false; } if (HumanAIController.IsFriendly(character, target)) { return false; } if (!character.Submarine.IsConnectedTo(target.Submarine)) { return false; } + if (target.HasAbilityFlag(AbilityFlags.IgnoredByEnemyAI)) { return false; } return true; } } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Objectives/AIObjectiveFindDivingGear.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Objectives/AIObjectiveFindDivingGear.cs index 76c51c0d9..012c3a858 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Objectives/AIObjectiveFindDivingGear.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Objectives/AIObjectiveFindDivingGear.cs @@ -57,7 +57,20 @@ namespace Barotrauma }; }, onAbandon: () => Abandon = true, - onCompleted: () => RemoveSubObjective(ref getDivingGear)); + onCompleted: () => + { + RemoveSubObjective(ref getDivingGear); + if (gearTag == HEAVY_DIVING_GEAR && HumanAIController.HasItem(character, LIGHT_DIVING_GEAR, out IEnumerable masks, requireEquipped: true)) + { + foreach (Item mask in masks) + { + if (mask != targetItem) + { + character.Inventory.TryPutItem(mask, character, CharacterInventory.anySlot); + } + } + } + }); } else { @@ -71,9 +84,13 @@ namespace Barotrauma { if (character.IsOnPlayerTeam) { - if (HumanAIController.HasItem(character, "oxygensource", out _, conditionPercentage: min)) + if (HumanAIController.HasItem(character, OXYGEN_SOURCE, out _, conditionPercentage: min)) { character.Speak(TextManager.Get("dialogswappingoxygentank"), null, 0, "swappingoxygentank", 30.0f); + if (character.Inventory.FindAllItems(i => i.HasTag(OXYGEN_SOURCE) && i.Condition > min).Count == 1) + { + character.Speak(TextManager.Get("dialoglastoxygentank"), null, 0.0f, "dialoglastoxygentank", 30.0f); + } } else { @@ -105,7 +122,7 @@ namespace Barotrauma onAbandon: () => { Abandon = true; - if (remainingTanks > 0 && !HumanAIController.HasItem(character, "oxygensource", out _, conditionPercentage: 0.01f)) + if (remainingTanks > 0 && !HumanAIController.HasItem(character, OXYGEN_SOURCE, out _, conditionPercentage: 0.01f)) { character.Speak(TextManager.Get("dialogcantfindtoxygen"), null, 0, "cantfindoxygen", 30.0f); } @@ -121,7 +138,7 @@ namespace Barotrauma int ReportOxygenTankCount() { if (character.Submarine != Submarine.MainSub) { return 1; } - int remainingOxygenTanks = Submarine.MainSub.GetItems(false).Count(i => i.HasTag("oxygensource") && i.Condition > 1); + int remainingOxygenTanks = Submarine.MainSub.GetItems(false).Count(i => i.HasTag(OXYGEN_SOURCE) && i.Condition > 1); if (remainingOxygenTanks == 0) { character.Speak(TextManager.Get("DialogOutOfOxygenTanks"), null, 0.0f, "outofoxygentanks", 30.0f); @@ -136,17 +153,6 @@ namespace Barotrauma } } - /// - /// Returns false only when no inventory can be found from the item. - /// - public static bool EjectEmptyTanks(Character actor, Item target, out IEnumerable containedItems) - { - containedItems = target.OwnInventory?.AllItems; - if (containedItems == null) { return false; } - AIController.UnequipEmptyItems(actor, target); - return true; - } - public override void Reset() { base.Reset(); diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Objectives/AIObjectiveIdle.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Objectives/AIObjectiveIdle.cs index 1b7b68af7..3be3dab7e 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Objectives/AIObjectiveIdle.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Objectives/AIObjectiveIdle.cs @@ -242,9 +242,8 @@ namespace Barotrauma if (!searchingNewHull) { //find all available hulls first - FindTargetHulls(); searchingNewHull = true; - return; + FindTargetHulls(); } else if (targetHulls.Any()) { @@ -255,11 +254,10 @@ namespace Barotrauma var path = PathSteering.PathFinder.FindPath(character.SimPosition, currentTarget.SimPosition, errorMsgStr: null, nodeFilter: node => { if (node.Waypoint.CurrentHull == null) { return false; } - // Check that there is no unsafe or forbidden hulls on the way to the target + // Check that there is no unsafe hulls on the way to the target if (node.Waypoint.CurrentHull != character.CurrentHull && HumanAIController.UnsafeHulls.Contains(node.Waypoint.CurrentHull)) { return false; } - if (isCurrentHullAllowed && IsForbidden(node.Waypoint.CurrentHull)) { return false; } return true; - }); + }, endNodeFilter: node => !isCurrentHullAllowed | !IsForbidden(node.Waypoint.CurrentHull)); if (path.Unreachable) { //can't go to this room, remove it from the list and try another room @@ -271,30 +269,19 @@ namespace Barotrauma SetTargetTimerLow(); return; } + character.AIController.SelectTarget(currentTarget.AiTarget); + PathSteering.SetPath(path); + SetTargetTimerNormal(); searchingNewHull = false; } else { - // Couldn't find a target for some reason -> reset + // Couldn't find a valid hull SetTargetTimerHigh(); searchingNewHull = false; } - - if (currentTarget != null) - { - character.AIController.SelectTarget(currentTarget.AiTarget); - string errorMsg = null; -#if DEBUG - bool isRoomNameFound = currentTarget.DisplayName != null; - errorMsg = "(Character " + character.Name + " idling, target " + (isRoomNameFound ? currentTarget.DisplayName : currentTarget.ToString()) + ")"; -#endif - var path = PathSteering.PathFinder.FindPath(character.SimPosition, currentTarget.SimPosition, errorMsgStr: errorMsg, nodeFilter: node => node.Waypoint.CurrentHull != null); - PathSteering.SetPath(path); - } - SetTargetTimerNormal(); } newTargetTimer -= deltaTime; - if (!character.IsClimbing && IsSteeringFinished()) { Wander(deltaTime); diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Order.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Order.cs index 09a73221f..57b024e16 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Order.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/Order.cs @@ -141,6 +141,7 @@ namespace Barotrauma public Entity TargetEntity; public ItemComponent TargetItemComponent; public readonly bool UseController; + public readonly string[] ControllerTags; public Controller ConnectedController; public Character OrderGiver; @@ -309,6 +310,7 @@ namespace Barotrauma color = orderElement.GetAttributeColor("color"); FadeOutTime = orderElement.GetAttributeFloat("fadeouttime", 0.0f); UseController = orderElement.GetAttributeBool("usecontroller", false); + ControllerTags = orderElement.GetAttributeStringArray("controllertags", new string[0]); TargetAllCharacters = orderElement.GetAttributeBool("targetallcharacters", false); AppropriateJobs = orderElement.GetAttributeStringArray("appropriatejobs", new string[0]); Options = orderElement.GetAttributeStringArray("options", new string[0]); @@ -380,6 +382,7 @@ namespace Barotrauma SymbolSprite = prefab.SymbolSprite; Color = prefab.Color; UseController = prefab.UseController; + ControllerTags = prefab.ControllerTags; TargetAllCharacters = prefab.TargetAllCharacters; AppropriateJobs = prefab.AppropriateJobs; FadeOutTime = prefab.FadeOutTime; @@ -399,7 +402,7 @@ namespace Barotrauma { if (UseController) { - ConnectedController = targetItem.Item?.FindController(); + ConnectedController = targetItem.Item?.FindController(tags: ControllerTags); if (ConnectedController == null) { DebugConsole.AddWarning("AI: Tried to use a controller for operating an item, but couldn't find any."); @@ -450,19 +453,37 @@ namespace Barotrauma return false; } - public string GetChatMessage(string targetCharacterName, string targetRoomName, bool givingOrderToSelf, string orderOption = "") + public string GetChatMessage(string targetCharacterName, string targetRoomName, bool givingOrderToSelf, string orderOption = "", int? priority = null) { - orderOption ??= ""; - - string messageTag = (givingOrderToSelf && !TargetAllCharacters ? "OrderDialogSelf." : "OrderDialog.") + Identifier; - if (Identifier != "dismissed" && !string.IsNullOrEmpty(orderOption)) { messageTag += "." + orderOption; } - - if (targetCharacterName == null) { targetCharacterName = ""; } - if (targetRoomName == null) { targetRoomName = ""; } - string msg = TextManager.GetWithVariables(messageTag, new string[2] { "[name]", "[roomname]" }, new string[2] { targetCharacterName, targetRoomName }, new bool[2] { false, true }, true); - if (msg == null) { return ""; } - - return msg; + priority ??= CharacterInfo.HighestManualOrderPriority; + // If the order has a lesser priority, it means we are rearranging character orders + if (!TargetAllCharacters && priority != CharacterInfo.HighestManualOrderPriority && Identifier != "dismissed") + { + return TextManager.GetWithVariable("rearrangedorders", "[name]", targetCharacterName ?? string.Empty, returnNull: true) ?? string.Empty; + } + string messageTag = $"{(givingOrderToSelf && !TargetAllCharacters ? "OrderDialogSelf" : "OrderDialog")}"; + messageTag += $".{Identifier}"; + if (!string.IsNullOrEmpty(orderOption)) + { + if (Identifier != "dismissed") + { + messageTag += $".{orderOption}"; + } + else + { + string[] splitOption = orderOption.Split('.'); + if (splitOption.Length > 0) + { + messageTag += $".{splitOption[0]}"; + } + } + } + string msg = TextManager.GetWithVariables(messageTag, + new string[2] { "[name]", "[roomname]" }, + new string[2] { targetCharacterName ?? string.Empty, targetRoomName ?? string.Empty }, + formatCapitals: new bool[2] { false, true }, + returnNull: true); + return msg ?? string.Empty; } /// @@ -505,7 +526,7 @@ namespace Barotrauma if (item.NonInteractable) { continue; } if (ItemComponentType != null && item.Components.None(c => c.GetType() == ItemComponentType)) { continue; } Controller controller = null; - if (UseController && !item.TryFindController(out controller)) { continue; } + if (UseController && !item.TryFindController(out controller, tags: ControllerTags)) { continue; } if (interactableFor != null && (!item.IsInteractable(interactableFor) || (UseController && !controller.Item.IsInteractable(interactableFor)))) { continue; } matchingItems.Add(item); } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/PathFinder.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/PathFinder.cs index 82b4ed49b..21d8cebe4 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/PathFinder.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/AI/PathFinder.cs @@ -97,64 +97,51 @@ namespace Barotrauma foreach (WayPoint wp in wayPoints) { - wp.linkedTo.CollectionChanged += WaypointLinksChanged; + wp.OnLinksChanged += WaypointLinksChanged; } IndoorsSteering = indoorsSteering; } - void WaypointLinksChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) + void WaypointLinksChanged(WayPoint wp) { if (Submarine.Unloading) { return; } - var waypoints = sender as IEnumerable; + var node = nodes.Find(n => n.Waypoint == wp); + if (node == null) { return; } - foreach (MapEntity me in waypoints) + for (int i = node.connections.Count - 1; i >= 0; i--) { - WayPoint wp = me as WayPoint; - if (me == null) { continue; } - - var node = nodes.Find(n => n.Waypoint == wp); - if (node == null) { return; } - - if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Remove) + //remove connection if the waypoint isn't connected anymore + if (wp.linkedTo.FirstOrDefault(l => l == node.connections[i].Waypoint) == null) { - for (int i = node.connections.Count - 1; i >= 0; i--) - { - //remove connection if the waypoint isn't connected anymore - if (wp.linkedTo.FirstOrDefault(l => l == node.connections[i].Waypoint) == null) - { - node.connections.RemoveAt(i); - node.distances.RemoveAt(i); - } - } + node.connections.RemoveAt(i); + node.distances.RemoveAt(i); } - else if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add) + } + + for (int i = 0; i < wp.linkedTo.Count; i++) + { + if (!(wp.linkedTo[i] is WayPoint connected)) { continue; } + + //already connected, continue + if (node.connections.Any(n => n.Waypoint == connected)) { continue; } + + var matchingNode = nodes.Find(n => n.Waypoint == connected); + if (matchingNode == null) { - for (int i = 0; i < wp.linkedTo.Count; i++) - { - if (!(wp.linkedTo[i] is WayPoint connected)) { continue; } - - //already connected, continue - if (node.connections.Any(n => n.Waypoint == connected)) { continue; } - - var matchingNode = nodes.Find(n => n.Waypoint == connected); - if (matchingNode == null) - { #if DEBUG - DebugConsole.ThrowError("Waypoint connections were changed, no matching path node found in PathFinder"); + DebugConsole.ThrowError("Waypoint connections were changed, no matching path node found in PathFinder"); #endif - return; - } - - node.connections.Add(matchingNode); - node.distances.Add(Vector2.Distance(node.Position, matchingNode.Position)); - } + return; } + + node.connections.Add(matchingNode); + node.distances.Add(Vector2.Distance(node.Position, matchingNode.Position)); } } - private static readonly List sortedNodes = new List(); + private readonly List sortedNodes = new List(); public SteeringPath FindPath(Vector2 start, Vector2 end, Submarine hostSub = null, string errorMsgStr = null, Func startNodeFilter = null, Func endNodeFilter = null, Func nodeFilter = null, bool checkVisibility = true) { diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Animation/FishAnimController.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Animation/FishAnimController.cs index 0ca3c9c1c..475a16a08 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Characters/Animation/FishAnimController.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Animation/FishAnimController.cs @@ -219,6 +219,7 @@ namespace Barotrauma if (character.SelectedCharacter != null) { DragCharacter(character.SelectedCharacter, deltaTime); + return; } //don't flip when simply physics is enabled diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Animation/HumanoidAnimController.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Animation/HumanoidAnimController.cs index 7e04b454f..1e910d566 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Characters/Animation/HumanoidAnimController.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Animation/HumanoidAnimController.cs @@ -938,19 +938,23 @@ namespace Barotrauma float rotation = MathHelper.WrapAngle(Collider.Rotation); rotation = MathHelper.ToDegrees(rotation); - if (rotation < 0.0f) rotation += 360; - + if (rotation < 0.0f) + { + rotation += 360; + } if (!character.IsRemotelyControlled && !aiming && Anim != Animation.UsingConstruction && !(character.SelectedConstruction?.GetComponent()?.ControlCharacterPose ?? false)) { if (rotation > 20 && rotation < 170) + { TargetDir = Direction.Left; + } else if (rotation > 190 && rotation < 340) + { TargetDir = Direction.Right; + } } - float targetSpeed = TargetMovement.Length(); - if (targetSpeed > 0.1f) { if (!aiming) @@ -965,9 +969,7 @@ namespace Barotrauma { Vector2 mousePos = ConvertUnits.ToSimUnits(character.CursorPosition); Vector2 diff = (mousePos - torso.SimPosition) * Dir; - TargetMovement = new Vector2(0.0f, -0.1f); - float newRotation = MathUtils.VectorToAngle(diff); Collider.SmoothRotate(newRotation, 5.0f * character.SpeedMultiplier); } @@ -1622,7 +1624,10 @@ namespace Barotrauma { Vector2 pullLimbAnchor = targetLimb.SimPosition; pullLimb.PullJointMaxForce = 5000.0f; - targetMovement *= MathHelper.Clamp(Mass / target.Mass, 0.5f, 1.0f); + if (!character.HasAbilityFlag(AbilityFlags.MoveNormallyWhileDragging)) + { + targetMovement *= MathHelper.Clamp(Mass / target.Mass, 0.5f, 1.0f); + } Vector2 shoulderPos = rightShoulder.WorldAnchorA; Vector2 dragDir = inWater ? Vector2.Normalize(targetLimb.SimPosition - shoulderPos) : Vector2.UnitY; @@ -1679,7 +1684,7 @@ namespace Barotrauma } //limit movement if moving away from the target - if (Vector2.Dot(target.WorldPosition - WorldPosition, targetMovement) < 0) + if (!character.HasAbilityFlag(AbilityFlags.MoveNormallyWhileDragging) && Vector2.Dot(target.WorldPosition - WorldPosition, targetMovement) < 0) { targetMovement *= MathHelper.Clamp(1.5f - dist, 0.0f, 1.0f); } @@ -1750,8 +1755,9 @@ namespace Barotrauma Vector2 diff = holdable.Aimable ? (mousePos - AimSourceSimPos) * Dir : Vector2.UnitX; holdAngle = MathUtils.VectorToAngle(new Vector2(diff.X, diff.Y * Dir)) - torso.body.Rotation * Dir; + holdAngle += GetAimWobble(rightHand, leftHand, item); - itemAngle = (torso.body.Rotation + holdAngle * Dir); + itemAngle = torso.body.Rotation + holdAngle * Dir; if (holdable.ControlPose) { @@ -1869,6 +1875,26 @@ namespace Barotrauma } } + private float GetAimWobble(Limb rightHand, Limb leftHand, Item heldItem) + { + float wobbleStrength = 0.0f; + if (character.Inventory?.GetItemInLimbSlot(InvSlotType.RightHand) == heldItem) + { + wobbleStrength += Character.CharacterHealth.GetLimbDamage(rightHand, afflictionType: "damage"); + } + if (character.Inventory?.GetItemInLimbSlot(InvSlotType.LeftHand) == heldItem) + { + wobbleStrength += Character.CharacterHealth.GetLimbDamage(leftHand, afflictionType: "damage"); + } + if (wobbleStrength <= 0.1f) { return 0.0f; } + wobbleStrength = (float)Math.Min(wobbleStrength, 1.0f); + + float lowFreqNoise = PerlinNoise.GetPerlin((float)Timing.TotalTime / 320.0f, (float)Timing.TotalTime / 240.0f) - 0.5f; + float highFreqNoise = PerlinNoise.GetPerlin((float)Timing.TotalTime / 40.0f, (float)Timing.TotalTime / 50.0f) - 0.5f; + + return (lowFreqNoise * 1.0f + highFreqNoise * 0.1f) * wobbleStrength; + } + private void HandIK(Limb hand, Vector2 pos, float force = 1.0f) { Vector2 shoulderPos; diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Attack.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Attack.cs index c89b02b76..dc2f44f07 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Characters/Attack.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Attack.cs @@ -74,6 +74,20 @@ namespace Barotrauma } } + class AttackData + { + public float DamageMultiplier { get; set; } = 1f; + public float AddedPenetration { get; set; } = 0f; + public List Afflictions { get; set; } + public Attack SourceAttack { get; } + + public AttackData(Attack sourceAttack) + { + SourceAttack = sourceAttack; + } + + } + partial class Attack : ISerializableEntity { [Serialize(AttackContext.Any, true, description: "The attack will be used only in this context."), Editable] @@ -271,6 +285,9 @@ namespace Barotrauma statusEffect.SetUser(user); } } + + // used for talents/ability conditions + public Item SourceItem { get; } public List GetMultipliedAfflictions(float multiplier) { @@ -320,6 +337,10 @@ namespace Barotrauma Penetration = Penetration; } + public Attack(XElement element, string parentDebugName, Item sourceItem) : this(element, parentDebugName) + { + SourceItem = sourceItem; + } public Attack(XElement element, string parentDebugName) { Deserialize(element); diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Character.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Character.cs index 8c2506cc9..c97e76569 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Characters/Character.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Character.cs @@ -461,10 +461,7 @@ namespace Barotrauma } } - public bool AllowInput - { - get { return Stun <= 0.0f && !IsDead && !IsIncapacitated; } - } + public bool AllowInput => !Removed && !IsIncapacitated && Stun <= 0.0f; public bool CanMove { @@ -476,10 +473,10 @@ namespace Barotrauma } } - public bool CanInteract - { - get { return AllowInput && IsHumanoid && !LockHands && !Removed && !IsIncapacitated; } - } + public bool CanInteract => AllowInput && IsHumanoid && !LockHands; + + // Eating is not implemented for humanoids. If we implement that at some point, we could remove this restriction. + public bool CanEat => !IsHumanoid && Params.CanEat && AllowInput && AnimController.GetLimb(LimbType.Head) != null; public Vector2 CursorPosition { @@ -773,8 +770,6 @@ namespace Barotrauma } } - public bool IsObserving => AIController is EnemyAIController enemyAI && enemyAI.Enabled && enemyAI.State == AIState.Observe; - public bool EnableDespawn { get; set; } = true; public CauseOfDeath CauseOfDeath @@ -1378,6 +1373,12 @@ namespace Barotrauma if (Info?.Job == null) { return 0.0f; } float skillLevel = Info.Job.GetSkillLevel(skillIdentifier); + // apply multipliers first so that multipliers only affect base skill value + foreach (Affliction affliction in CharacterHealth.GetAllAfflictions()) + { + skillLevel *= affliction.GetSkillMultiplier(); + } + if (skillIdentifier != null) { for (int i = 0; i < Inventory.Capacity; i++) @@ -1392,10 +1393,8 @@ namespace Barotrauma } } - foreach (Affliction affliction in CharacterHealth.GetAllAfflictions()) - { - skillLevel *= affliction.GetSkillMultiplier(); - } + skillLevel += GetStatValue(GetSkillStatType(skillIdentifier)); + return skillLevel; } @@ -1432,9 +1431,9 @@ namespace Barotrauma // - dragging someone // - crouching // - moving backwards - public bool CanRun => (SelectedCharacter == null || !SelectedCharacter.CanBeDragged) && + public bool CanRun => (SelectedCharacter == null || !SelectedCharacter.CanBeDragged || HasAbilityFlag(AbilityFlags.MoveNormallyWhileDragging)) && (!(AnimController is HumanoidAnimController) || !((HumanoidAnimController)AnimController).Crouching) && - !AnimController.IsMovingBackwards; + !AnimController.IsMovingBackwards && !HasAbilityFlag(AbilityFlags.MustWalk); public Vector2 ApplyMovementLimits(Vector2 targetMovement, float currentSpeed) { @@ -1595,7 +1594,7 @@ namespace Barotrauma return Math.Clamp(reduction, 0, 1f); } - private float CalculateMovementPenalty(Limb limb, float sum, float max = 0.4f) + private float CalculateMovementPenalty(Limb limb, float sum, float max = 0.8f) { if (limb != null) { @@ -1628,7 +1627,7 @@ namespace Barotrauma float max; if (AnimController is HumanoidAnimController) { - max = AnimController.InWater ? 0.5f : 0.7f; + max = AnimController.InWater ? 0.5f : 0.8f; } else { @@ -2044,7 +2043,7 @@ namespace Barotrauma return false; } - public Item GetEquippedItem(string tagOrIdentifier, InvSlotType? slotType = null) + public Item GetEquippedItem(string tagOrIdentifier = null, InvSlotType? slotType = null) { if (Inventory == null) { return null; } for (int i = 0; i < Inventory.Capacity; i++) @@ -2059,7 +2058,7 @@ namespace Barotrauma } var item = Inventory.GetItemAt(i); if (item == null) { continue; } - if (item.Prefab.Identifier == tagOrIdentifier || item.HasTag(tagOrIdentifier)) { return item; } + if (tagOrIdentifier == null || item.Prefab.Identifier == tagOrIdentifier || item.HasTag(tagOrIdentifier)) { return item; } } return null; } @@ -2365,9 +2364,9 @@ namespace Barotrauma { if (!IsMouseOnUI && (ViewTarget == null || ViewTarget == this)) { - if (findFocusedTimer <= 0.0f || Screen.Selected == GameMain.SubEditorScreen) + if ((findFocusedTimer <= 0.0f || Screen.Selected == GameMain.SubEditorScreen) && (!PlayerInput.PrimaryMouseButtonHeld() || Barotrauma.Inventory.DraggingItemToWorld)) { - FocusedCharacter = CanInteract ? FindCharacterAtPosition(mouseSimPos) : null; + FocusedCharacter = CanInteract || CanEat ? FindCharacterAtPosition(mouseSimPos) : null; if (FocusedCharacter != null && !CanSeeCharacter(FocusedCharacter)) { FocusedCharacter = null; } float aimAssist = GameMain.Config.AimAssistAmount * (AnimController.InWater ? 1.5f : 1.0f); if (HeldItems.Any(it => it?.GetComponent()?.IsActive ?? false)) @@ -2445,7 +2444,7 @@ namespace Barotrauma { DeselectCharacter(); } - else if (FocusedCharacter != null && IsKeyHit(InputType.Grab) && FocusedCharacter.CanBeDragged && CanInteract) + else if (FocusedCharacter != null && IsKeyHit(InputType.Grab) && FocusedCharacter.CanBeDragged && (CanInteract || FocusedCharacter.IsDead && CanEat)) { SelectCharacter(FocusedCharacter); } @@ -2624,6 +2623,11 @@ namespace Barotrauma UpdateAttackers(deltaTime); + foreach (var characterTalent in characterTalents) + { + characterTalent.UpdateTalent(deltaTime); + } + if (IsDead) { return; } if (GameMain.NetworkMember != null) @@ -2712,6 +2716,9 @@ namespace Barotrauma //Do ragdoll shenanigans before Stun because it's still technically a stun, innit? Less network updates for us! bool allowRagdoll = GameMain.NetworkMember?.ServerSettings?.AllowRagdollButton ?? true; bool tooFastToUnragdoll = AnimController.Collider.LinearVelocity.LengthSquared() > 5.0f * 5.0f; + bool wasRagdolled = false; + bool selfRagdolled = false; + if (IsForceRagdolled) { IsRagdolled = IsForceRagdolled; @@ -2730,12 +2737,17 @@ namespace Barotrauma } else { - bool wasRagdolled = IsRagdolled; - IsRagdolled = IsKeyDown(InputType.Ragdoll); //Handle this here instead of Control because we can stop being ragdolled ourselves + wasRagdolled = IsRagdolled; + IsRagdolled = selfRagdolled = IsKeyDown(InputType.Ragdoll); //Handle this here instead of Control because we can stop being ragdolled ourselves if (wasRagdolled != IsRagdolled) { ragdollingLockTimer = 0.25f; } } } + if (!wasRagdolled && IsRagdolled && selfRagdolled) + { + CheckTalents(AbilityEffectType.OnSelfRagdoll); + } + lowPassMultiplier = MathHelper.Lerp(lowPassMultiplier, 1.0f, 0.1f); //ragdoll button @@ -3092,6 +3104,12 @@ namespace Barotrauma OrderInfo newOrderInfo = new OrderInfo(order, orderOption, priority); AddCurrentOrder(newOrderInfo); + + if (orderGiver != null) + { + orderGiver.CheckTalents(AbilityEffectType.OnGiveOrder, this); + } + if (AIController is HumanAIController humanAI) { humanAI.SetOrder(order, orderOption, priority, orderGiver, speak); @@ -3337,9 +3355,25 @@ namespace Barotrauma float attackImpulse = attack.TargetImpulse + attack.TargetForce * deltaTime; + AttackData attackData = new AttackData(attack); + attacker.CheckTalents(AbilityEffectType.OnAttack, attackData); + CheckTalents(AbilityEffectType.OnAttacked, attackData); + attackData.DamageMultiplier *= (1 + attacker.GetStatValue(StatTypes.AttackMultiplier)); + + IEnumerable attackAfflictions; + + if (attackData.Afflictions != null) + { + attackAfflictions = attackData.Afflictions.Union(attack.Afflictions.Keys); + } + else + { + attackAfflictions = attack.Afflictions.Keys; + } + var attackResult = targetLimb == null ? - AddDamage(worldPosition, attack.Afflictions.Keys, attack.Stun, playSound, attackImpulse, out limbHit, attacker, attack.DamageMultiplier) : - DamageLimb(worldPosition, targetLimb, attack.Afflictions.Keys, attack.Stun, playSound, attackImpulse, attacker, attack.DamageMultiplier, penetration: penetration); + AddDamage(worldPosition, attackAfflictions, attack.Stun, playSound, attackImpulse, out limbHit, attacker, attack.DamageMultiplier * attackData.DamageMultiplier) : + DamageLimb(worldPosition, targetLimb, attackAfflictions, attack.Stun, playSound, attackImpulse, attacker, attack.DamageMultiplier * attackData.DamageMultiplier, penetration: penetration + attackData.AddedPenetration); if (limbHit == null) { return new AttackResult(); } Vector2 forceWorld = attack.TargetImpulseWorld + attack.TargetForceWorld; @@ -3457,6 +3491,11 @@ namespace Barotrauma public void RecordKill(Character target) { + foreach (Character attackerCrewmember in GetFriendlyCrew(this)) + { + attackerCrewmember.CheckTalents(AbilityEffectType.OnCrewKillCharacter, target); + } + if (!IsOnPlayerTeam) { return; } if (GameMain.Config.KilledCreatures.Any(name => name.Equals(target.SpeciesName, StringComparison.OrdinalIgnoreCase))) { return; } GameMain.Config.KilledCreatures.Add(target.SpeciesName); @@ -3524,7 +3563,7 @@ namespace Barotrauma bool wasDead = IsDead; Vector2 simPos = hitLimb.SimPosition + ConvertUnits.ToSimUnits(dir); float prevVitality = CharacterHealth.Vitality; - AttackResult attackResult = hitLimb.AddDamage(simPos, afflictions, playSound, damageMultiplier: damageMultiplier, penetration: penetration); + AttackResult attackResult = hitLimb.AddDamage(simPos, afflictions, playSound, damageMultiplier: damageMultiplier, penetration: penetration, attacker: attacker); CharacterHealth.ApplyDamage(hitLimb, attackResult, allowStacking); if (attacker != this) { @@ -3551,6 +3590,9 @@ namespace Barotrauma ApplyStatusEffects(ActionType.OnDamaged, 1.0f); hitLimb.ApplyStatusEffects(ActionType.OnDamaged, 1.0f); } + + attacker?.CheckTalents(AbilityEffectType.OnAttackResult, attackResult); + return attackResult; } @@ -3775,6 +3817,8 @@ namespace Barotrauma causeOfDeathAffliction?.Source ?? LastAttacker, LastDamageSource); OnDeath?.Invoke(this, CauseOfDeath); + CheckTalents(AbilityEffectType.OnDieToCharacter, CauseOfDeath.Killer); + if (GameMain.GameSession != null && Screen.Selected == GameMain.GameScreen) { SteamAchievementManager.OnCharacterKilled(this, CauseOfDeath); @@ -3782,7 +3826,11 @@ namespace Barotrauma KillProjSpecific(causeOfDeath, causeOfDeathAffliction, log); - if (info != null) { info.CauseOfDeath = CauseOfDeath; } + if (info != null) + { + info.CauseOfDeath = CauseOfDeath; + info.ResetSavedStatValues(); + } AnimController.movement = Vector2.Zero; AnimController.TargetMovement = Vector2.Zero; @@ -3805,6 +3853,11 @@ namespace Barotrauma if (GameMain.GameSession != null) { + if (GameMain.GameSession.Campaign != null && TeamID == CharacterTeamType.Team1 && !IsAssistant) + { + GameMain.GameSession.Campaign.CrewHasDied = true; + } + GameMain.GameSession.KillCharacter(this); } } @@ -4203,8 +4256,249 @@ namespace Barotrauma public bool IsProtectedFromPressure() { - return PressureProtection >= (Level.Loaded?.GetRealWorldDepth(WorldPosition.Y) ?? 1.0f); + return HasAbilityFlag(AbilityFlags.ImmuneToPressure) || PressureProtection >= (Level.Loaded?.GetRealWorldDepth(WorldPosition.Y) ?? 1.0f); } + + // Talent logic begins here. Should be encapsulated to its own controller soon + + private readonly List characterTalents = new List(); + + public void LoadTalents() + { + List toBeRemoved = null; + foreach (string talent in info.UnlockedTalents) + { + if (!GiveTalent(talent, addingFirstTime: false)) + { + DebugConsole.AddWarning(Name + " had talent that did not exist! Removing talent from CharacterInfo."); + toBeRemoved ??= new List(); + toBeRemoved.Add(talent); + } + } + + if (toBeRemoved != null) + { + foreach (string removeTalent in toBeRemoved) + { + Info.UnlockedTalents.Remove(removeTalent); + } + } + } + + public bool GiveTalent(string talentIdentifier, bool addingFirstTime = true) + { + TalentPrefab talentPrefab = TalentPrefab.TalentPrefabs.Find(c => c.Identifier.Equals(talentIdentifier, StringComparison.OrdinalIgnoreCase)); + if (talentPrefab == null) + { + DebugConsole.AddWarning($"Tried to add talent by identifier {talentIdentifier} to character {Name}, but no such talent exists."); + return false; + } + return GiveTalent(talentPrefab, addingFirstTime); + } + + public bool GiveTalent(UInt32 talentIdentifier, bool addingFirstTime = true) + { + TalentPrefab talentPrefab = TalentPrefab.TalentPrefabs.Find(c => c.UIntIdentifier == talentIdentifier); + if (talentPrefab == null) + { + DebugConsole.AddWarning($"Tried to add talent by identifier {talentIdentifier} to character {Name}, but no such talent exists."); + return false; + } + return GiveTalent(talentPrefab, addingFirstTime); + } + + private bool GiveTalent(TalentPrefab talentPrefab, bool addingFirstTime = true) + { + if (addingFirstTime) + { + if (!info.UnlockedTalents.Add(talentPrefab.Identifier)) { return false; } + } + + DebugConsole.AddWarning("added " + talentPrefab.OriginalName); + CharacterTalent characterTalent = new CharacterTalent(talentPrefab, this); + characterTalent.ActivateTalent(addingFirstTime); + characterTalents.Add(characterTalent); + +#if SERVER + GameMain.NetworkMember.CreateEntityEvent(this, new object[] { NetEntityEvent.Type.UpdateTalents }); +#endif + + return true; + } + + public bool HasTalent(string identifier) + { + return info.UnlockedTalents.Contains(identifier); + } + + public static IEnumerable GetFriendlyCrew(Character character) + { + return CharacterList.Where(c => HumanAIController.IsFriendly(character, c, onlySameTeam: true) && !c.IsDead); + } + + public void CheckTalents(AbilityEffectType abilityEffectType, object abilityData) + { + foreach (var characterTalent in characterTalents) + { + characterTalent.CheckTalent(abilityEffectType, abilityData); + } + } + + public void CheckTalents(AbilityEffectType abilityEffectType) + { + foreach (var characterTalent in characterTalents) + { + characterTalent.CheckTalent(abilityEffectType, (object)null); + } + } + + public bool HasRecipeForItem(string recipeIdentifier) + { + return characterTalents.Any(t => t.UnlockedRecipes.Contains(recipeIdentifier)); + } + + /// + /// Shows visual notification of money gained by the specific player. Useful for mid-mission monetary gains. + /// + public void GiveMoney(int amount) + { + if (!(GameMain.GameSession?.Campaign is CampaignMode campaign)) { return; } + if (amount <= 0) { return; } + + int prevAmount = campaign.Money; + campaign.Money += amount; + OnMoneyChanged(prevAmount, campaign.Money); + } + + public void SetMoney(int amount) + { + if (!(GameMain.GameSession?.Campaign is CampaignMode campaign)) { return; } + if (amount == campaign.Money) { return; } + + int prevAmount = campaign.Money; + campaign.Money = amount; + OnMoneyChanged(prevAmount, campaign.Money); + } + + partial void OnMoneyChanged(int prevAmount, int newAmount); + + /// + /// This dictionary is used for stats that are required very frequently. Not very performant, but easier to develop with for now. + /// If necessary, the approach of using a dictionary could be replaced by an encapsulated class that contains the stats as attributes. + /// + private readonly Dictionary statValues = new Dictionary(); + + public float GetStatValue(StatTypes statType) + { + if (!IsHuman) { return 0f; } + + float statValue = 0f; + if (statValues.TryGetValue(statType, out float value)) + { + statValue += value; + } + if (CharacterHealth != null) + { + statValue += CharacterHealth.GetStatValue(statType); + } + if (Info != null) + { + // could be optimized by instead updating the Character.cs statvalues dictionary whenever the CharacterInfo.cs values change + statValue += Info.GetSavedStatValue(statType); + } + + //replace by updating the character wearable stat values when equipping or unequipping wearables + for (int i = 0; i < Inventory.Capacity; i++) + { + if (Inventory.SlotTypes[i] != InvSlotType.Any && Inventory.GetItemAt(i)?.GetComponent() is Wearable wearable) + { + if (wearable.WearableStatValues.TryGetValue(statType, out float wearableValue)) + { + statValue += wearableValue; + } + } + } + + return statValue; + } + + public void ChangeStat(StatTypes statType, float value) + { + if (statValues.ContainsKey(statType)) + { + statValues[statType] += value; + } + else + { + statValues.Add(statType, value); + } + } + + private StatTypes GetSkillStatType(string skillIdentifier) + { + // Using this method to translate between skill identifiers and stat types. Feel free to replace it if there's a better way + switch (skillIdentifier) + { + case "electrical": + return StatTypes.ElectricalSkillBonus; + case "helm": + return StatTypes.HelmSkillBonus; + case "mechanical": + return StatTypes.MechanicalSkillBonus; + case "medical": + return StatTypes.MedicalSkillBonus; + case "weapons": + return StatTypes.WeaponsSkillBonus; + default: + return StatTypes.None; + } + } + + private readonly List abilityFlags = new List(); + + public void AddAbilityFlag(AbilityFlags abilityFlag) + { + abilityFlags.Add(abilityFlag); + } + + public void RemoveAbilityFlag(AbilityFlags abilityFlag) + { + abilityFlags.Remove(abilityFlag); + } + + public bool HasAbilityFlag(AbilityFlags abilityFlag) + { + return abilityFlags.Contains(abilityFlag); + } + + private readonly Dictionary abilityResistances = new Dictionary(); + + public float GetAbilityResistance(string resistanceId) + { + return abilityResistances.TryGetValue(resistanceId, out float value) ? value : 1f; + } + + public void ChangeAbilityResistance(string resistanceId, float value) + { + if (abilityResistances.ContainsKey(resistanceId)) + { + abilityResistances[resistanceId] *= value; + } + else + { + abilityResistances.Add(resistanceId, value); + } + } + + /// + /// Compares just the species name and the group, ignores teams. There's a more complex version found in HumanAIController.cs + /// + public bool IsFriendly(Character other) => IsFriendly(this, other); + + /// + /// Compares just the species name and the group, ignores teams. There's a more complex version found in HumanAIController.cs + /// + public static bool IsFriendly(Character me, Character other) => other.SpeciesName == me.SpeciesName || other.Params.CompareGroup(me.Params.Group); } class ActiveTeamChange diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/CharacterInfo.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/CharacterInfo.cs index 14e7f34c5..9526ce3a4 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Characters/CharacterInfo.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/CharacterInfo.cs @@ -7,6 +7,7 @@ using System.Collections.Generic; using Barotrauma.IO; using System.Linq; using System.Xml.Linq; +using Barotrauma.Abilities; namespace Barotrauma { @@ -215,6 +216,12 @@ namespace Barotrauma public int Salary; + public int ExperiencePoints { get; private set; } + + public HashSet UnlockedTalents { get; private set; } = new HashSet(); + + public int AdditionalTalentPoints { get; private set; } + private Sprite headSprite; public Sprite HeadSprite { @@ -529,6 +536,8 @@ namespace Barotrauma OriginalName = infoElement.GetAttributeString("originalname", null); string genderStr = infoElement.GetAttributeString("gender", "male").ToLowerInvariant(); Salary = infoElement.GetAttributeInt("salary", 1000); + ExperiencePoints = infoElement.GetAttributeInt("experiencepoints", 0); + UnlockedTalents = new HashSet(infoElement.GetAttributeStringArray("unlockedtalents", new string[0], convertToLowerInvariant: true)); Enum.TryParse(infoElement.GetAttributeString("race", "White"), true, out Race race); Enum.TryParse(infoElement.GetAttributeString("gender", "None"), true, out Gender gender); _speciesName = infoElement.GetAttributeString("speciesname", null); @@ -599,10 +608,38 @@ namespace Barotrauma } foreach (XElement subElement in infoElement.Elements()) { - if (subElement.Name.ToString().Equals("job", StringComparison.OrdinalIgnoreCase)) + bool jobCreated = false; + if (subElement.Name.ToString().Equals("job", StringComparison.OrdinalIgnoreCase) && !jobCreated) { Job = new Job(subElement); - break; + jobCreated = true; + // there used to be a break here, but it had to be removed to make room for statvalues + // using the jobCreated boolean to make sure that only the first job found is created + } + else if (subElement.Name.ToString().Equals("savedstatvalues", StringComparison.OrdinalIgnoreCase)) + { + foreach (XElement savedStat in subElement.Elements()) + { + string statTypeString = savedStat.GetAttributeString("stattype", "").ToLowerInvariant(); + if (!Enum.TryParse(statTypeString, true, out StatTypes statType)) + { + DebugConsole.ThrowError("Invalid stat type type \"" + statTypeString + "\" when loading character data in CharacterInfo!"); + continue; + } + + float value = savedStat.GetAttributeFloat("statvalue", 0f); + if (value == 0f) { continue; } + + string statIdentifier = savedStat.GetAttributeString("statidentifier", "").ToLowerInvariant(); + if (string.IsNullOrEmpty(statIdentifier)) + { + DebugConsole.ThrowError("Stat identifier not specified for Stat Value when loading character data in CharacterInfo!"); + return; + } + + bool removeOnDeath = savedStat.GetAttributeBool("removeondeath", true); + ChangeSavedStatValue(statType, value, statIdentifier, removeOnDeath); + } } } LoadHeadAttachments(); @@ -939,6 +976,15 @@ namespace Barotrauma Job.IncreaseSkillLevel(skillIdentifier, increase); float newLevel = Job.GetSkillLevel(skillIdentifier); + if ((int)newLevel > (int)prevLevel) + { + Character.CheckTalents(AbilityEffectType.OnGainSkillPoint, skillIdentifier); + + foreach (Character character in Character.GetFriendlyCrew(Character)) + { + character.CheckTalents(AbilityEffectType.OnAllyGainSkillPoint, (skillIdentifier, Character)); + } + } OnSkillChanged(skillIdentifier, prevLevel, newLevel, pos); } @@ -963,6 +1009,90 @@ namespace Barotrauma partial void OnSkillChanged(string skillIdentifier, float prevLevel, float newLevel, Vector2 textPopupPos); + public void GiveExperience(int amount, float popupOffset = 0f, bool isMissionExperience = false) + { + int prevAmount = ExperiencePoints; + + var experienceGainMultiplier = new AbilityValue(1f); + if (isMissionExperience) + { + Character.CheckTalents(AbilityEffectType.OnGainMissionExperience, experienceGainMultiplier); + } + experienceGainMultiplier.Value += Character.GetStatValue(StatTypes.ExperienceGainMultiplier); + + amount = (int)(amount * experienceGainMultiplier.Value); + + if (amount < 0) { return; } + + ExperiencePoints += amount; + OnExperienceChanged(prevAmount, ExperiencePoints, Character.Position + Vector2.UnitY * (150.0f + popupOffset)); + } + + public void SetExperience(int newExperience) + { + if (newExperience < 0) { return; } + + int prevAmount = ExperiencePoints; + ExperiencePoints = newExperience; + OnExperienceChanged(prevAmount, ExperiencePoints, Character.Position + Vector2.UnitY * 150.0f); + } + + const int BaseExperienceRequired = 150; + const int AddedExperienceRequiredPerLevel = 350; + + public int GetTotalTalentPoints() + { + return GetCurrentLevel() + AdditionalTalentPoints - 1; + } + + public int GetAvailableTalentPoints() + { + // hashset always has at least 1 + return Math.Max(GetTotalTalentPoints() - UnlockedTalents.Count, 0); + } + + public float GetProgressTowardsNextLevel() + { + float progress = (ExperiencePoints - GetExperienceRequiredForCurrentLevel()) / (GetExperienceRequiredToLevelUp() - GetExperienceRequiredForCurrentLevel()); + return progress; + } + + public float GetExperienceRequiredForCurrentLevel() + { + GetCurrentLevel(out int experienceRequired); + return experienceRequired; + } + + public float GetExperienceRequiredToLevelUp() + { + int level = GetCurrentLevel(out int experienceRequired); + return experienceRequired + ExperienceRequiredPerLevel(level); + } + + public int GetCurrentLevel() + { + return GetCurrentLevel(out _); + } + + private int GetCurrentLevel(out int experienceRequired) + { + int level = 1; + experienceRequired = 0; + while (experienceRequired + ExperienceRequiredPerLevel(level) <= ExperiencePoints) + { + experienceRequired += ExperienceRequiredPerLevel(level); + level++; + } + return level; + } + + private int ExperienceRequiredPerLevel(int level) + { + return BaseExperienceRequired + AddedExperienceRequiredPerLevel * level; + } + + partial void OnExperienceChanged(int prevAmount, int newAmount, Vector2 textPopupPos); + public void Rename(string newName) { if (string.IsNullOrEmpty(newName)) { return; } @@ -999,6 +1129,8 @@ namespace Barotrauma new XAttribute("gender", Head.gender == Gender.Male ? "male" : "female"), new XAttribute("race", Head.race.ToString()), new XAttribute("salary", Salary), + new XAttribute("experiencepoints", ExperiencePoints), + new XAttribute("unlockedtalents", string.Join(",", UnlockedTalents)), new XAttribute("headspriteid", HeadSpriteId), new XAttribute("hairindex", HairIndex), new XAttribute("beardindex", BeardIndex), @@ -1020,6 +1152,24 @@ namespace Barotrauma Job.Save(charElement); + XElement savedStatElement = new XElement("savedstatvalues"); + foreach (var statValuePair in savedStatValues) + { + foreach (var savedStat in statValuePair.Value) + { + if (savedStat.StatValue == 0f) { continue; } + + savedStatElement.Add(new XElement("savedstatvalue", + new XAttribute("stattype", statValuePair.Key.ToString()), + new XAttribute("statidentifier", savedStat.StatIdentifier), + new XAttribute("statvalue", savedStat.StatValue), + new XAttribute("removeondeath", savedStat.RemoveOnDeath) + )); + } + } + + charElement.Add(savedStatElement); + parentElement.Add(charElement); return charElement; } @@ -1332,5 +1482,68 @@ namespace Barotrauma Portrait = null; AttachmentSprites = null; } + + // This could maybe be a LookUp instead? + private readonly Dictionary> savedStatValues = new Dictionary>(); + + public void ResetSavedStatValues() + { + foreach (var savedStatValue in savedStatValues.SelectMany(s => s.Value)) + { + if (savedStatValue.RemoveOnDeath) + { + savedStatValue.StatValue = 0f; + } + } + } + + public void ResetSavedStatValue(string statIdentifier) + { + savedStatValues.SelectMany(s => s.Value).Where(s => s.StatIdentifier == statIdentifier).ForEach(v => v.StatValue = 0f); + } + + public float GetSavedStatValue(StatTypes statType) + { + if (savedStatValues.TryGetValue(statType, out var statValues)) + { + return statValues.Sum(v => v.StatValue); + } + else + { + return 0f; + } + } + + public void ChangeSavedStatValue(StatTypes statType, float value, string statIdentifier, bool removeOnDeath) + { + if (!savedStatValues.ContainsKey(statType)) + { + savedStatValues.Add(statType, new List()); + } + + if (savedStatValues[statType].FirstOrDefault(s => s.StatIdentifier == statIdentifier) is SavedStatValue savedStat) + { + savedStat.StatValue += value; + savedStat.RemoveOnDeath = removeOnDeath; + } + else + { + savedStatValues[statType].Add(new SavedStatValue(statIdentifier, value, removeOnDeath)); + } + } + } + + public class SavedStatValue + { + public string StatIdentifier { get; set; } + public float StatValue { get; set; } + public bool RemoveOnDeath { get; set; } + + public SavedStatValue(string statIdentifier, float value, bool removeOnDeath) + { + StatValue = value; + RemoveOnDeath = removeOnDeath; + StatIdentifier = statIdentifier; + } } } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Health/Afflictions/Affliction.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Health/Afflictions/Affliction.cs index 82f03ec56..96b550b47 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Characters/Health/Afflictions/Affliction.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Health/Afflictions/Affliction.cs @@ -237,6 +237,26 @@ namespace Barotrauma (Strength - currentEffect.MinStrength) / (currentEffect.MaxStrength - currentEffect.MinStrength)); } + public float GetStatValue(StatTypes statType) + { + if (!(GetViableEffect() is AfflictionPrefab.Effect currentEffect)) { return 0.0f; } + + if (currentEffect.AfflictionStatValues.TryGetValue(statType, out var value)) + { + return MathHelper.Lerp( + value.minValue, + value.maxValue, + (Strength - currentEffect.MinStrength) / (currentEffect.MaxStrength - currentEffect.MinStrength)); + } + return 0.0f; + } + + private AfflictionPrefab.Effect GetViableEffect() + { + if (Strength < Prefab.ActivationThreshold) { return null; } + return GetActiveEffect(); + } + public virtual void Update(CharacterHealth characterHealth, Limb targetLimb, float deltaTime) { foreach (AfflictionPrefab.PeriodicEffect periodicEffect in Prefab.PeriodicEffects) @@ -264,7 +284,11 @@ namespace Barotrauma if (currentEffect.StrengthChange < 0) // Reduce diminishing of buffs if boosted { - _strength += currentEffect.StrengthChange * deltaTime * StrengthDiminishMultiplier; + float durationMultiplier = 1 / (1 + (Prefab.IsBuff ? characterHealth.Character.GetStatValue(StatTypes.BuffDurationMultiplier) + : characterHealth.Character.GetStatValue(StatTypes.DebuffDurationMultiplier))); + + _strength += currentEffect.StrengthChange * deltaTime * StrengthDiminishMultiplier * durationMultiplier; + } else // Reduce strengthening of afflictions if resistant { diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Health/Afflictions/AfflictionHusk.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Health/Afflictions/AfflictionHusk.cs index 10907fe96..82f12e892 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Characters/Health/Afflictions/AfflictionHusk.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Health/Afflictions/AfflictionHusk.cs @@ -212,6 +212,25 @@ namespace Barotrauma husk.Info.TeamID = CharacterTeamType.None; } + if (Prefab is AfflictionPrefabHusk huskPrefab) + { + if (huskPrefab.ControlHusk) + { +#if SERVER + var client = GameMain.Server?.ConnectedClients.FirstOrDefault(c => c.CharacterInfo.Character == character); + if (client != null) + { + GameMain.Server.SetClientCharacter(client, husk); + } +#else + if (!character.IsRemotelyControlled && character == Character.Controlled) + { + Character.Controlled = husk; + } +#endif + } + } + foreach (Limb limb in husk.AnimController.Limbs) { if (limb.type == LimbType.None) @@ -229,15 +248,19 @@ namespace Barotrauma } } + if ((Prefab as AfflictionPrefabHusk)?.TransferBuffs ?? false) + { + foreach (Affliction affliction in character.CharacterHealth.Afflictions) + { + if (affliction.Prefab.IsBuff) + { + husk.CharacterHealth.ApplyAffliction(null, affliction.Prefab.Instantiate(affliction.Strength)); + } + } + } + if (character.Inventory != null && husk.Inventory != null) { - if (character.Inventory.Capacity != husk.Inventory.Capacity) - { - string errorMsg = "Failed to move items from the source character's inventory into a husk's inventory (inventory sizes don't match)"; - DebugConsole.ThrowError(errorMsg); - GameAnalyticsManager.AddErrorEventOnce("AfflictionHusk.CreateAIHusk:InventoryMismatch", GameAnalyticsSDK.Net.EGAErrorSeverity.Error, errorMsg); - yield return CoroutineStatus.Success; - } for (int i = 0; i < character.Inventory.Capacity && i < husk.Inventory.Capacity; i++) { character.Inventory.GetItemsAt(i).ForEachMod(item => husk.Inventory.TryPutItem(item, i, true, false, null)); diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Health/Afflictions/AfflictionPrefab.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Health/Afflictions/AfflictionPrefab.cs index 0606a8368..619fb81f0 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Characters/Health/Afflictions/AfflictionPrefab.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Health/Afflictions/AfflictionPrefab.cs @@ -5,6 +5,7 @@ using System.Reflection; using System.Xml.Linq; using System.Linq; using System.Security.Cryptography; +using Barotrauma.Abilities; namespace Barotrauma { @@ -91,9 +92,11 @@ namespace Barotrauma AttachLimbType = LimbType.None; } + TransferBuffs = element.GetAttributeBool("transferbuffs", true); SendMessages = element.GetAttributeBool("sendmessages", true); CauseSpeechImpediment = element.GetAttributeBool("causespeechimpediment", true); NeedsAir = element.GetAttributeBool("needsair", false); + ControlHusk = element.GetAttributeBool("controlhusk", false); } // Use any of these to define which limb the appendage is attached to. @@ -106,9 +109,11 @@ namespace Barotrauma public readonly string[] TargetSpecies; public const string Tag = "[speciesname]"; + public readonly bool TransferBuffs; public readonly bool SendMessages; public readonly bool CauseSpeechImpediment; public readonly bool NeedsAir; + public readonly bool ControlHusk; } class AfflictionPrefab : IPrefab, IDisposable, IHasUintIdentifier @@ -116,83 +121,93 @@ namespace Barotrauma public class Effect { //this effect is applied when the strength is within this range - public float MinStrength, MaxStrength; + [Serialize(0.0f, false)] + public float MinStrength { get; private set; } + + [Serialize(0.0f, false)] + public float MaxStrength { get; private set; } + + [Serialize(0.0f, false)] + public float MinVitalityDecrease { get; private set; } + + [Serialize(0.0f, false)] + public float MaxVitalityDecrease { get; private set; } - public readonly float MinVitalityDecrease = 0.0f; - public readonly float MaxVitalityDecrease = 0.0f; - //how much the strength of the affliction changes per second - public readonly float StrengthChange = 0.0f; + [Serialize(0.0f, false)] + public float StrengthChange { get; private set; } - public readonly bool MultiplyByMaxVitality; + [Serialize(false, false)] + public bool MultiplyByMaxVitality { get; private set; } - public float MinScreenBlurStrength, MaxScreenBlurStrength; - public float MinScreenDistortStrength, MaxScreenDistortStrength; - public float MinGrainStrength, MaxGrainStrength; - public float MinRadialDistortStrength, MaxRadialDistortStrength; - public float MinChromaticAberrationStrength, MaxChromaticAberrationStrength; - public float MinSpeedMultiplier, MaxSpeedMultiplier; - public float MinBuffMultiplier, MaxBuffMultiplier; + [Serialize(0.0f, false)] + public float MinScreenBlurStrength { get; private set; } - public float MinSkillMultiplier, MaxSkillMultiplier; + [Serialize(0.0f, false)] + public float MaxScreenBlurStrength { get; private set; } - public float MinResistance, MaxResistance; - public string ResistanceFor; - public string DialogFlag; + [Serialize(0.0f, false)] + public float MinScreenDistortStrength { get; private set; } + + [Serialize(0.0f, false)] + public float MaxScreenDistortStrength { get; private set; } + + [Serialize(0.0f, false)] + public float MinRadialDistortStrength { get; private set; } + + [Serialize(0.0f, false)] + public float MaxRadialDistortStrength { get; private set; } + + [Serialize(0.0f, false)] + public float MinChromaticAberrationStrength { get; private set; } + + [Serialize(0.0f, false)] + public float MaxChromaticAberrationStrength { get; private set; } + + [Serialize(0.0f, false)] + public float MinGrainStrength { get; private set; } + + [Serialize(0.0f, false)] + public float MaxGrainStrength { get; private set; } + + [Serialize(1.0f, false)] + public float MinBuffMultiplier { get; private set; } + + [Serialize(1.0f, false)] + public float MaxBuffMultiplier { get; private set; } + + [Serialize(1.0f, false)] + public float MinSpeedMultiplier { get; private set; } + + [Serialize(1.0f, false)] + public float MaxSpeedMultiplier { get; private set; } + + [Serialize(1.0f, false)] + public float MinSkillMultiplier { get; private set; } + + [Serialize(1.0f, false)] + public float MaxSkillMultiplier { get; private set; } + + [Serialize("", false)] + public string ResistanceFor { get; private set; } + + [Serialize(0.0f, false)] + public float MinResistance { get; private set; } + + [Serialize(0.0f, false)] + public float MaxResistance { get; private set; } + + [Serialize("", false)] + public string DialogFlag { get; private set; } + + public readonly Dictionary AfflictionStatValues = new Dictionary(); //statuseffects applied on the character when the affliction is active public readonly List StatusEffects = new List(); public Effect(XElement element, string parentDebugName) { - MinStrength = element.GetAttributeFloat("minstrength", 0); - MaxStrength = element.GetAttributeFloat("maxstrength", 0); - - MultiplyByMaxVitality = element.GetAttributeBool("multiplybymaxvitality", false); - - MinVitalityDecrease = element.GetAttributeFloat("minvitalitydecrease", 0.0f); - MaxVitalityDecrease = element.GetAttributeFloat("maxvitalitydecrease", 0.0f); - MaxVitalityDecrease = Math.Max(MinVitalityDecrease, MaxVitalityDecrease); - - MinScreenDistortStrength = element.GetAttributeFloat("minscreendistort", 0.0f); - MaxScreenDistortStrength = element.GetAttributeFloat("maxscreendistort", 0.0f); - MaxScreenDistortStrength = Math.Max(MinScreenDistortStrength, MaxScreenDistortStrength); - - MinRadialDistortStrength = element.GetAttributeFloat("minradialdistort", 0.0f); - MaxRadialDistortStrength = element.GetAttributeFloat("maxradialdistort", 0.0f); - MaxRadialDistortStrength = Math.Max(MinRadialDistortStrength, MaxRadialDistortStrength); - - MinChromaticAberrationStrength = element.GetAttributeFloat("minchromaticaberration", 0.0f); - MaxChromaticAberrationStrength = element.GetAttributeFloat("maxchromaticaberration", 0.0f); - MaxChromaticAberrationStrength = Math.Max(MinChromaticAberrationStrength, MaxChromaticAberrationStrength); - - MinGrainStrength = element.GetAttributeFloat(nameof(MinGrainStrength).ToLower(), 0.0f); - MaxGrainStrength = element.GetAttributeFloat(nameof(MaxGrainStrength).ToLower(), 0.0f); - MaxGrainStrength = Math.Max(MinGrainStrength, MaxGrainStrength); - - MinScreenBlurStrength = element.GetAttributeFloat("minscreenblur", 0.0f); - MaxScreenBlurStrength = element.GetAttributeFloat("maxscreenblur", 0.0f); - MaxScreenBlurStrength = Math.Max(MinScreenBlurStrength, MaxScreenBlurStrength); - - MinSkillMultiplier = element.GetAttributeFloat("minskillmultiplier", 1.0f); - MaxSkillMultiplier = element.GetAttributeFloat("maxskillmultiplier", 1.0f); - - ResistanceFor = element.GetAttributeString("resistancefor", ""); - MinResistance = element.GetAttributeFloat("minresistance", 0.0f); - MaxResistance = element.GetAttributeFloat("maxresistance", 0.0f); - MaxResistance = Math.Max(MinResistance, MaxResistance); - - MinSpeedMultiplier = element.GetAttributeFloat("minspeedmultiplier", 1.0f); - MaxSpeedMultiplier = element.GetAttributeFloat("maxspeedmultiplier", 1.0f); - MaxSpeedMultiplier = Math.Max(MinSpeedMultiplier, MaxSpeedMultiplier); - - MinBuffMultiplier = element.GetAttributeFloat("minbuffmultiplier", 1.0f); - MaxBuffMultiplier = element.GetAttributeFloat("maxbuffmultiplier", 1.0f); - MaxBuffMultiplier = Math.Max(MinBuffMultiplier, MaxBuffMultiplier); - - DialogFlag = element.GetAttributeString("dialogflag", ""); - - StrengthChange = element.GetAttributeFloat("strengthchange", 0.0f); + SerializableProperty.DeserializeProperties(this, element); foreach (XElement subElement in element.Elements()) { @@ -201,6 +216,15 @@ namespace Barotrauma case "statuseffect": StatusEffects.Add(StatusEffect.Load(subElement, parentDebugName)); break; + case "statvalue": + var statType = CharacterAbilityGroup.ParseStatType(subElement.GetAttributeString("stattype", ""), parentDebugName); + + float defaultValue = subElement.GetAttributeFloat("value", 0f); + float minValue = subElement.GetAttributeFloat("minvalue", defaultValue); + float maxValue = subElement.GetAttributeFloat("maxvalue", defaultValue); + + AfflictionStatValues.TryAdd(statType, (minValue, maxValue)); + break; } } } @@ -590,7 +614,7 @@ namespace Barotrauma ShowIconThreshold = element.GetAttributeFloat("showiconthreshold", Math.Max(ActivationThreshold, 0.05f)); ShowIconToOthersThreshold = element.GetAttributeFloat("showicontoothersthreshold", ShowIconThreshold); MaxStrength = element.GetAttributeFloat("maxstrength", 100.0f); - GrainBurst = element.GetAttributeFloat(nameof(GrainBurst).ToLower(), 0.0f); + GrainBurst = element.GetAttributeFloat(nameof(GrainBurst).ToLowerInvariant(), 0.0f); ShowInHealthScannerThreshold = element.GetAttributeFloat("showinhealthscannerthreshold", Math.Max(ActivationThreshold, 0.05f)); TreatmentThreshold = element.GetAttributeFloat("treatmentthreshold", Math.Max(ActivationThreshold, 5.0f)); diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Health/CharacterHealth.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Health/CharacterHealth.cs index ad2d820c5..a4908115e 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Characters/Health/CharacterHealth.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Health/CharacterHealth.cs @@ -116,15 +116,15 @@ namespace Barotrauma private set => Character.Params.Health.CrushDepth = value; } - private List limbHealths = new List(); + private readonly List limbHealths = new List(); //non-limb-specific afflictions - private List afflictions = new List(); + private readonly List afflictions = new List(); /// /// Note: returns only the non-limb-secific afflictions. Use GetAllAfflictions or some other method for getting also the limb-specific afflictions. /// public IEnumerable Afflictions => afflictions; - private HashSet irremovableAfflictions = new HashSet(); + private readonly HashSet irremovableAfflictions = new HashSet(); private Affliction bloodlossAffliction; private Affliction oxygenLowAffliction; private Affliction pressureAffliction; @@ -151,6 +151,7 @@ namespace Barotrauma max += Character.Info.Job.Prefab.VitalityModifier; } max *= Character.StaticHealthMultiplier; + max *= 1f + Character.GetStatValue(StatTypes.MaximumHealthMultiplier); return max * Character.HealthMultiplier; } } @@ -434,10 +435,21 @@ namespace Barotrauma float temp = afflictions[i].GetResistance(resistanceId); if (temp > resistance) resistance = temp; } + resistance = 1 - ((1 - resistance) * Character.GetAbilityResistance(resistanceId)); return resistance; } + public float GetStatValue(StatTypes statType) + { + float value = 0f; + for (int i = 0; i < afflictions.Count; i++) + { + value += afflictions[i].GetStatValue(statType); + } + return value; + } + private readonly List matchingAfflictions = new List(); public void ReduceAffliction(Limb targetLimb, string affliction, float amount) { @@ -468,6 +480,11 @@ namespace Barotrauma for (int i = matchingAfflictions.Count - 1; i >= 0; i--) { var matchingAffliction = matchingAfflictions[i]; + + // kind of bad to create a tuple every time, but I can't think of another way to easily do this + var afflictionReduction = (matchingAffliction, reduceAmount); + Character.CheckTalents(AbilityEffectType.OnReduceAffliction, afflictionReduction); + if (matchingAffliction.Strength < reduceAmount) { float surplus = reduceAmount - matchingAffliction.Strength; @@ -539,9 +556,9 @@ namespace Barotrauma else { // Instead of using the limbhealth count here, I think it's best to define the max vitality per limb roughly with a constant value. - // Therefore with e.g. 80 health, the max damage per limb would be 20. - // Having at least 20 damage on both legs would cause maximum limping. - float max = MaxVitality / 4; + // Therefore with e.g. 80 health, the max damage per limb would be 40. + // Having at least 40 damage on both legs would cause maximum limping. + float max = MaxVitality / 2; if (string.IsNullOrEmpty(afflictionType)) { float damage = GetAfflictionStrength("damage", limb, true); @@ -738,7 +755,15 @@ namespace Barotrauma affliction.DamagePerSecondTimer += deltaTime; Character.StackSpeedMultiplier(affliction.GetSpeedMultiplier()); } - + + Character.StackSpeedMultiplier(1f + Character.GetStatValue(StatTypes.MovementSpeed)); + + // maybe a bit of a hacky way to do this. should inquire if there is a better way. M61T + if (Character.InWater) + { + Character.StackSpeedMultiplier(1f + Character.GetStatValue(StatTypes.SwimmingSpeed)); + } + UpdateLimbAfflictionOverlays(); CalculateVitality(); @@ -825,8 +850,8 @@ namespace Barotrauma { if (Unkillable || Character.GodMode) { return; } - var causeOfDeath = GetCauseOfDeath(); - Character.Kill(causeOfDeath.First, causeOfDeath.Second); + var (type, affliction) = GetCauseOfDeath(); + Character.Kill(type, affliction); #if CLIENT DisplayVitalityDelay = 0.0f; DisplayedVitality = Vitality; @@ -859,7 +884,7 @@ namespace Barotrauma } } - public Pair GetCauseOfDeath() + public (CauseOfDeathType type, Affliction affliction) GetCauseOfDeath() { List currentAfflictions = GetAllAfflictions(true); @@ -880,7 +905,7 @@ namespace Barotrauma causeOfDeath = Character.AnimController.InWater ? CauseOfDeathType.Drowning : CauseOfDeathType.Suffocation; } - return new Pair(causeOfDeath, strongestAffliction); + return (causeOfDeath, strongestAffliction); } // TODO: this method is called a lot (every half second) -> optimize, don't create new class instances and lists every time! @@ -968,7 +993,7 @@ namespace Barotrauma } private readonly List activeAfflictions = new List(); - private readonly List> limbAfflictions = new List>(); + private readonly List<(LimbHealth limbHealth, Affliction affliction)> limbAfflictions = new List<(LimbHealth limbHealth, Affliction affliction)>(); public void ServerWrite(IWriteMessage msg) { activeAfflictions.Clear(); @@ -999,22 +1024,22 @@ namespace Barotrauma foreach (Affliction limbAffliction in limbHealth.Afflictions) { if (limbAffliction.Strength <= 0.0f || limbAffliction.Strength < limbAffliction.Prefab.ActivationThreshold) continue; - limbAfflictions.Add(new Pair(limbHealth, limbAffliction)); + limbAfflictions.Add((limbHealth, limbAffliction)); } } msg.Write((byte)limbAfflictions.Count); - foreach (var limbAffliction in limbAfflictions) + foreach (var (limbHealth, affliction) in limbAfflictions) { - msg.WriteRangedInteger(limbHealths.IndexOf(limbAffliction.First), 0, limbHealths.Count - 1); - msg.Write(limbAffliction.Second.Prefab.UIntIdentifier); + msg.WriteRangedInteger(limbHealths.IndexOf(limbHealth), 0, limbHealths.Count - 1); + msg.Write(affliction.Prefab.UIntIdentifier); msg.WriteRangedSingle( - MathHelper.Clamp(limbAffliction.Second.Strength, 0.0f, limbAffliction.Second.Prefab.MaxStrength), - 0.0f, limbAffliction.Second.Prefab.MaxStrength, 8); - msg.Write((byte)limbAffliction.Second.Prefab.PeriodicEffects.Count()); - foreach (AfflictionPrefab.PeriodicEffect periodicEffect in limbAffliction.Second.Prefab.PeriodicEffects) + MathHelper.Clamp(affliction.Strength, 0.0f, affliction.Prefab.MaxStrength), + 0.0f, affliction.Prefab.MaxStrength, 8); + msg.Write((byte)affliction.Prefab.PeriodicEffects.Count()); + foreach (AfflictionPrefab.PeriodicEffect periodicEffect in affliction.Prefab.PeriodicEffects) { - msg.WriteRangedSingle(limbAffliction.Second.PeriodicEffectTimers[periodicEffect], periodicEffect.MinInterval, periodicEffect.MaxInterval, 8); + msg.WriteRangedSingle(affliction.PeriodicEffectTimers[periodicEffect], periodicEffect.MinInterval, periodicEffect.MaxInterval, 8); } } } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/HumanPrefab.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/HumanPrefab.cs index f87c976ed..e1dfcebc8 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Characters/HumanPrefab.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/HumanPrefab.cs @@ -217,10 +217,6 @@ namespace Barotrauma if (item.Prefab.Identifier == "idcard" || item.Prefab.Identifier == "idcardwreck") { item.AddTag("name:" + character.Name); - if (Level.Loaded != null) - { - item.ReplaceTag("wreck_id", Level.Loaded.GetWreckIDTag("wreck_id", submarine)); - } var job = character.Info?.Job; if (job != null) { @@ -229,6 +225,10 @@ namespace Barotrauma IdCard idCardComponent = item.GetComponent(); idCardComponent?.Initialize(character.Info); + if (submarine != null && (submarine.Info.IsWreck || submarine.Info.IsOutpost)) + { + idCardComponent.SubmarineSpecificID = submarine.SubmarineSpecificIDTag; + } var idCardTags = itemElement.GetAttributeStringArray("tags", new string[0]); foreach (string tag in idCardTags) diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Limb.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Limb.cs index 92087ad79..ed33edcd9 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Characters/Limb.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Limb.cs @@ -219,7 +219,7 @@ namespace Barotrauma public bool inWater; - private readonly FixedMouseJoint pullJoint; + private FixedMouseJoint pullJoint; public readonly LimbType type; @@ -683,7 +683,7 @@ namespace Barotrauma private readonly List appliedDamageModifiers = new List(); private readonly List tempModifiers = new List(); private readonly List afflictionsCopy = new List(); - public AttackResult AddDamage(Vector2 simPosition, IEnumerable afflictions, bool playSound, float damageMultiplier = 1, float penetration = 0f) + public AttackResult AddDamage(Vector2 simPosition, IEnumerable afflictions, bool playSound, float damageMultiplier = 1, float penetration = 0f, Character attacker = null) { appliedDamageModifiers.Clear(); afflictionsCopy.Clear(); @@ -741,7 +741,7 @@ namespace Barotrauma { newAffliction.SetStrength(affliction.NonClampedStrength); } - + attacker?.CheckTalents(AbilityEffectType.OnAddDamageAffliction, newAffliction); if (applyAffliction) { afflictionsCopy.Add(newAffliction); @@ -1263,6 +1263,14 @@ namespace Barotrauma { body?.Remove(); body = null; + if (pullJoint != null) + { + if (GameMain.World.JointList.Contains(pullJoint)) + { + GameMain.World.Remove(pullJoint); + } + pullJoint = null; + } Release(); RemoveProjSpecific(); Removed = true; diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Params/CharacterParams.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Params/CharacterParams.cs index 40e20c196..59e92989f 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Characters/Params/CharacterParams.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Params/CharacterParams.cs @@ -70,6 +70,9 @@ namespace Barotrauma [Serialize(1f, true), Editable] public float BleedParticleMultiplier { get; private set; } + [Serialize(true, true, description: "Can the creature eat bodies? Used by player controlled creatures to allow them to eat. Currently applicable only to non-humanoids. To allow an AI controller to eat, just add an ai target with the state \"eat\""), Editable] + public bool CanEat { get; set; } + [Serialize(10f, true, description: "How effectively/easily the character eats other characters. Affects the forces, the amount of particles, and the time required before the target is eaten away"), Editable(MinValueFloat = 1, MaxValueFloat = 1000, ValueStep = 1)] public float EatingSpeed { get; set; } @@ -88,6 +91,9 @@ namespace Barotrauma [Serialize(25000f, true, "If the character is farther than this (in pixels) from the sub and the players, it will be disabled. The halved value is used for triggering simple physics where the ragdoll is disabled and only the main collider is updated."), Editable(MinValueFloat = 10000f, MaxValueFloat = 100000f)] public float DisableDistance { get; set; } + [Serialize(10f, true, "How frequent the recurring idle and attack sounds are?"), Editable(MinValueFloat = 1f, MaxValueFloat = 100f)] + public float SoundInterval { get; set; } + public readonly string File; public XDocument VariantFile { get; private set; } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityCondition.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityCondition.cs new file mode 100644 index 000000000..80b4be072 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityCondition.cs @@ -0,0 +1,89 @@ +using Microsoft.Xna.Framework; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + abstract class AbilityCondition + { + protected CharacterTalent characterTalent; + protected Character character; + protected bool invert; + + public virtual bool AllowClientSimulation => true; + + public AbilityCondition(CharacterTalent characterTalent, XElement conditionElement) + { + this.characterTalent = characterTalent; + character = characterTalent.Character; + invert = conditionElement.GetAttributeBool("invert", false); + } + public abstract bool MatchesCondition(object abilityData); + public abstract bool MatchesCondition(); + + + // tools + protected enum TargetType + { + Any = 0, + Enemy = 1, + Ally = 2, + NotSelf = 3, + Alive = 4, + Monster = 5, + }; + + protected List ParseTargetTypes(string[] targetTypeStrings) + { + List targetTypes = new List(); + foreach (string targetTypeString in targetTypeStrings) + { + TargetType targetType = TargetType.Any; + if (!Enum.TryParse(targetTypeString, true, out targetType)) + { + DebugConsole.ThrowError("Invalid target type type \"" + targetTypeString + "\" in CharacterTalent (" + characterTalent.DebugIdentifier + ")"); + } + targetTypes.Add(targetType); + } + return targetTypes; + } + + protected bool IsViableTarget(IEnumerable targetTypes, Character targetCharacter) + { + if (targetCharacter == null) { return false; } + + bool isViable = true; + foreach (TargetType targetType in targetTypes) + { + if (!IsViableTarget(targetType, targetCharacter)) + { + isViable = false; + break; + } + } + return isViable; + } + + private bool IsViableTarget(TargetType targetType, Character targetCharacter) + { + switch (targetType) + { + case TargetType.Enemy: + return !HumanAIController.IsFriendly(character, targetCharacter); + case TargetType.Ally: + return HumanAIController.IsFriendly(character, targetCharacter); + case TargetType.NotSelf: + return targetCharacter != character; + case TargetType.Alive: + return !targetCharacter.IsDead; + case TargetType.Monster: + return !targetCharacter.IsHuman; + default: + return true; + } + } + + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionData/AbilityConditionAttackData.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionData/AbilityConditionAttackData.cs new file mode 100644 index 000000000..2a80e9122 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionData/AbilityConditionAttackData.cs @@ -0,0 +1,79 @@ +using Barotrauma.Items.Components; +using System.Linq; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class AbilityConditionAttackData : AbilityConditionData + { + private enum WeaponType + { + Any = 0, + Melee = 1, + Ranged = 2 + }; + + private readonly string itemIdentifier; + private readonly string[] tags; + private WeaponType weapontype; + public AbilityConditionAttackData(CharacterTalent characterTalent, XElement conditionElement) : base(characterTalent, conditionElement) + { + itemIdentifier = conditionElement.GetAttributeString("itemidentifier", ""); + tags = conditionElement.GetAttributeStringArray("tags", new string[0], convertToLowerInvariant: true); + switch (conditionElement.GetAttributeString("weapontype", "")) + { + case "melee": + weapontype = WeaponType.Melee; + break; + case "ranged": + weapontype = WeaponType.Ranged; + break; + } + } + + protected override bool MatchesConditionSpecific(object abilityData) + { + if (abilityData is AttackData attackData) + { + Item item = attackData?.SourceAttack?.SourceItem; + + if (item == null) + { + DebugConsole.AddWarning($"Source Item was not found in {this} for talent {characterTalent.DebugIdentifier}!"); + return false; + } + + if (!string.IsNullOrEmpty(itemIdentifier)) + { + if (item.prefab.Identifier != itemIdentifier) + { + return false; + } + } + + if (tags.Any()) + { + if (!tags.All(t => item.HasTag(t))) + { + return false; + } + } + + switch (weapontype) + { + case WeaponType.Melee: + return item.GetComponent() != null; + case WeaponType.Ranged: + return item.GetComponent() != null; + } + + return true; + } + else + { + LogAbilityConditionError(abilityData, typeof(AttackData)); + return false; + } + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionData/AbilityConditionAttackResult.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionData/AbilityConditionAttackResult.cs new file mode 100644 index 000000000..909c694f2 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionData/AbilityConditionAttackResult.cs @@ -0,0 +1,38 @@ +using Barotrauma.Items.Components; +using System.Collections.Generic; +using System.Linq; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class AbilityConditionAttackResult : AbilityConditionData + { + private readonly List targetTypes; + private readonly string[] afflictions; + public AbilityConditionAttackResult(CharacterTalent characterTalent, XElement conditionElement) : base(characterTalent, conditionElement) + { + targetTypes = ParseTargetTypes(conditionElement.GetAttributeStringArray("targettypes", new string[0], convertToLowerInvariant: true)); + afflictions = conditionElement.GetAttributeStringArray("afflictions", new string[0], convertToLowerInvariant: true); + } + + protected override bool MatchesConditionSpecific(object abilityData) + { + if (abilityData is AttackResult attackResult) + { + if (!IsViableTarget(targetTypes, attackResult.HitLimb?.character)) { return false; } + + if (afflictions.Any()) + { + if (!afflictions.Any(a => attackResult.Afflictions.Select(c => c.Identifier).Contains(a))) { return false; } + } + + return true; + } + else + { + LogAbilityConditionError(abilityData, typeof(AttackData)); + return false; + } + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionData/AbilityConditionCharacter.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionData/AbilityConditionCharacter.cs new file mode 100644 index 000000000..1254f8058 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionData/AbilityConditionCharacter.cs @@ -0,0 +1,30 @@ +using System.Collections.Generic; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class AbilityConditionCharacter : AbilityConditionData + { + private readonly List targetTypes; + + public AbilityConditionCharacter(CharacterTalent characterTalent, XElement conditionElement) : base(characterTalent, conditionElement) + { + targetTypes = ParseTargetTypes(conditionElement.GetAttributeStringArray("targettypes", new string[0], convertToLowerInvariant: true)); + } + + protected override bool MatchesConditionSpecific(object abilityData) + { + if (abilityData is Character character) + { + if (!IsViableTarget(targetTypes, character)) { return false; } + + return true; + } + else + { + LogAbilityConditionError(abilityData, typeof(Character)); + return false; + } + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionData/AbilityConditionData.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionData/AbilityConditionData.cs new file mode 100644 index 000000000..d80a6257d --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionData/AbilityConditionData.cs @@ -0,0 +1,39 @@ +using Microsoft.Xna.Framework; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + abstract class AbilityConditionData : AbilityCondition + { + /// + /// Some conditions rely on specific ability data that is integrally connected to the AbilityEffectType. + /// This is done in order to avoid having to create duplicate ability behavior, such as if an ability needs to trigger + /// a common ability effect but in specific circumstances. These conditions could also be partially replaced by + /// more explicit AbilityEffectType enums, but this would introduce bloat and overhead to integral game logic + /// when instead said logic can be made to only run when required using these conditions. + /// + /// These conditions will return an error if used outside their limited intended use. + /// + public AbilityConditionData(CharacterTalent characterTalent, XElement conditionElement) : base(characterTalent, conditionElement) { } + + protected void LogAbilityConditionError(T abilityData, Type expectedData) + { + DebugConsole.ThrowError($"Used data-reliant ability condition when data is incompatible! Expected {expectedData}, but received {abilityData}"); + } + + protected abstract bool MatchesConditionSpecific(object abilityData); + public override bool MatchesCondition() + { + DebugConsole.ThrowError("Used data-reliant ability condition in a state-based ability! This is not allowed."); + return false; + } + public override bool MatchesCondition(object abilityData) + { + if (abilityData is null) { return invert; } + return invert ? !MatchesConditionSpecific(abilityData) : MatchesConditionSpecific(abilityData); + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionData/AbilityConditionEvasiveManeuvers.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionData/AbilityConditionEvasiveManeuvers.cs new file mode 100644 index 000000000..44336e5b8 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionData/AbilityConditionEvasiveManeuvers.cs @@ -0,0 +1,22 @@ +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class AbilityConditionEvasiveManeuvers : AbilityConditionData + { + public AbilityConditionEvasiveManeuvers(CharacterTalent characterTalent, XElement conditionElement) : base(characterTalent, conditionElement) { } + + protected override bool MatchesConditionSpecific(object abilityData) + { + if (abilityData is Submarine submarine) + { + return submarine.TeamID == character.TeamID && character.Submarine == submarine; + } + else + { + LogAbilityConditionError(abilityData, typeof(Submarine)); + return false; + } + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionData/AbilityConditionHandsomeStranger.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionData/AbilityConditionHandsomeStranger.cs new file mode 100644 index 000000000..55ee4fa06 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionData/AbilityConditionHandsomeStranger.cs @@ -0,0 +1,27 @@ +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class AbilityConditionHandsomeStranger : AbilityConditionData + { + string skillIdentifier; + + public AbilityConditionHandsomeStranger(CharacterTalent characterTalent, XElement conditionElement) : base(characterTalent, conditionElement) + { + skillIdentifier = conditionElement.GetAttributeString("skillidentifier", "").ToLowerInvariant(); + } + + protected override bool MatchesConditionSpecific(object abilityData) + { + if (abilityData is string skillIdentifier) + { + return this.skillIdentifier == skillIdentifier; + } + else + { + LogAbilityConditionError(abilityData, typeof(string)); + return false; + } + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionData/AbilityConditionItem.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionData/AbilityConditionItem.cs new file mode 100644 index 000000000..cfa1db21c --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionData/AbilityConditionItem.cs @@ -0,0 +1,50 @@ +using System; +using System.Linq; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class AbilityConditionItem : AbilityConditionData + { + private readonly string identifier; + private readonly string[] tags; + + public AbilityConditionItem(CharacterTalent characterTalent, XElement conditionElement) : base(characterTalent, conditionElement) + { + identifier = conditionElement.GetAttributeString("identifier", string.Empty).ToLowerInvariant(); + tags = conditionElement.GetAttributeStringArray("tags", Array.Empty(), convertToLowerInvariant: true); + } + + protected override bool MatchesConditionSpecific(object abilityData) + { + ItemPrefab item = null; + if (abilityData is Item tempItem) + { + item = tempItem.Prefab; + } + // this and other instances of this type of casting will be refactored + else if (abilityData is (ItemPrefab itemPrefab, object _)) + { + item = itemPrefab; + } + + if (item != null) + { + if (!string.IsNullOrEmpty(identifier)) + { + if (item.Identifier != identifier) + { + return false; + } + } + + return tags.Any(t => item.Tags.Any(p => t == p)); + } + else + { + LogAbilityConditionError(abilityData, typeof(Item)); + return false; + } + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionData/AbilityConditionReduceAffliction.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionData/AbilityConditionReduceAffliction.cs new file mode 100644 index 000000000..24044dc0e --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionData/AbilityConditionReduceAffliction.cs @@ -0,0 +1,33 @@ +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class AbilityConditionReduceAffliction : AbilityConditionData + { + private readonly string[] allowedTypes; + private readonly string identifier; + + public AbilityConditionReduceAffliction(CharacterTalent characterTalent, XElement conditionElement) : base(characterTalent, conditionElement) + { + allowedTypes = conditionElement.GetAttributeStringArray("allowedtypes", new string[0], convertToLowerInvariant: true); + identifier = conditionElement.GetAttributeString("identifier", ""); + } + + protected override bool MatchesConditionSpecific(object abilityData) + { + if (abilityData is (Affliction affliction, float reduceAmount)) + { + if (allowedTypes.Find(c => c == affliction.Prefab.AfflictionType) == null) { return false; } + + if (!string.IsNullOrEmpty(identifier) && affliction.Prefab.Identifier != identifier) { return false; } + + return true; + } + else + { + LogAbilityConditionError(abilityData, typeof((Affliction, float))); + return false; + } + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionData/AbilityConditionScavenger.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionData/AbilityConditionScavenger.cs new file mode 100644 index 000000000..2156ccae1 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionData/AbilityConditionScavenger.cs @@ -0,0 +1,22 @@ +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class AbilityConditionScavenger : AbilityConditionData + { + public AbilityConditionScavenger(CharacterTalent characterTalent, XElement conditionElement) : base(characterTalent, conditionElement) { } + + protected override bool MatchesConditionSpecific(object abilityData) + { + if (abilityData is Item item) + { + return item.Submarine != character.Submarine; + } + else + { + LogAbilityConditionError(abilityData, typeof(Item)); + return false; + } + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionAboveVitality.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionAboveVitality.cs new file mode 100644 index 000000000..6543c7b32 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionAboveVitality.cs @@ -0,0 +1,20 @@ +using System.Linq; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class AbilityConditionAboveVitality : AbilityConditionDataless + { + float vitalityPercentage; + + public AbilityConditionAboveVitality(CharacterTalent characterTalent, XElement conditionElement) : base(characterTalent, conditionElement) + { + vitalityPercentage = conditionElement.GetAttributeFloat("vitalitypercentage", 0f); + } + + protected override bool MatchesConditionSpecific() + { + return character.HealthPercentage / 100f > vitalityPercentage; + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionAlliesAboveVitality.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionAlliesAboveVitality.cs new file mode 100644 index 000000000..29256ab7c --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionAlliesAboveVitality.cs @@ -0,0 +1,19 @@ +using System.Linq; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class AbilityConditionAlliesAboveVitality : AbilityConditionDataless + { + float vitalityPercentage; + + public AbilityConditionAlliesAboveVitality(CharacterTalent characterTalent, XElement conditionElement) : base(characterTalent, conditionElement) + { + vitalityPercentage = conditionElement.GetAttributeFloat("vitalitypercentage", 0f); + } + protected override bool MatchesConditionSpecific() + { + return Character.GetFriendlyCrew(character).All(c => c.HealthPercentage / 100f >= vitalityPercentage); + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionCrouched.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionCrouched.cs new file mode 100644 index 000000000..cd96edb58 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionCrouched.cs @@ -0,0 +1,18 @@ +using System.Linq; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class AbilityConditionCrouched : AbilityConditionDataless + { + + public AbilityConditionCrouched(CharacterTalent characterTalent, XElement conditionElement) : base(characterTalent, conditionElement) + { + } + + protected override bool MatchesConditionSpecific() + { + return character.AnimController is HumanoidAnimController humanoidAnimController && humanoidAnimController.Crouching; + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionDataless.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionDataless.cs new file mode 100644 index 000000000..023fe029f --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionDataless.cs @@ -0,0 +1,24 @@ +using Microsoft.Xna.Framework; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + abstract class AbilityConditionDataless : AbilityCondition + { + public AbilityConditionDataless(CharacterTalent characterTalent, XElement conditionElement) : base (characterTalent, conditionElement) { } + + protected abstract bool MatchesConditionSpecific(); + public override bool MatchesCondition() + { + return invert ? !MatchesConditionSpecific() : MatchesConditionSpecific(); + } + + public override bool MatchesCondition(object abilityData) + { + return invert ? !MatchesConditionSpecific() : MatchesConditionSpecific(); + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionHasAffliction.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionHasAffliction.cs new file mode 100644 index 000000000..9f449e43c --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionHasAffliction.cs @@ -0,0 +1,31 @@ +using System.Linq; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class AbilityConditionHasAffliction : AbilityConditionDataless + { + private string afflictionIdentifier; + private float minimumPercentage; + + + public AbilityConditionHasAffliction(CharacterTalent characterTalent, XElement conditionElement) : base(characterTalent, conditionElement) + { + afflictionIdentifier = conditionElement.GetAttributeString("afflictionidentifier", ""); + minimumPercentage = conditionElement.GetAttributeFloat("minimumpercentage", 0f); + } + + protected override bool MatchesConditionSpecific() + { + if (!string.IsNullOrEmpty(afflictionIdentifier)) + { + var affliction = character.CharacterHealth.GetAffliction(afflictionIdentifier); + + if (affliction == null) { return false; } + + return minimumPercentage <= affliction.Strength / affliction.Prefab.MaxStrength; + } + return false; + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionHasDifferentJobs.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionHasDifferentJobs.cs new file mode 100644 index 000000000..0f1707d3d --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionHasDifferentJobs.cs @@ -0,0 +1,22 @@ +using System.Collections.Generic; +using System.Linq; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class AbilityConditionHasDifferentJobs : AbilityConditionDataless + { + private readonly int amount; + public AbilityConditionHasDifferentJobs(CharacterTalent characterTalent, XElement conditionElement) : base(characterTalent, conditionElement) + { + amount = conditionElement.GetAttributeInt("amount", 0); + } + + protected override bool MatchesConditionSpecific() + { + IEnumerable crewmembers = Character.GetFriendlyCrew(character); + int differentCrewAmount = crewmembers.Select(c => c.Info?.Job?.Prefab.Identifier).Distinct().Count(); + return differentCrewAmount >= amount; + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionHasItem.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionHasItem.cs new file mode 100644 index 000000000..8f4fc7c35 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionHasItem.cs @@ -0,0 +1,57 @@ +using Barotrauma.Items.Components; +using System.Collections.Generic; +using System.Linq; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class AbilityConditionHasItem : AbilityConditionDataless + { + // not used for anything atm, will be used for clown subclass + private readonly string[] tags; + private InvSlotType? invSlotType; + bool requireAll; + + private List items = new List(); + + public AbilityConditionHasItem(CharacterTalent characterTalent, XElement conditionElement) : base(characterTalent, conditionElement) + { + tags = conditionElement.GetAttributeStringArray("tags", new string[0], convertToLowerInvariant: true); + requireAll = conditionElement.GetAttributeBool("requireall", false); + //this.invSlotType = invSlotType; + } + + protected override bool MatchesConditionSpecific() + { + items.Clear(); + if (tags.Any()) + { + foreach (string tag in tags) + { + // there is a better method, should use that instead + if (character.GetEquippedItem(tag, invSlotType) is Item foundItem) + { + items.Add(foundItem); + } + } + + } + else + { + if (character.GetEquippedItem(null, invSlotType) is Item foundItem) + { + items.Add(foundItem); + } + } + + if (requireAll) + { + return (items.Count >= tags.Count()); + } + else + { + return items.Any(); + } + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionInWater.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionInWater.cs new file mode 100644 index 000000000..d93731514 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionInWater.cs @@ -0,0 +1,15 @@ + +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class AbilityConditionInWater : AbilityConditionDataless + { + public AbilityConditionInWater(CharacterTalent characterTalent, XElement conditionElement) : base(characterTalent, conditionElement) { } + + protected override bool MatchesConditionSpecific() + { + return character.InWater; + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionMission.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionMission.cs new file mode 100644 index 000000000..f27ecf4c1 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionMission.cs @@ -0,0 +1,38 @@ +using System; +using System.Linq; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class AbilityConditionMission : AbilityConditionData + { + private readonly MissionType missionType; + public AbilityConditionMission(CharacterTalent characterTalent, XElement conditionElement) : base(characterTalent, conditionElement) + { + string missionTypeString = conditionElement.GetAttributeString("missiontype", "None"); + if (!Enum.TryParse(missionTypeString, out missionType)) + { + DebugConsole.ThrowError("Error in AbilityConditionMission \"" + characterTalent.DebugIdentifier + "\" - \"" + missionTypeString + "\" is not a valid mission type."); + return; + } + if (missionType == MissionType.None) + { + DebugConsole.ThrowError("Error in AbilityConditionMission \"" + characterTalent.DebugIdentifier + "\" - mission type cannot be none."); + return; + } + } + + protected override bool MatchesConditionSpecific(object abilityData) + { + if (abilityData is (Mission mission, AbilityValue missionAbilityValue)) + { + return mission.Prefab.Type == missionType; + } + else + { + LogAbilityConditionError(abilityData, typeof((Mission, AbilityValue))); + return false; + } + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionNoCrewDied.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionNoCrewDied.cs new file mode 100644 index 000000000..bb4390106 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionNoCrewDied.cs @@ -0,0 +1,22 @@ +using System.Collections.Generic; +using System.Linq; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class AbilityConditionNoCrewDied : AbilityConditionDataless + { + public AbilityConditionNoCrewDied(CharacterTalent characterTalent, XElement conditionElement) : base(characterTalent, conditionElement) + { + } + + protected override bool MatchesConditionSpecific() + { + if (GameMain.GameSession?.Campaign is CampaignMode campaign) + { + return !campaign.CrewHasDied; + } + return true; + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionOnMission.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionOnMission.cs new file mode 100644 index 000000000..dac9a3f1a --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionOnMission.cs @@ -0,0 +1,17 @@ +using System.Linq; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class AbilityConditionOnMission : AbilityConditionDataless + { + public AbilityConditionOnMission(CharacterTalent characterTalent, XElement conditionElement) : base(characterTalent, conditionElement) + { + } + + protected override bool MatchesConditionSpecific() + { + return Level.Loaded?.Type != LevelData.LevelType.Outpost; + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionRagdolled.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionRagdolled.cs new file mode 100644 index 000000000..192ea6f4f --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionRagdolled.cs @@ -0,0 +1,18 @@ +using System.Linq; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class AbilityConditionRagdolled : AbilityConditionDataless + { + + public AbilityConditionRagdolled(CharacterTalent characterTalent, XElement conditionElement) : base(characterTalent, conditionElement) + { + } + + protected override bool MatchesConditionSpecific() + { + return character.IsRagdolled || character.Stun > 0f || character.IsIncapacitated; + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionRunning.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionRunning.cs new file mode 100644 index 000000000..3186b852f --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionRunning.cs @@ -0,0 +1,15 @@ + +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class AbilityConditionRunning : AbilityConditionDataless + { + public AbilityConditionRunning(CharacterTalent characterTalent, XElement conditionElement) : base(characterTalent, conditionElement) { } + + protected override bool MatchesConditionSpecific() + { + return character.AnimController is HumanoidAnimController animController && animController.IsMovingFast; + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionServerRandom.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionServerRandom.cs new file mode 100644 index 000000000..3cc8ae4f5 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionServerRandom.cs @@ -0,0 +1,24 @@ +using Microsoft.Xna.Framework; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class AbilityConditionServerRandom : AbilityConditionDataless + { + private float randomChance = 0f; + public override bool AllowClientSimulation => false; + + public AbilityConditionServerRandom(CharacterTalent characterTalent, XElement conditionElement) : base(characterTalent, conditionElement) + { + randomChance = conditionElement.GetAttributeFloat("randomchance", 1f); + } + + protected override bool MatchesConditionSpecific() + { + return randomChance >= Rand.Range(0f, 1f, Rand.RandSync.Unsynced); + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionShipFlooded.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionShipFlooded.cs new file mode 100644 index 000000000..ba5f10ccc --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/AbilityConditionals/AbilityConditionDataless/AbilityConditionShipFlooded.cs @@ -0,0 +1,21 @@ +using System.Linq; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class AbilityConditionShipFlooded : AbilityConditionDataless + { + private readonly float floodPercentage; + public AbilityConditionShipFlooded(CharacterTalent characterTalent, XElement conditionElement) : base(characterTalent, conditionElement) + { + floodPercentage = conditionElement.GetAttributeFloat("floodpercentage", 0f); + } + + protected override bool MatchesConditionSpecific() + { + if (character.Submarine == null || character.Submarine.TeamID != character.TeamID) { return false; } + float currentFloodPercentage = character.Submarine.GetHulls(false).Average(h => h.WaterPercentage); + return currentFloodPercentage / 100 > floodPercentage; + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbility.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbility.cs new file mode 100644 index 000000000..739e7ced1 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbility.cs @@ -0,0 +1,142 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + abstract class CharacterAbility + { + public CharacterAbilityGroup CharacterAbilityGroup { get; } + public CharacterTalent CharacterTalent { get; } + public Character Character { get; } + + public virtual bool RequiresAlive => true; + public virtual bool AllowClientSimulation => false; + public virtual bool AppliesEffectOnIntervalUpdate => false; + + private const float DefaultEffectTime = 1.0f; + + /// + /// Used primarily for StatusEffects. Default to constant outside interval abilities. + /// + protected float EffectDeltaTime => CharacterAbilityGroup is CharacterAbilityGroupInterval abilityGroupInterval ? abilityGroupInterval.TimeSinceLastUpdate : DefaultEffectTime; + + public CharacterAbility(CharacterAbilityGroup characterAbilityGroup, XElement abilityElement) + { + CharacterAbilityGroup = characterAbilityGroup; + CharacterTalent = characterAbilityGroup.CharacterTalent; + Character = CharacterTalent.Character; + } + + public bool IsViable() + { + if (!AllowClientSimulation && GameMain.NetworkMember != null && GameMain.NetworkMember.IsClient) { return false; } + if (RequiresAlive && Character.IsDead) { return false; } + return true; + } + + public virtual void InitializeAbility(bool addingFirstTime) { } + + public virtual void UpdateCharacterAbility(bool conditionsMatched, float timeSinceLastUpdate) + { + // may need a separate Update for changing state on non-interval-based abilities + if (AppliesEffectOnIntervalUpdate) + { + if (conditionsMatched) + { + ApplyEffect(); + } + } + else + { + VerifyState(conditionsMatched, timeSinceLastUpdate); + } + } + + protected virtual void VerifyState(bool conditionsMatched, float timeSinceLastUpdate) + { + DebugConsole.ThrowError($"Ability {this} does not have an implementation for VerifyState! This ability does not work in interval ability groups."); + } + + public void ApplyAbilityEffect(object abilityData) + { + if (abilityData is null) + { + ApplyEffect(); + } + else + { + ApplyEffect(abilityData); + } + } + + protected virtual void ApplyEffect() + { + DebugConsole.AddWarning($"Ability {this} used improperly! This ability does not have a definition for ApplyEffect"); + } + + protected virtual void ApplyEffect(object abilityData) + { + DebugConsole.AddWarning($"Ability {this} used improperly! This ability does not take a parameter for ApplyEffect"); + } + + protected void LogAbilityDataMismatch() + { + DebugConsole.ThrowError($"Incompatible ability! Ability {this} is incompatitible with this type of ability effect type."); + } + + // XML + public static CharacterAbility Load(XElement abilityElement, CharacterAbilityGroup characterAbilityGroup, bool errorMessages = true) + { + Type abilityType; + string type = abilityElement.Name.ToString().ToLowerInvariant(); + try + { + abilityType = Type.GetType("Barotrauma.Abilities." + type + "", false, true); + if (abilityType == null) + { + if (errorMessages) DebugConsole.ThrowError("Could not find the CharacterAbility \"" + type + "\" (" + characterAbilityGroup.CharacterTalent.DebugIdentifier + ")"); + return null; + } + } + catch (Exception e) + { + if (errorMessages) DebugConsole.ThrowError("Could not find the CharacterAbility \"" + type + "\" (" + characterAbilityGroup.CharacterTalent.DebugIdentifier + ")", e); + return null; + } + + object[] args = { characterAbilityGroup, abilityElement }; + CharacterAbility characterAbility; + + try + { + characterAbility = (CharacterAbility)Activator.CreateInstance(abilityType, args); + } + catch (TargetInvocationException e) + { + DebugConsole.ThrowError("Error while creating an instance of a CharacterAbility of the type " + abilityType + ".", e.InnerException); + return null; + } + + DebugConsole.AddWarning("Instantiated " + characterAbility + " for talent " + characterAbilityGroup.CharacterTalent.DebugIdentifier); + return characterAbility; + } + public static AbilityFlags ParseFlagType(string flagTypeString, string debugIdentifier) + { + AbilityFlags flagType = AbilityFlags.None; + if (!Enum.TryParse(flagTypeString, true, out flagType)) + { + DebugConsole.ThrowError("Invalid flag type type \"" + flagTypeString + "\" in CharacterTalent (" + debugIdentifier + ")"); + } + return flagType; + } + + public static float DistanceToSquaredDistance(float distance) + { + return distance * distance; + } + + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityApplyForce.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityApplyForce.cs new file mode 100644 index 000000000..3b35a274a --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityApplyForce.cs @@ -0,0 +1,34 @@ +using Microsoft.Xna.Framework; +using System.Collections.Generic; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class CharacterAbilityApplyForce : CharacterAbility + { + private readonly float impulseStrength; + private readonly float maxVelocity; + + private readonly string afflictionIdentifier; + public override bool AppliesEffectOnIntervalUpdate => true; + public CharacterAbilityApplyForce(CharacterAbilityGroup characterAbilityGroup, XElement abilityElement) : base(characterAbilityGroup, abilityElement) + { + impulseStrength = abilityElement.GetAttributeFloat("impulsestrength", 0f); + maxVelocity = abilityElement.GetAttributeFloat("maxvelocity", 10f); + + afflictionIdentifier = abilityElement.GetAttributeString("afflictionidentifier", ""); + } + + protected override void ApplyEffect() + { + Affliction affliction = Character.CharacterHealth.GetAffliction(afflictionIdentifier); + + if (affliction == null) { return; } + + foreach (Limb limb in Character.AnimController.Limbs) + { + limb.body.ApplyForce(Vector2.Normalize(limb.Mass * Character.AnimController.TargetMovement) * impulseStrength * (affliction.Strength / affliction.Prefab.MaxStrength), maxVelocity); + } + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityApplyStatusEffects.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityApplyStatusEffects.cs new file mode 100644 index 000000000..e370e94b3 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityApplyStatusEffects.cs @@ -0,0 +1,43 @@ +using System.Collections.Generic; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class CharacterAbilityApplyStatusEffects : CharacterAbility + { + public override bool AppliesEffectOnIntervalUpdate => true; + public override bool AllowClientSimulation => true; + + protected readonly List statusEffects; + + public CharacterAbilityApplyStatusEffects(CharacterAbilityGroup characterAbilityGroup, XElement abilityElement) : base(characterAbilityGroup, abilityElement) + { + statusEffects = CharacterAbilityGroup.ParseStatusEffects(CharacterTalent, abilityElement.GetChildElement("statuseffects")); + } + + protected void ApplyEffectSpecific(Character targetCharacter) + { + foreach (var statusEffect in statusEffects) + { + statusEffect.Apply(ActionType.OnAbility, EffectDeltaTime, Character, targetCharacter); + } + } + + protected override void ApplyEffect() + { + ApplyEffectSpecific(Character); + } + + protected override void ApplyEffect(object abilityData) + { + if (abilityData is Character targetCharacter) + { + ApplyEffectSpecific(targetCharacter); + } + else + { + ApplyEffect(); + } + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityApplyStatusEffectsToNearestAlly.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityApplyStatusEffectsToNearestAlly.cs new file mode 100644 index 000000000..a12622816 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityApplyStatusEffectsToNearestAlly.cs @@ -0,0 +1,36 @@ +using Microsoft.Xna.Framework; +using System.Collections.Generic; +using System.Linq; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class CharacterAbilityApplyStatusEffectsToNearestAlly : CharacterAbilityApplyStatusEffects + { + protected float squaredMaxDistance; + public CharacterAbilityApplyStatusEffectsToNearestAlly(CharacterAbilityGroup characterAbilityGroup, XElement abilityElement) : base(characterAbilityGroup, abilityElement) + { + squaredMaxDistance = DistanceToSquaredDistance(abilityElement.GetAttributeFloat("maxdistance", float.MaxValue)); + } + + protected override void ApplyEffect() + { + Character closestCharacter = null; + float closestDistance = float.MaxValue; + + foreach (Character crewCharacter in Character.GetFriendlyCrew(Character)) + { + if (crewCharacter != Character && Vector2.DistanceSquared(Character.SimPosition, Character.GetRelativeSimPosition(crewCharacter)) is float tempDistance && tempDistance < closestDistance) + { + closestCharacter = crewCharacter; + closestDistance = tempDistance; + } + } + + if (closestDistance < squaredMaxDistance) + { + ApplyEffectSpecific(closestCharacter); + } + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityApplyStatusEffectsToRandomAlly.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityApplyStatusEffectsToRandomAlly.cs new file mode 100644 index 000000000..8fe1ea29d --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityApplyStatusEffectsToRandomAlly.cs @@ -0,0 +1,40 @@ +using Barotrauma.Extensions; +using Microsoft.Xna.Framework; +using System.Collections.Generic; +using System.Linq; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class CharacterAbilityApplyStatusEffectsToRandomAlly : CharacterAbilityApplyStatusEffects + { + private readonly float squaredMaxDistance; + private readonly bool allowDifferentSub; + private readonly bool allowSelf; + + public override bool AllowClientSimulation => false; + + public CharacterAbilityApplyStatusEffectsToRandomAlly(CharacterAbilityGroup characterAbilityGroup, XElement abilityElement) : base(characterAbilityGroup, abilityElement) + { + squaredMaxDistance = DistanceToSquaredDistance(abilityElement.GetAttributeFloat("maxdistance", float.MaxValue)); + allowDifferentSub = abilityElement.GetAttributeBool("mustbeonsamesub", true); + allowSelf = abilityElement.GetAttributeBool("allowself", true); + } + + protected override void ApplyEffect() + { + Character chosenCharacter = null; + + chosenCharacter = Character.GetFriendlyCrew(Character).Where(c => + (allowSelf ||c != Character) && + (allowDifferentSub || c.Submarine == Character.Submarine) && + Vector2.DistanceSquared(Character.SimPosition, Character.GetRelativeSimPosition(c)) is float tempDistance && + tempDistance < squaredMaxDistance).GetRandom(); + + if (chosenCharacter == null) { return; } + + ApplyEffectSpecific(chosenCharacter); + } + + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityGiveFlag.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityGiveFlag.cs new file mode 100644 index 000000000..921807085 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityGiveFlag.cs @@ -0,0 +1,20 @@ +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class CharacterAbilityGiveFlag : CharacterAbility + { + private AbilityFlags abilityFlag; + + // this and resistance giving should probably be moved directly to charactertalent attributes, as they don't need to interact with either ability group types + public CharacterAbilityGiveFlag(CharacterAbilityGroup characterAbilityGroup, XElement abilityElement) : base(characterAbilityGroup, abilityElement) + { + abilityFlag = ParseFlagType(abilityElement.GetAttributeString("flagtype", ""), CharacterTalent.DebugIdentifier); + } + + public override void InitializeAbility(bool addingFirstTime) + { + Character.AddAbilityFlag(abilityFlag); + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityGiveMissionCount.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityGiveMissionCount.cs new file mode 100644 index 000000000..629202f93 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityGiveMissionCount.cs @@ -0,0 +1,21 @@ +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class CharacterAbilityGiveMissionCount : CharacterAbility + { + private readonly int amount; + + public CharacterAbilityGiveMissionCount(CharacterAbilityGroup characterAbilityGroup, XElement abilityElement) : base(characterAbilityGroup, abilityElement) + { + amount = abilityElement.GetAttributeInt("amount", 0); + } + + public override void InitializeAbility(bool addingFirstTime) + { + if (!addingFirstTime) { return; } + if (!(GameMain.GameSession?.Campaign is CampaignMode campaign)) { return; } + campaign.Settings.AddedMissionCount += amount; + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityGiveMoney.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityGiveMoney.cs new file mode 100644 index 000000000..86e1cb093 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityGiveMoney.cs @@ -0,0 +1,22 @@ +using Microsoft.Xna.Framework; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class CharacterAbilityGiveMoney : CharacterAbility + { + public override bool AppliesEffectOnIntervalUpdate => true; + + private int amount; + + public CharacterAbilityGiveMoney(CharacterAbilityGroup characterAbilityGroup, XElement abilityElement) : base(characterAbilityGroup, abilityElement) + { + amount = abilityElement.GetAttributeInt("amount", 0); + } + + protected override void ApplyEffect() + { + Character.GiveMoney(amount); + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityGivePermanentStat.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityGivePermanentStat.cs new file mode 100644 index 000000000..2a8797b4e --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityGivePermanentStat.cs @@ -0,0 +1,49 @@ +using Barotrauma.Extensions; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class CharacterAbilityGivePermanentStat : CharacterAbility + { + private readonly string statIdentifier; + private readonly StatTypes statType; + private readonly float value; + private readonly bool targetAllies; + private readonly bool removeOnDeath; + //private readonly float maximumValue; + + public override bool AppliesEffectOnIntervalUpdate => true; + + public CharacterAbilityGivePermanentStat(CharacterAbilityGroup characterAbilityGroup, XElement abilityElement) : base(characterAbilityGroup, abilityElement) + { + statIdentifier = abilityElement.GetAttributeString("statidentifier", "").ToLowerInvariant(); + statType = CharacterAbilityGroup.ParseStatType(abilityElement.GetAttributeString("stattype", ""), CharacterTalent.DebugIdentifier); + value = abilityElement.GetAttributeFloat("value", 0f); + targetAllies = abilityElement.GetAttributeBool("targetallies", false); + removeOnDeath = abilityElement.GetAttributeBool("removeondeath", true); + //maximumValue = abilityElement.GetAttributeFloat("maximumvalue", float.MaxValue); + } + + protected override void ApplyEffect(object abilityData) + { + ApplyEffectSpecific(); + } + + protected override void ApplyEffect() + { + ApplyEffectSpecific(); + } + + private void ApplyEffectSpecific() + { + if (targetAllies) + { + Character.GetFriendlyCrew(Character).ForEach(c => c?.Info.ChangeSavedStatValue(statType, value, statIdentifier, removeOnDeath)); + } + else + { + Character?.Info.ChangeSavedStatValue(statType, value, statIdentifier, removeOnDeath); + } + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityGiveResistance.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityGiveResistance.cs new file mode 100644 index 000000000..5d9cd7fee --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityGiveResistance.cs @@ -0,0 +1,21 @@ +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class CharacterAbilityGiveResistance : CharacterAbility + { + private string resistanceId; + private float resistance; + + public CharacterAbilityGiveResistance(CharacterAbilityGroup characterAbilityGroup, XElement abilityElement) : base(characterAbilityGroup, abilityElement) + { + resistanceId = abilityElement.GetAttributeString("resistanceid", ""); + resistance = abilityElement.GetAttributeFloat("resistance", 1f); + } + + public override void InitializeAbility(bool addingFirstTime) + { + Character.ChangeAbilityResistance(resistanceId, resistance); + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityGiveStat.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityGiveStat.cs new file mode 100644 index 000000000..3b55618d7 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityGiveStat.cs @@ -0,0 +1,22 @@ +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class CharacterAbilityGiveStat : CharacterAbility + { + private StatTypes statType; + private float value; + + // this and resistance giving should probably be moved directly to charactertalent attributes, as they don't need to interact with either ability group types + public CharacterAbilityGiveStat(CharacterAbilityGroup characterAbilityGroup, XElement abilityElement) : base(characterAbilityGroup, abilityElement) + { + statType = CharacterAbilityGroup.ParseStatType(abilityElement.GetAttributeString("stattype", ""), CharacterTalent.DebugIdentifier); + value = abilityElement.GetAttributeFloat("value", 0f); + } + + public override void InitializeAbility(bool addingFirstTime) + { + Character.ChangeStat(statType, value); + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityIncreaseSkill.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityIncreaseSkill.cs new file mode 100644 index 000000000..44caf675a --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityIncreaseSkill.cs @@ -0,0 +1,41 @@ +using Microsoft.Xna.Framework; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class CharacterAbilityIncreaseSkill : CharacterAbility + { + public override bool AppliesEffectOnIntervalUpdate => true; + + private string skillIdentifier; + private float skillIncrease; + + public CharacterAbilityIncreaseSkill(CharacterAbilityGroup characterAbilityGroup, XElement abilityElement) : base(characterAbilityGroup, abilityElement) + { + skillIdentifier = abilityElement.GetAttributeString("skillidentifier", "").ToLowerInvariant(); + skillIncrease = abilityElement.GetAttributeFloat("skillincrease", 0f); + } + + protected override void ApplyEffect() + { + ApplyEffectSpecific(Character); + } + + protected override void ApplyEffect(object abilityData) + { + if (abilityData is Character character) + { + ApplyEffectSpecific(character); + } + else + { + ApplyEffectSpecific(Character); + } + } + + private void ApplyEffectSpecific(Character character) + { + character.Info?.IncreaseSkillLevel(skillIdentifier, skillIncrease, character.Position + Vector2.UnitY * 175.0f); + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityModifyAffliction.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityModifyAffliction.cs new file mode 100644 index 000000000..84aa32f90 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityModifyAffliction.cs @@ -0,0 +1,36 @@ +using System.Collections.Generic; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class CharacterAbilityModifyAffliction : CharacterAbility + { + private readonly string[] afflictionIdentifiers; + + private readonly float addedMultiplier; + + public CharacterAbilityModifyAffliction(CharacterAbilityGroup characterAbilityGroup, XElement abilityElement) : base(characterAbilityGroup, abilityElement) + { + afflictionIdentifiers = abilityElement.GetAttributeStringArray("afflictionidentifiers", new string[0], convertToLowerInvariant: true); + addedMultiplier = abilityElement.GetAttributeFloat("addedmultiplier", 0f); + } + + protected override void ApplyEffect(object abilityData) + { + if (abilityData is Affliction affliction) + { + foreach (string afflictionIdentifier in afflictionIdentifiers) + { + if (affliction.Identifier == afflictionIdentifier) + { + affliction.Strength *= 1 + addedMultiplier; + } + } + } + else + { + LogAbilityDataMismatch(); + } + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityModifyAttackData.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityModifyAttackData.cs new file mode 100644 index 000000000..6ee9dc1dc --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityModifyAttackData.cs @@ -0,0 +1,44 @@ +using System.Collections.Generic; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class CharacterAbilityModifyAttackData : CharacterAbility + { + private readonly List afflictions; + + float addedDamageMultiplier; + float addedPenetration; + + public CharacterAbilityModifyAttackData(CharacterAbilityGroup characterAbilityGroup, XElement abilityElement) : base(characterAbilityGroup, abilityElement) + { + if (abilityElement.GetChildElement("afflictions") is XElement afflictionElements) + { + afflictions = CharacterAbilityGroup.ParseAfflictions(CharacterTalent, afflictionElements); + } + addedDamageMultiplier = abilityElement.GetAttributeFloat("addeddamagemultiplier", 0f); + addedPenetration = abilityElement.GetAttributeFloat("addedpenetration", 0f); + } + + protected override void ApplyEffect(object abilityData) + { + if (abilityData is AttackData attackData) + { + if (attackData.Afflictions == null) + { + attackData.Afflictions = afflictions; + } + else + { + attackData.Afflictions.AddRange(afflictions); + } + attackData.DamageMultiplier += addedDamageMultiplier; + attackData.AddedPenetration += addedPenetration; + } + else + { + LogAbilityDataMismatch(); + } + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityModifyFlag.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityModifyFlag.cs new file mode 100644 index 000000000..4ab462ccf --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityModifyFlag.cs @@ -0,0 +1,34 @@ +using System; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class CharacterAbilityModifyFlag : CharacterAbility + { + private AbilityFlags abilityFlag; + + private bool lastState; + + public CharacterAbilityModifyFlag(CharacterAbilityGroup characterAbilityGroup, XElement abilityElement) : base(characterAbilityGroup, abilityElement) + { + abilityFlag = ParseFlagType(abilityElement.GetAttributeString("flagtype", ""), CharacterTalent.DebugIdentifier); + } + + protected override void VerifyState(bool conditionsMatched, float timeSinceLastUpdate) + { + if (conditionsMatched != lastState) + { + if (conditionsMatched) + { + Character.AddAbilityFlag(abilityFlag); + } + else + { + Character.RemoveAbilityFlag(abilityFlag); + } + + lastState = conditionsMatched; + } + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityModifyReduceAffliction.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityModifyReduceAffliction.cs new file mode 100644 index 000000000..828714266 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityModifyReduceAffliction.cs @@ -0,0 +1,27 @@ +using System.Collections.Generic; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class CharacterAbilityModifyReduceAffliction : CharacterAbility + { + float addedAmountMultiplier; + + public CharacterAbilityModifyReduceAffliction(CharacterAbilityGroup characterAbilityGroup, XElement abilityElement) : base(characterAbilityGroup, abilityElement) + { + addedAmountMultiplier = abilityElement.GetAttributeFloat("addedamountmultiplier", 0f); + } + + protected override void ApplyEffect(object abilityData) + { + if (abilityData is (Affliction affliction, float reduceAmount)) + { + affliction.Strength -= addedAmountMultiplier * reduceAmount; + } + else + { + LogAbilityDataMismatch(); + } + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityModifyResistance.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityModifyResistance.cs new file mode 100644 index 000000000..4e44403d7 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityModifyResistance.cs @@ -0,0 +1,27 @@ +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class CharacterAbilityModifyResistance : CharacterAbility + { + private string resistanceId; + private float resistance; + bool lastState; + + // should probably be split to different classes + public CharacterAbilityModifyResistance(CharacterAbilityGroup characterAbilityGroup, XElement abilityElement) : base(characterAbilityGroup, abilityElement) + { + resistanceId = abilityElement.GetAttributeString("resistanceid", ""); + resistance = abilityElement.GetAttributeFloat("resistance", 1f); + } + + public override void UpdateCharacterAbility(bool conditionsMatched, float timeSinceLastUpdate) + { + if (conditionsMatched != lastState) + { + Character.ChangeAbilityResistance(resistanceId, conditionsMatched ? resistance : 1 / resistance); + lastState = conditionsMatched; + } + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityModifyStat.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityModifyStat.cs new file mode 100644 index 000000000..c61a5a646 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityModifyStat.cs @@ -0,0 +1,26 @@ +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class CharacterAbilityModifyStat : CharacterAbility + { + private readonly StatTypes statType; + private readonly float value; + bool lastState; + + public CharacterAbilityModifyStat(CharacterAbilityGroup characterAbilityGroup, XElement abilityElement) : base(characterAbilityGroup, abilityElement) + { + statType = CharacterAbilityGroup.ParseStatType(abilityElement.GetAttributeString("stattype", ""), CharacterTalent.DebugIdentifier); + value = abilityElement.GetAttributeFloat("value", 0f); + } + + protected override void VerifyState(bool conditionsMatched, float timeSinceLastUpdate) + { + if (conditionsMatched != lastState) + { + Character.ChangeStat(statType, conditionsMatched ? value : -value); + lastState = conditionsMatched; + } + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityModifyValue.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityModifyValue.cs new file mode 100644 index 000000000..7f27c334f --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityModifyValue.cs @@ -0,0 +1,46 @@ +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class CharacterAbilityModifyValue : CharacterAbility + { + private float addedValue; + private float multiplierValue; + + public CharacterAbilityModifyValue(CharacterAbilityGroup characterAbilityGroup, XElement abilityElement) : base(characterAbilityGroup, abilityElement) + { + addedValue = abilityElement.GetAttributeFloat("addedvalue", 0f); + multiplierValue = abilityElement.GetAttributeFloat("multipliervalue", 1f); + } + + protected override void ApplyEffect(object abilityData) + { + if (abilityData is AbilityValue abilityValue) + { + ApplyEffectSpecific(abilityValue); + } + else if (abilityData is (object _, AbilityValue tupleAbilityValue)) + { + ApplyEffectSpecific(tupleAbilityValue); + } + } + + private void ApplyEffectSpecific(AbilityValue abilityValue) + { + abilityValue.Value += addedValue; + abilityValue.Value *= multiplierValue; + } + + } + + // this seems like a real silly way to have to pass values by reference into these same interfaces + // if more of these are required, maybe there should be an additional set of interfaces to easily pass values by reference instead + class AbilityValue + { + public float Value { get; set; } + public AbilityValue(float value) + { + Value = value; + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityPutItem.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityPutItem.cs new file mode 100644 index 000000000..e80bf63db --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityPutItem.cs @@ -0,0 +1,46 @@ +using Microsoft.Xna.Framework; +using System.Collections.Generic; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class CharacterAbilityPutItem : CharacterAbility + { + private readonly string itemIdentifier; + private readonly int amount; + public override bool AppliesEffectOnIntervalUpdate => true; + public CharacterAbilityPutItem(CharacterAbilityGroup characterAbilityGroup, XElement abilityElement) : base(characterAbilityGroup, abilityElement) + { + itemIdentifier = abilityElement.GetAttributeString("itemidentifier", ""); + amount = abilityElement.GetAttributeInt("amount", 1); + } + + protected override void ApplyEffect() + { + if (string.IsNullOrEmpty(itemIdentifier)) + { + DebugConsole.ThrowError("Cannot put item in inventory - itemIdentifier not defined."); + return; + } + + ItemPrefab itemPrefab = ItemPrefab.Find(null, itemIdentifier); + if (itemPrefab == null) + { + DebugConsole.ThrowError("Cannot put item in inventory - item prefab " + itemIdentifier + " not found."); + return; + } + for (int i = 0; i < amount; i++) + { + if (GameMain.GameSession?.RoundEnding ?? true) + { + Item item = new Item(itemPrefab, Character.WorldPosition, Character.Submarine); + Character.Inventory.TryPutItem(item, Character, new List() { InvSlotType.Any }); + } + else + { + Entity.Spawner.AddToSpawnQueue(itemPrefab, Character.Inventory); + } + } + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityResetPermanentStat.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityResetPermanentStat.cs new file mode 100644 index 000000000..eb57809e5 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CharacterAbilityResetPermanentStat.cs @@ -0,0 +1,29 @@ +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class CharacterAbilityResetPermanentStat : CharacterAbility + { + private readonly string statIdentifier; + public override bool RequiresAlive => false; + + public CharacterAbilityResetPermanentStat(CharacterAbilityGroup characterAbilityGroup, XElement abilityElement) : base(characterAbilityGroup, abilityElement) + { + statIdentifier = abilityElement.GetAttributeString("statidentifier", "").ToLowerInvariant(); + } + protected override void ApplyEffect(object abilityData) + { + ApplyEffectSpecific(); + } + + protected override void ApplyEffect() + { + ApplyEffectSpecific(); + } + + private void ApplyEffectSpecific() + { + Character?.Info.ResetSavedStatValue(statIdentifier); + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityApprenticeship.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityApprenticeship.cs new file mode 100644 index 000000000..808ca4b0b --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityApprenticeship.cs @@ -0,0 +1,21 @@ +using Microsoft.Xna.Framework; +using System; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class CharacterAbilityApprenticeship : CharacterAbility + { + public CharacterAbilityApprenticeship(CharacterAbilityGroup characterAbilityGroup, XElement abilityElement) : base(characterAbilityGroup, abilityElement) + { + } + + protected override void ApplyEffect(object abilityData) + { + if (abilityData is (string skillIdentifier, Character character) && character != Character) + { + character.Info?.IncreaseSkillLevel(skillIdentifier, 1.0f, character.Position + Vector2.UnitY * 175.0f); + } + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityBountyHunter.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityBountyHunter.cs new file mode 100644 index 000000000..fde6e081e --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityBountyHunter.cs @@ -0,0 +1,23 @@ +using System.Collections.Generic; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class CharacterAbilityBountyHunter : CharacterAbility + { + private float vitalityPercentage; + + public CharacterAbilityBountyHunter(CharacterAbilityGroup characterAbilityGroup, XElement abilityElement) : base(characterAbilityGroup, abilityElement) + { + vitalityPercentage = abilityElement.GetAttributeFloat("vitalitypercentage", 0f); + } + + protected override void ApplyEffect(object abilityData) + { + if (abilityData is Character character) + { + Character.GiveMoney((int)(vitalityPercentage * character.MaxVitality)); + } + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityIndustrialRevolution.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityIndustrialRevolution.cs new file mode 100644 index 000000000..324bf919d --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityIndustrialRevolution.cs @@ -0,0 +1,30 @@ +using Barotrauma.Items.Components; +using Microsoft.Xna.Framework; +using System.Collections.Generic; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class CharacterAbilityIndustrialRevolution : CharacterAbility + { + float addedFabricationSpeed; + + public CharacterAbilityIndustrialRevolution(CharacterAbilityGroup characterAbilityGroup, XElement abilityElement) : base(characterAbilityGroup, abilityElement) + { + addedFabricationSpeed = abilityElement.GetAttributeFloat("addedfabricationspeed", 0f); + } + + public override void UpdateCharacterAbility(bool conditionsMatched, float timeSinceLastUpdate) + { + if (conditionsMatched) + { + // not necessarily the cleanest or performant way, but at least this shouldn't break anything. + // must be done every frame in order to work. + if (Character.SelectedConstruction?.GetComponent() is Fabricator fabricator && fabricator.IsActive) + { + fabricator.FabricationSpeedMultiplier += addedFabricationSpeed; + } + } + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityInsurancePolicy.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityInsurancePolicy.cs new file mode 100644 index 000000000..9241769e4 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityInsurancePolicy.cs @@ -0,0 +1,54 @@ +using Barotrauma.Networking; +using Microsoft.Xna.Framework; +using System.Collections.Generic; +using System.Linq; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class CharacterAbilityInsurancePolicy : CharacterAbility + { + public override bool AppliesEffectOnIntervalUpdate => true; + public override bool RequiresAlive => false; + + private readonly int moneyPerLevel; + private bool hasOccurred = false; + + private static List clientsAlreadyUsed = new List(); + + public CharacterAbilityInsurancePolicy(CharacterAbilityGroup characterAbilityGroup, XElement abilityElement) : base(characterAbilityGroup, abilityElement) + { + moneyPerLevel = abilityElement.GetAttributeInt("moneyperlevel", 0); + } + + protected override void ApplyEffect() + { + if (Character?.Info is CharacterInfo info && !hasOccurred) + { + if (GameMain.NetworkMember != null && GameMain.NetworkMember.IsServer) + { + foreach (Client client in GameMain.NetworkMember.ConnectedClients) + { + if (client.Character == Character && clientsAlreadyUsed.Contains(client)) { return; } + } + } + + Character.GiveMoney(moneyPerLevel * info.GetCurrentLevel()); + hasOccurred = true; + + // this is an ugly way to do this, but this effect should not occur more than once per round for a client + // this seemed like the simplest way to do it since characters are instantiated from scratch each time + if (GameMain.NetworkMember != null && GameMain.NetworkMember.IsServer) + { + foreach (Client client in GameMain.NetworkMember.ConnectedClients) + { + if (client.Character == Character) + { + clientsAlreadyUsed.Add(client); + } + } + } + } + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityMultitasker.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityMultitasker.cs new file mode 100644 index 000000000..0017b6d98 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityMultitasker.cs @@ -0,0 +1,26 @@ +using Microsoft.Xna.Framework; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class CharacterAbilityMultitasker : CharacterAbility + { + private string lastSkillIdentifier; + + public CharacterAbilityMultitasker(CharacterAbilityGroup characterAbilityGroup, XElement abilityElement) : base(characterAbilityGroup, abilityElement) + { + } + + protected override void ApplyEffect(object abilityData) + { + if (abilityData is string skillIdentifier) + { + if (skillIdentifier != lastSkillIdentifier) + { + lastSkillIdentifier = skillIdentifier; + Character.Info?.IncreaseSkillLevel(skillIdentifier, 1.0f, Character.Position + Vector2.UnitY * 175.0f); + } + } + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityPsychoClown.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityPsychoClown.cs new file mode 100644 index 000000000..4e7ac7225 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityPsychoClown.cs @@ -0,0 +1,44 @@ +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class CharacterAbilityPsychoClown : CharacterAbility + { + private StatTypes statType; + private float value; + private string afflictionIdentifier; + private float lastValue = 0f; + + public CharacterAbilityPsychoClown(CharacterAbilityGroup characterAbilityGroup, XElement abilityElement) : base(characterAbilityGroup, abilityElement) + { + statType = CharacterAbilityGroup.ParseStatType(abilityElement.GetAttributeString("stattype", ""), CharacterTalent.DebugIdentifier); + value = abilityElement.GetAttributeFloat("value", 0f); + afflictionIdentifier = abilityElement.GetAttributeString("afflictionidentifier", ""); + } + + protected override void VerifyState(bool conditionsMatched, float timeSinceLastUpdate) + { + // managing state this way seems liable to cause bugs, maybe instead create abstraction to reset these values more safely + // talents cannot be removed while in active play because of the lack of this, for example + Character.ChangeStat(statType, -lastValue); + + if (conditionsMatched) + { + var affliction = Character.CharacterHealth.GetAffliction(afflictionIdentifier); + + float afflictionStrength = 0f; + if (affliction != null) + { + afflictionStrength = affliction.Strength / affliction.Prefab.MaxStrength; + } + + lastValue = afflictionStrength * value; + Character.ChangeStat(statType, lastValue); + } + else + { + lastValue = 0f; + } + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityRegenerateLoot.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityRegenerateLoot.cs new file mode 100644 index 000000000..5a2ff174e --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityRegenerateLoot.cs @@ -0,0 +1,30 @@ +using Barotrauma.Items.Components; +using Microsoft.Xna.Framework; +using System; +using System.Collections.Generic; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class CharacterAbilityRegenerateLoot : CharacterAbility + { + List openedContainers = new List(); + + public CharacterAbilityRegenerateLoot(CharacterAbilityGroup characterAbilityGroup, XElement abilityElement) : base(characterAbilityGroup, abilityElement) + { + } + + protected override void ApplyEffect(object abilityData) + { + if (abilityData is Item item && !openedContainers.Contains(item)) + { + openedContainers.Add(item); + + if (item.GetComponent() is ItemContainer itemContainer) + { + AutoItemPlacer.RegenerateLoot(item.Submarine, itemContainer); + } + } + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityStonewall.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityStonewall.cs new file mode 100644 index 000000000..6597c6973 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityStonewall.cs @@ -0,0 +1,42 @@ +using Microsoft.Xna.Framework; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class CharacterAbilityStonewall : CharacterAbility + { + private readonly List statusEffects; + private readonly List statusEffectsReset; + private int maxEnemyCount; + private float squaredDistance; + + public CharacterAbilityStonewall(CharacterAbilityGroup characterAbilityGroup, XElement abilityElement) : base(characterAbilityGroup, abilityElement) + { + statusEffects = CharacterAbilityGroup.ParseStatusEffects(CharacterTalent, abilityElement.GetChildElement("statuseffects")); + statusEffectsReset = CharacterAbilityGroup.ParseStatusEffects(CharacterTalent, abilityElement.GetChildElement("statuseffectsreset")); + maxEnemyCount = abilityElement.GetAttributeInt("maxenemycount", 0); + squaredDistance = DistanceToSquaredDistance(abilityElement.GetAttributeFloat("distance", 0)); + } + + protected override void VerifyState(bool conditionsMatched, float timeSinceLastUpdate) + { + int numberOfEnemiesInRange = Character.CharacterList.Where(c => !HumanAIController.IsFriendly(Character, c) && !c.IsDead && Vector2.DistanceSquared(Character.SimPosition, Character.GetRelativeSimPosition(c)) < squaredDistance).Count(); + + foreach (var statusEffect in statusEffectsReset) + { + statusEffect.Apply(ActionType.OnAbility, 1f, Character, Character); + } + + if (conditionsMatched && numberOfEnemiesInRange > 0) + { + foreach (var statusEffect in statusEffects) + { + statusEffect.Apply(ActionType.OnAbility, Math.Min(numberOfEnemiesInRange, maxEnemyCount), Character, Character); + } + } + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityTandemFire.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityTandemFire.cs new file mode 100644 index 000000000..284ec4ae6 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityTandemFire.cs @@ -0,0 +1,42 @@ +using Barotrauma.Items.Components; +using Microsoft.Xna.Framework; +using System.Collections.Generic; +using System.Linq; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class CharacterAbilityTandemFire : CharacterAbilityApplyStatusEffectsToNearestAlly + { + private string tag; + public CharacterAbilityTandemFire(CharacterAbilityGroup characterAbilityGroup, XElement abilityElement) : base(characterAbilityGroup, abilityElement) + { + tag = abilityElement.GetAttributeString("tag", ""); + } + + protected override void ApplyEffect() + { + if (Character.SelectedConstruction == null || !Character.SelectedConstruction.HasTag(tag)) { return; } + + Character closestCharacter = null; + float closestDistance = float.MaxValue; + + foreach (Character crewCharacter in Character.GetFriendlyCrew(Character)) + { + if (crewCharacter != Character && Vector2.DistanceSquared(Character.SimPosition, Character.GetRelativeSimPosition(crewCharacter)) is float tempDistance && tempDistance < closestDistance) + { + closestCharacter = crewCharacter; + closestDistance = tempDistance; + } + } + + if (closestCharacter.SelectedConstruction == null || !Character.SelectedConstruction.HasTag(tag)) { return; } + + if (closestDistance < squaredMaxDistance) + { + ApplyEffectSpecific(Character); + ApplyEffectSpecific(closestCharacter); + } + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityTaskmaster.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityTaskmaster.cs new file mode 100644 index 000000000..d54950e74 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/Abilities/CustomAbilities/CharacterAbilityTaskmaster.cs @@ -0,0 +1,39 @@ +using System.Collections.Generic; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class CharacterAbilityTaskmaster : CharacterAbility + { + private readonly List statusEffects; + private readonly List statusEffectsRemove; + + private Character lastCharacter; + + public CharacterAbilityTaskmaster(CharacterAbilityGroup characterAbilityGroup, XElement abilityElement) : base(characterAbilityGroup, abilityElement) + { + statusEffects = CharacterAbilityGroup.ParseStatusEffects(CharacterTalent, abilityElement.GetChildElement("statuseffects")); + statusEffectsRemove = CharacterAbilityGroup.ParseStatusEffects(CharacterTalent, abilityElement.GetChildElement("statuseffectsremove")); + } + + protected override void ApplyEffect(object abilityData) + { + if (abilityData is Character targetCharacter) + { + if (targetCharacter == Character) { return; } + + foreach (var statusEffect in statusEffectsRemove) + { + statusEffect.Apply(ActionType.OnAbility, EffectDeltaTime, Character, lastCharacter); + } + + foreach (var statusEffect in statusEffects) + { + statusEffect.Apply(ActionType.OnAbility, EffectDeltaTime, Character, targetCharacter); + } + + lastCharacter = targetCharacter; + } + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/AbilityGroups/CharacterAbilityGroup.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/AbilityGroups/CharacterAbilityGroup.cs new file mode 100644 index 000000000..c49fa439c --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/AbilityGroups/CharacterAbilityGroup.cs @@ -0,0 +1,206 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + abstract class CharacterAbilityGroup + { + public CharacterTalent CharacterTalent { get; } + public Character Character { get; } + + // currently only used to turn off simulation if random conditions are in use + public bool IsActive { get; private set; } = true; + + // add support for OR conditions? + protected readonly List abilityConditions = new List(); + + // separate dictionaries for each type of characterability? + protected readonly List characterAbilities = new List(); + + public CharacterAbilityGroup(CharacterTalent characterTalent, XElement abilityElementGroup) + { + CharacterTalent = characterTalent; + Character = CharacterTalent.Character; + + foreach (XElement subElement in abilityElementGroup.Elements()) + { + switch (subElement.Name.ToString().ToLowerInvariant()) + { + case "abilities": + LoadAbilities(subElement); + break; + case "conditions": + LoadConditions(subElement); + break; + } + } + } + + public void ActivateAbilityGroup(bool addingFirstTime) + { + foreach (var characterAbility in characterAbilities) + { + characterAbility.InitializeAbility(addingFirstTime); + } + } + + public void LoadConditions(XElement conditionElements) + { + foreach (XElement conditionElement in conditionElements.Elements()) + { + AbilityCondition newCondition = ConstructCondition(CharacterTalent, conditionElement); + + if (newCondition == null) + { + DebugConsole.ThrowError($"AbilityCondition was not found in talent {CharacterTalent.DebugIdentifier}!"); + return; + } + + if (!newCondition.AllowClientSimulation && GameMain.NetworkMember != null && GameMain.NetworkMember.IsClient) + { + IsActive = false; + } + + abilityConditions.Add(newCondition); + } + } + + public void AddAbility(CharacterAbility characterAbility) + { + if (characterAbility == null) + { + DebugConsole.ThrowError($"Trying to add null ability for talent {CharacterTalent.DebugIdentifier}!"); + return; + } + + characterAbilities.Add(characterAbility); + } + + // XML + private AbilityCondition ConstructCondition(CharacterTalent characterTalent, XElement conditionElement, bool errorMessages = true) + { + AbilityCondition newCondition = null; + + Type conditionType; + string type = conditionElement.Name.ToString().ToLowerInvariant(); + try + { + conditionType = Type.GetType("Barotrauma.Abilities." + type + "", false, true); + if (conditionType == null) + { + if (errorMessages) DebugConsole.ThrowError("Could not find the component \"" + type + "\" (" + characterTalent.DebugIdentifier + ")"); + return null; + } + } + catch (Exception e) + { + if (errorMessages) DebugConsole.ThrowError("Could not find the component \"" + type + "\" (" + characterTalent.DebugIdentifier + ")", e); + return null; + } + + object[] args = { characterTalent, conditionElement }; + + try + { + newCondition = (AbilityCondition)Activator.CreateInstance(conditionType, args); + } + catch (TargetInvocationException e) + { + DebugConsole.ThrowError("Error while creating an instance of an ability condition of the type " + conditionType + ".", e.InnerException); + return null; + } + + if (newCondition == null) + { + DebugConsole.ThrowError("Error while creating an instance of an ability condition of the type " + conditionType + ", instance was null"); + return null; + } + + return newCondition; + } + + private void LoadAbilities(XElement abilityElements) + { + foreach (XElement abilityElementGroup in abilityElements.Elements()) + { + AddAbility(ConstructAbility(abilityElementGroup, CharacterTalent)); + } + } + + private CharacterAbility ConstructAbility(XElement abilityElement, CharacterTalent characterTalent) + { + CharacterAbility newAbility = CharacterAbility.Load(abilityElement, this); + + if (newAbility == null) + { + DebugConsole.ThrowError($"Unable to create an ability for {characterTalent.DebugIdentifier}!"); + return null; + } + + return newAbility; + } + + public static List ParseStatusEffects(CharacterTalent characterTalent, XElement statusEffectElements) + { + if (statusEffectElements == null) + { + DebugConsole.ThrowError("StatusEffect list was not found in talent " + characterTalent.DebugIdentifier); + return null; + } + + List statusEffects = new List(); + + foreach (XElement statusEffectElement in statusEffectElements.Elements()) + { + var statusEffect = StatusEffect.Load(statusEffectElement, characterTalent.DebugIdentifier); + statusEffects.Add(statusEffect); + } + + return statusEffects; + } + + public static StatTypes ParseStatType(string statTypeString, string debugIdentifier) + { + StatTypes statType; + if (!Enum.TryParse(statTypeString, true, out statType)) + { + DebugConsole.ThrowError("Invalid stat type type \"" + statTypeString + "\" in CharacterTalent (" + debugIdentifier + ")"); + } + return statType; + } + + public static List ParseAfflictions(CharacterTalent characterTalent, XElement afflictionElements) + { + if (afflictionElements == null) + { + DebugConsole.ThrowError("Affliction list was not found in talent " + characterTalent.DebugIdentifier); + return null; + } + + List afflictions = new List(); + + // similar logic to affliction creation in statuseffects + // might be worth unifying + + foreach (XElement afflictionElement in afflictionElements.Elements()) + { + string afflictionIdentifier = afflictionElement.GetAttributeString("identifier", "").ToLowerInvariant(); + AfflictionPrefab afflictionPrefab = AfflictionPrefab.List.FirstOrDefault(ap => ap.Identifier.ToLowerInvariant() == afflictionIdentifier); + if (afflictionPrefab == null) + { + DebugConsole.ThrowError("Error in CharacterTalent (" + characterTalent.DebugIdentifier + ") - Affliction prefab with the identifier \"" + afflictionIdentifier + "\" not found."); + continue; + } + + Affliction afflictionInstance = afflictionPrefab.Instantiate(afflictionElement.GetAttributeFloat(1.0f, "amount", "strength")); + afflictionInstance.Probability = afflictionElement.GetAttributeFloat(1.0f, "probability"); + afflictions.Add(afflictionInstance); + } + + return afflictions; + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/AbilityGroups/CharacterAbilityGroupEffect.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/AbilityGroups/CharacterAbilityGroupEffect.cs new file mode 100644 index 000000000..f49851390 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/AbilityGroups/CharacterAbilityGroupEffect.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class CharacterAbilityGroupEffect : CharacterAbilityGroup + { + public CharacterAbilityGroupEffect(CharacterTalent characterTalent, XElement abilityElementGroup) : base(characterTalent, abilityElementGroup) { } + + public void CheckAbilityGroup(object abilityData) + { + if (!IsActive) { return; } + if (IsApplicable(abilityData)) + { + foreach (var characterAbility in characterAbilities) + { + if (characterAbility.IsViable()) + { + characterAbility.ApplyAbilityEffect(abilityData); + } + } + } + } + + private bool IsApplicable(object abilityData) + { + return abilityConditions.All(c => c.MatchesCondition(abilityData)); + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/AbilityGroups/CharacterAbilityGroupInterval.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/AbilityGroups/CharacterAbilityGroupInterval.cs new file mode 100644 index 000000000..6597bbcd6 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/AbilityGroups/CharacterAbilityGroupInterval.cs @@ -0,0 +1,48 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Xml.Linq; + +namespace Barotrauma.Abilities +{ + class CharacterAbilityGroupInterval : CharacterAbilityGroup + { + private float interval { get; set; } + public float TimeSinceLastUpdate { get; private set; } + + private float effectDelay; + private float effectDelayTimer; + + public CharacterAbilityGroupInterval(CharacterTalent characterTalent, XElement abilityElementGroup) : base(characterTalent, abilityElementGroup) + { + // too many overlapping intervals could cause hitching? maybe randomize a little + interval = abilityElementGroup.GetAttributeFloat("interval", 0f); + effectDelay = abilityElementGroup.GetAttributeFloat("effectdelay", 0f); + } + public void UpdateAbilityGroup(float deltaTime) + { + if (!IsActive) { return; } + TimeSinceLastUpdate += deltaTime; + if (TimeSinceLastUpdate >= interval) + { + bool conditionsMatched = IsApplicable(); + effectDelayTimer = conditionsMatched ? effectDelayTimer + TimeSinceLastUpdate : 0f; + conditionsMatched &= effectDelayTimer >= effectDelay; + + foreach (var characterAbility in characterAbilities) + { + if (characterAbility.IsViable()) + { + characterAbility.UpdateCharacterAbility(conditionsMatched, TimeSinceLastUpdate); + } + } + TimeSinceLastUpdate = 0; + } + } + private bool IsApplicable() + { + return abilityConditions.All(c => c.MatchesCondition()); + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/CharacterTalent.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/CharacterTalent.cs new file mode 100644 index 000000000..9c64f85ea --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/CharacterTalent.cs @@ -0,0 +1,127 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Xml.Linq; +using Barotrauma.Abilities; + +namespace Barotrauma +{ + class CharacterTalent + { + public Character Character { get; } + public string DebugIdentifier { get; } + + public readonly TalentPrefab Prefab; + + private readonly Dictionary> characterAbilityGroupEffectDictionary = new Dictionary>(); + + private readonly List characterAbilityGroupIntervals = new List(); + + // works functionally but a missing recipe is not represented on GUI side. this might be better placed in the character class itself, though it might be fine here as well + public List UnlockedRecipes { get; } = new List(); + + public CharacterTalent(TalentPrefab talentPrefab, Character character) + { + Character = character; + + Prefab = talentPrefab; + XElement element = talentPrefab.ConfigElement; + DebugIdentifier = talentPrefab.OriginalName; + + foreach (XElement subElement in element.Elements()) + { + switch (subElement.Name.ToString().ToLowerInvariant()) + { + case "abilitygroupeffect": + LoadAbilityGroupEffect(subElement); + break; + case "abilitygroupinterval": + LoadAbilityGroupInterval(subElement); + break; + case "addedrecipe": + if (subElement.GetAttributeString("itemidentifier", string.Empty) is string recipeIdentifier && recipeIdentifier != string.Empty) + { + UnlockedRecipes.Add(recipeIdentifier); + } + else + { + DebugConsole.ThrowError("No recipe identifier defined for talent " + DebugIdentifier); + } + break; + } + } + } + + public virtual void UpdateTalent(float deltaTime) + { + foreach (var characterAbilityGroupInterval in characterAbilityGroupIntervals) + { + characterAbilityGroupInterval.UpdateAbilityGroup(deltaTime); + } + } + + public void CheckTalent(AbilityEffectType abilityEffectType, object abilityData) + { + if (characterAbilityGroupEffectDictionary.TryGetValue(abilityEffectType, out var characterAbilityGroups)) + { + foreach (var characterAbilityGroup in characterAbilityGroups) + { + characterAbilityGroup.CheckAbilityGroup(abilityData); + } + } + } + + public void ActivateTalent(bool addingFirstTime) + { + foreach (var characterAbilityGroups in characterAbilityGroupEffectDictionary.Values) + { + foreach (var characterAbilityGroup in characterAbilityGroups) + { + characterAbilityGroup.ActivateAbilityGroup(addingFirstTime); + } + } + } + + // XML logic + private void LoadAbilityGroupInterval(XElement abilityGroup) + { + string name = abilityGroup.Name.ToString().ToLowerInvariant(); + characterAbilityGroupIntervals.Add(new CharacterAbilityGroupInterval(this, abilityGroup)); + } + + private void LoadAbilityGroupEffect(XElement abilityGroup) + { + AbilityEffectType abilityEffectType = ParseAbilityEffectType(this, abilityGroup.GetAttributeString("abilityeffecttype", "none")); + AddAbilityGroupEffect(new CharacterAbilityGroupEffect(this, abilityGroup), abilityEffectType); + } + + public void AddAbilityGroupEffect(CharacterAbilityGroupEffect characterAbilityGroup, AbilityEffectType abilityEffectType = AbilityEffectType.None) + { + if (characterAbilityGroupEffectDictionary.TryGetValue(abilityEffectType, out var characterAbilityList)) + { + characterAbilityList.Add(characterAbilityGroup); + } + else + { + List characterAbilityGroups = new List(); + characterAbilityGroups.Add(characterAbilityGroup); + characterAbilityGroupEffectDictionary.Add(abilityEffectType, characterAbilityGroups); + } + } + + public static AbilityEffectType ParseAbilityEffectType(CharacterTalent characterTalent, string abilityEffectTypeString) + { + AbilityEffectType abilityEffectType = AbilityEffectType.Undefined; + if (!Enum.TryParse(abilityEffectTypeString, true, out abilityEffectType)) + { + DebugConsole.ThrowError("Invalid ability effect type \"" + abilityEffectTypeString + "\" in CharacterTalent (" + characterTalent.DebugIdentifier + ")"); + } + if (abilityEffectType == AbilityEffectType.Undefined) + { + DebugConsole.ThrowError("Ability effect type not defined in CharacterTalent (" + characterTalent.DebugIdentifier + ")"); + } + + return abilityEffectType; + } + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/TalentPrefab.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/TalentPrefab.cs new file mode 100644 index 000000000..5c42eb8e7 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/TalentPrefab.cs @@ -0,0 +1,102 @@ +using Microsoft.Xna.Framework; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Xml.Linq; + +namespace Barotrauma +{ + class TalentPrefab : IPrefab, IDisposable, IHasUintIdentifier + { + public string Identifier { get; private set; } + public string OriginalName => Identifier; + public ContentPackage ContentPackage { get; private set; } + public string FilePath { get; private set; } + + public static readonly PrefabCollection TalentPrefabs = new PrefabCollection(); + + public XElement ConfigElement + { + get; + private set; + } + + public TalentPrefab(XElement element, string filePath) + { + FilePath = filePath; + ConfigElement = element; + Identifier = element.GetAttributeString("identifier", "noidentifier"); + this.CalculatePrefabUIntIdentifier(TalentPrefabs); + } + + private bool disposed = false; + public void Dispose() + { + if (disposed) { return; } + disposed = true; + TalentPrefabs.Remove(this); + } + + /// + /// Unique identifier that's generated by hashing the prefab's string identifier. + /// Used to reduce the amount of bytes needed to write talent data into network messages in multiplayer. + /// + public uint UIntIdentifier { get; set; } + + public static void RemoveByFile(string filePath) => TalentPrefabs.RemoveByFile(filePath); + + public static void LoadFromFile(ContentFile file) + { + DebugConsole.Log("Loading talent prefab: " + file.Path); + RemoveByFile(file.Path); + + XDocument doc = XMLExtensions.TryLoadXml(file.Path); + if (doc == null) { return; } + + var rootElement = doc.Root; + switch (rootElement.Name.ToString().ToLowerInvariant()) + { + case "talent": + TalentPrefabs.Add(new TalentPrefab(rootElement, file.Path), false); + break; + case "talents": + foreach (var element in rootElement.Elements()) + { + if (element.IsOverride()) + { + var itemElement = element.GetChildElement("talent"); + if (itemElement != null) + { + TalentPrefabs.Add(new TalentPrefab(rootElement, file.Path), true); + } + else + { + DebugConsole.ThrowError($"Cannot find a talent element from the children of the override element defined in {file.Path}"); + } + } + else + { + TalentPrefabs.Add(new TalentPrefab(element, file.Path), false); + } + } + break; + default: + DebugConsole.ThrowError($"Invalid XML root element: '{rootElement.Name.ToString()}' in {file.Path}"); + break; + } + } + + public static void LoadAll(IEnumerable files) + { + DebugConsole.Log("Loading talent prefabs: "); + + foreach (ContentFile file in files) + { + LoadFromFile(file); + } + + } + + + } +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/TalentTree.cs b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/TalentTree.cs new file mode 100644 index 000000000..2a2f67bdf --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Characters/Talents/TalentTree.cs @@ -0,0 +1,219 @@ +using Microsoft.Xna.Framework; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Xml.Linq; + +namespace Barotrauma +{ + class TalentTree + { + public static readonly Dictionary JobTalentTrees = new Dictionary(); + + public readonly List TalentSubTrees = new List(); + + private static HashSet subtreeTalents = new HashSet(); + + public XElement ConfigElement + { + get; + private set; + } + + public TalentTree(XElement element, string filePath) + { + ConfigElement = element; + + string jobIdentifier = element.GetAttributeString("jobidentifier", ""); + + if (string.IsNullOrEmpty(jobIdentifier)) + { + DebugConsole.ThrowError("No job defined for talent tree!"); + return; + } + + foreach (XElement subTreeElement in element.GetChildElements("subtree")) + { + TalentSubTrees.Add(new TalentSubTree(subTreeElement)); + } + + // talents found and unlocked using the identifier wihin the talent tree, so no duplicates may occur + HashSet duplicateSet = new HashSet(); + foreach (string talent in TalentSubTrees.SelectMany(s => s.TalentOptionStages.SelectMany(o => o.Talents.Select(t => t.Identifier)))) + { + TalentPrefab talentPrefab = TalentPrefab.TalentPrefabs.Find(c => c.Identifier.Equals(talent, StringComparison.OrdinalIgnoreCase)); + if (talentPrefab == null) + { + DebugConsole.AddWarning($"Talent tree for job {jobIdentifier} contains non-existent talent {talent}! Talent tree not added."); + return; + } + if (!duplicateSet.Add(talent)) + { + DebugConsole.ThrowError($"Talent tree for job {jobIdentifier} contains duplicate talent {talent}! Talent tree not added."); + return; + } + } + + if (!JobTalentTrees.TryAdd(jobIdentifier, this)) + { + DebugConsole.ThrowError($"Could not add talent tree for job {jobIdentifier}! A talent tree for this job is already likely defined"); + } + } + + public static void LoadFromFile(ContentFile file) + { + DebugConsole.Log("Loading talent tree: " + file.Path); + + XDocument doc = XMLExtensions.TryLoadXml(file.Path); + if (doc == null) { return; } + + var rootElement = doc.Root; + switch (rootElement.Name.ToString().ToLowerInvariant()) + { + case "talenttree": + new TalentTree(rootElement, file.Path); + break; + case "talenttrees": + foreach (var element in rootElement.Elements()) + { + if (element.IsOverride()) + { + var treeElement = element.GetChildElement("talenttree"); + if (treeElement != null) + { + new TalentTree(rootElement, file.Path); + } + else + { + DebugConsole.ThrowError($"Cannot find a talent tree element from the children of the override element defined in {file.Path}"); + } + } + else + { + new TalentTree(element, file.Path); + } + } + break; + default: + DebugConsole.ThrowError($"Invalid XML root element: '{rootElement.Name.ToString()}' in {file.Path}"); + break; + } + } + + public static void LoadAll(IEnumerable files) + { + DebugConsole.Log("Loading talent tree: "); + + foreach (ContentFile file in files) + { + LoadFromFile(file); + } + } + + public static bool IsViableTalentForCharacter(Character character, string talentIdentifier) + { + return IsViableTalentForCharacter(character, talentIdentifier, character?.Info?.UnlockedTalents ?? Enumerable.Empty()); + } + + + public static bool IsViableTalentForCharacter(Character character, string talentIdentifier, IEnumerable selectedTalents) + { + if (character?.Info?.Job.Prefab == null) { return false; } + if (character.Info.GetTotalTalentPoints() - selectedTalents.Count() <= 0) { return false; } + + if (!JobTalentTrees.TryGetValue(character.Info.Job.Prefab.Identifier, out TalentTree talentTree)) { return false; } + + foreach (var subTree in talentTree.TalentSubTrees) + { + foreach (var talentOptionStage in subTree.TalentOptionStages) + { + bool hasTalentInThisTier = talentOptionStage.Talents.Any(t => selectedTalents.Contains(t.Identifier)); + if (!hasTalentInThisTier) + { + if (talentOptionStage.Talents.Any(t => t.Identifier == talentIdentifier)) + { + return true; + } + else + { + break; + } + } + } + } + + return false; + } + + public static List CheckTalentSelection(Character controlledCharacter, IEnumerable selectedTalents) + { + List viableTalents = new List(); + bool canStillUnlock = true; + // keep trying to unlock talents until none of the talents are unlockable + while (canStillUnlock && selectedTalents.Any()) + { + canStillUnlock = false; + foreach (string talent in selectedTalents) + { + if (IsViableTalentForCharacter(controlledCharacter, talent, viableTalents)) + { + viableTalents.Add(talent); + canStillUnlock = true; + } + } + } + return viableTalents; + } + } + + class TalentSubTree + { + public string Identifier { get; } + + public readonly List TalentOptionStages = new List(); + + public TalentSubTree(XElement subTreeElement) + { + Identifier = subTreeElement.GetAttributeString("identifier", ""); + + foreach (XElement talentOptionsElement in subTreeElement.GetChildElements("talentoptions")) + { + TalentOptionStages.Add(new TalentOption(talentOptionsElement)); + } + } + + } + + class TalentOption + { + public readonly List Talents = new List(); + + public TalentOption(XElement talentOptionsElement) + { + foreach (XElement talentOptionElement in talentOptionsElement.GetChildElements("talentoption")) + { + Talents.Add(new Talent(talentOptionElement)); + } + } + } + + class Talent + { + public readonly string Identifier; + public readonly Sprite Icon; + public Talent(XElement talentOptionElement) + { + Identifier = talentOptionElement.GetAttributeString("identifier", ""); + foreach (XElement subElement in talentOptionElement.Elements()) + { + switch (subElement.Name.ToString().ToLowerInvariant()) + { + case "icon": + Icon = new Sprite(subElement); + break; + } + } + } + } + +} diff --git a/Barotrauma/BarotraumaShared/SharedSource/ContentPackage.cs b/Barotrauma/BarotraumaShared/SharedSource/ContentPackage.cs index dbfb4cd19..ed67c56be 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/ContentPackage.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/ContentPackage.cs @@ -51,7 +51,9 @@ namespace Barotrauma WreckAIConfig, UpgradeModules, MapCreature, - EnemySubmarine + EnemySubmarine, + Talents, + TalentTrees, } public class ContentPackage @@ -103,7 +105,8 @@ namespace Barotrauma ContentType.Corpses, ContentType.UpgradeModules, ContentType.MapCreature, - ContentType.EnemySubmarine + ContentType.EnemySubmarine, + ContentType.Talents, }; //at least one file of each these types is required in core content packages @@ -135,7 +138,8 @@ namespace Barotrauma ContentType.Orders, ContentType.Corpses, ContentType.UpgradeModules, - ContentType.EnemySubmarine + ContentType.EnemySubmarine, + ContentType.Talents, }; public static IEnumerable CorePackageRequiredFiles diff --git a/Barotrauma/BarotraumaShared/SharedSource/DebugConsole.cs b/Barotrauma/BarotraumaShared/SharedSource/DebugConsole.cs index acaa5db14..e768d963d 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/DebugConsole.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/DebugConsole.cs @@ -191,11 +191,6 @@ namespace Barotrauma GameMain.NetworkMember.ShowNetStats = !GameMain.NetworkMember.ShowNetStats; })); - commands.Add(new Command("createfilelist", "", (string[] args) => - { - UpdaterUtil.SaveFileList("filelist.xml"); - })); - commands.Add(new Command("spawn|spawncharacter", "spawn [creaturename/jobname] [near/inside/outside/cursor] [team (0-3)]: Spawn a creature at a random spawnpoint (use the second parameter to only select spawnpoints near/inside/outside the submarine). You can also enter the name of a job (e.g. \"Mechanic\") to spawn a character with a specific job and the appropriate equipment.", null, () => { @@ -580,7 +575,7 @@ namespace Barotrauma } })); - commands.Add(new Command("dumptofile", "", (string[] args) => + commands.Add(new Command("dumptofile", "findentityids [filename]: Outputs the contents of the debug console into a text file in the game folder. If the filename argument is omitted, \"consoleOutput.txt\" is used as the filename.", (string[] args) => { string filename = "consoleOutput.txt"; if (args.Length > 0) { filename = string.Join(" ", args); } @@ -607,7 +602,7 @@ namespace Barotrauma } })); - commands.Add(new Command("giveaffliction", "giveaffliction [affliction name] [affliction strength] [character name]: Add an affliction to a character. If the name parameter is omitted, the affliction is added to the controlled character.", (string[] args) => + commands.Add(new Command("giveaffliction", "giveaffliction [affliction name] [affliction strength] [character name] [limb type]: Add an affliction to a character. If the name parameter is omitted, the affliction is added to the controlled character.", (string[] args) => { if (args.Length < 2) { return; } @@ -632,14 +627,21 @@ namespace Barotrauma bool.TryParse(args[2], out relativeStrength); } - Character targetCharacter = (relativeStrength || args.Length <= 2) ? Character.Controlled : FindMatchingCharacter(args.Skip(2).ToArray()); + Character targetCharacter = (relativeStrength || args.Length <= 2) ? Character.Controlled : FindMatchingCharacter(new string[] { args[2] }); + + if (targetCharacter != null) { + Limb targetLimb = targetCharacter.AnimController.MainLimb; + if (args.Length > 3) + { + targetLimb = targetCharacter.AnimController.Limbs.FirstOrDefault(l => l.type.ToString().Equals(args[3], StringComparison.OrdinalIgnoreCase)); + } if (relativeStrength) { afflictionStrength *= targetCharacter.MaxVitality / afflictionPrefab.MaxStrength; } - targetCharacter.CharacterHealth.ApplyAffliction(targetCharacter.AnimController.MainLimb, afflictionPrefab.Instantiate(afflictionStrength)); + targetCharacter.CharacterHealth.ApplyAffliction(targetLimb ?? targetCharacter.AnimController.MainLimb, afflictionPrefab.Instantiate(afflictionStrength)); } }, () => @@ -648,7 +650,8 @@ namespace Barotrauma { AfflictionPrefab.List.Select(a => a.Name).ToArray(), new string[] { "1" }, - Character.CharacterList.Select(c => c.Name).ToArray() + Character.CharacterList.Select(c => c.Name).ToArray(), + Enum.GetNames(typeof(LimbType)).ToArray() }; }, isCheat: true)); @@ -833,9 +836,68 @@ namespace Barotrauma commands.Add(new Command("water|editwater", "water/editwater: Toggle water editing. Allows adding water into rooms by holding the left mouse button and removing it by holding the right mouse button.", (string[] args) => { Hull.EditWater = !Hull.EditWater; - NewMessage(Hull.EditWater ? "Water editing on" : "Water editing off", Color.White); + NewMessage(Hull.EditWater ? "Water editing on" : "Water editing off", Color.White); }, isCheat: true)); + commands.Add(new Command("givetalent", "give [player] testing [talent]", (string[] args) => + { + if (args.Length < 2) return; + var character = FindMatchingCharacter(args.Skip(1).ToArray()) ?? Character.Controlled; + if (character != null) + { + character.GiveTalent(args[0]); + } + }, + () => + { + List talentNames = new List(); + foreach (TalentPrefab itemPrefab in TalentPrefab.TalentPrefabs) + { + talentNames.Add(itemPrefab.Identifier); + } + + return new string[][] + { + talentNames.ToArray(), + Character.CharacterList.Select(c => c.Name).Distinct().ToArray() + }; + }, isCheat: true)); + + commands.Add(new Command("giveexperience", "giveexperience [amount] [character]: Give experience to character.", (string[] args) => + { + if (args.Length < 1) + { + NewMessage($"Missing arguments. Expected at least 1 but got {args.Length} (experience, name)"); + return; + } + + string experienceString = args[0]; + var character = FindMatchingCharacter(args.Skip(1).ToArray()) ?? Character.Controlled; + + if (character?.Info == null) + { + NewMessage("Character is not valid."); + return; + } + + if (int.TryParse(experienceString, NumberStyles.Number, CultureInfo.InvariantCulture, out int experience)) + { + character.Info.GiveExperience(experience); + NewMessage($"Gave {character.Name} {experience} experience"); + } + else + { + NewMessage($"{experienceString} is not a valid value. Expected number."); + } + }, isCheat: true, getValidArgs: () => + { + return new[] + { + new string[] { "100" }, + Character.CharacterList.Select(c => c.Name).Distinct().ToArray(), + }; + })); + commands.Add(new Command("fire|editfire", "fire/editfire: Allows putting up fires by left clicking.", (string[] args) => { Hull.EditFire = !Hull.EditFire; @@ -947,7 +1009,7 @@ namespace Barotrauma string subName = GameMain.Config.QuickStartSubmarineName; if (!string.IsNullOrEmpty(subName)) { - selectedSub = SubmarineInfo.SavedSubmarines.FirstOrDefault(s => s.Name.ToLower() == subName.ToLower()); + selectedSub = SubmarineInfo.SavedSubmarines.FirstOrDefault(s => s.Name.Equals(subName, StringComparison.OrdinalIgnoreCase)); } int count = 0; @@ -1013,7 +1075,7 @@ namespace Barotrauma if (args.Length == 0) { return; } if (float.TryParse(args[0], NumberStyles.Any, CultureInfo.InvariantCulture, out float reputation)) { - campaign.Map.CurrentLocation.Reputation.Value = reputation; + campaign.Map.CurrentLocation.Reputation.SetReputation(reputation); } else { @@ -1040,7 +1102,7 @@ namespace Barotrauma { if (float.TryParse(args[1], NumberStyles.Any, CultureInfo.InvariantCulture, out float reputation)) { - faction.Reputation.Value = reputation; + faction.Reputation.SetReputation(reputation); } else { @@ -1368,7 +1430,7 @@ namespace Barotrauma NewMessage((GameMain.GameSession.Map.AllowDebugTeleport ? "Enabled" : "Disabled") + " teleportation on the campaign map.", Color.White); }, isCheat: true)); - commands.Add(new Command("money", "", args => + commands.Add(new Command("money", "money [amount]: Gives the specified amount of money to the crew when a campaign is active.", args => { if (args.Length == 0) { return; } if (GameMain.GameSession?.GameMode is CampaignMode campaign) @@ -1488,8 +1550,8 @@ namespace Barotrauma { if (args.Length > 0) { - string packageName = string.Join(" ", args).ToLower(); - var package = GameMain.Config.AllEnabledPackages.FirstOrDefault(p => p.Name.ToLower() == packageName); + string packageName = string.Join(" ", args); + var package = GameMain.Config.AllEnabledPackages.FirstOrDefault(p => p.Name.Equals(packageName, StringComparison.OrdinalIgnoreCase)); if (package == null) { ThrowError("Content package \"" + packageName + "\" not found."); diff --git a/Barotrauma/BarotraumaShared/SharedSource/Enums.cs b/Barotrauma/BarotraumaShared/SharedSource/Enums.cs index d0a91b108..c127555da 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Enums.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Enums.cs @@ -23,5 +23,78 @@ OnProduceSpawned, OnOpen, OnClose, OnDeath = OnBroken, + OnSuccess, + OnAbility, } + + public enum AbilityEffectType + { + Undefined, + None, + OnAttack, + OnAttackResult, + OnAttacked, + OnGainSkillPoint, + OnAllyGainSkillPoint, + OnRepairComplete, + OnItemFabricationSkillGain, + OnItemFabricatedAmount, + OnAllyItemFabricatedAmount, + OnOpenItemContainer, + OnUseRangedWeapon, + OnReduceAffliction, + OnAddDamageAffliction, + OnSelfRagdoll, + OnAnyMissionCompleted, + OnAllMissionsCompleted, + OnGiveOrder, + OnCrewKillCharacter, + OnDieToCharacter, + OnAllyGainMissionExperience, + OnGainMissionExperience, + OnGainMissionMoney, + AfterSubmarineAttacked, + } + + public enum StatTypes + { + None, + // Skills + ElectricalSkillBonus, + HelmSkillBonus, + MechanicalSkillBonus, + MedicalSkillBonus, + WeaponsSkillBonus, + // Character attributes + MaximumHealthMultiplier, + MovementSpeed, + SwimmingSpeed, + BuffDurationMultiplier, + DebuffDurationMultiplier, + // Combat + AttackMultiplier, + RangedAttackSpeed, + TurretAttackSpeed, + MeleeAttackSpeed, + SpreadMultiplier, + // Utility + RepairSpeed, + // Misc + ReputationGainMultiplier, + MissionMoneyGainMultiplier, + ExperienceGainMultiplier, + MissionExperienceGainMultiplier, + + } + + public enum AbilityFlags + { + None, + MustWalk, + ImmuneToPressure, + IgnoredByEnemyAI, + MoveNormallyWhileDragging, + CanTinker, + } + } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Events/EventActions/ReputationAction.cs b/Barotrauma/BarotraumaShared/SharedSource/Events/EventActions/ReputationAction.cs index 2ed053c81..d4f86a1f0 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Events/EventActions/ReputationAction.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Events/EventActions/ReputationAction.cs @@ -50,7 +50,7 @@ namespace Barotrauma Faction faction = campaign.Factions.Find(faction1 => faction1.Prefab.Identifier.Equals(Identifier, StringComparison.OrdinalIgnoreCase)); if (faction != null) { - faction.Reputation.Value += Increase; + faction.Reputation.AddReputation(Increase); } else { @@ -64,14 +64,14 @@ namespace Barotrauma Location location = campaign.Map.CurrentLocation; if (location != null) { - location.Reputation.Value += Increase; + location.Reputation.AddReputation(Increase); IEnumerable locations = location.Connections.SelectMany(c => c.Locations).Distinct().Where(l => l != null && l != location); foreach (Location connectedLocation in locations) { Debug.Assert(connectedLocation.Reputation != null, "connectedLocation.Reputation != null"); if (connectedLocation.Reputation != null) { - connectedLocation.Reputation.Value += (Increase / 4); + connectedLocation.Reputation.AddReputation(Increase / 4); } } } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Events/EventManager.cs b/Barotrauma/BarotraumaShared/SharedSource/Events/EventManager.cs index 3f8a0a93a..c9b03e99c 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Events/EventManager.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Events/EventManager.cs @@ -380,9 +380,13 @@ namespace Barotrauma { pendingEventSets.Clear(); selectedEvents.Clear(); + activeEvents.Clear(); + QueuedEvents.Clear(); preloadedSprites.ForEach(s => s.Remove()); preloadedSprites.Clear(); + + pathFinder = null; } private float CalculateCommonness(EventPrefab eventPrefab, float baseCommonness) diff --git a/Barotrauma/BarotraumaShared/SharedSource/Events/Missions/Mission.cs b/Barotrauma/BarotraumaShared/SharedSource/Events/Missions/Mission.cs index 77747d13a..47b9637e2 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Events/Missions/Mission.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Events/Missions/Mission.cs @@ -1,4 +1,6 @@ -using Microsoft.Xna.Framework; +using Barotrauma.Abilities; +using Barotrauma.Extensions; +using Microsoft.Xna.Framework; using System; using System.Collections.Generic; using System.Globalization; @@ -343,19 +345,40 @@ namespace Barotrauma public void GiveReward() { if (!(GameMain.GameSession.GameMode is CampaignMode campaign)) { return; } - campaign.Money += GetReward(Submarine.MainSub); + int reward = GetReward(Submarine.MainSub); + + float baseExperienceGain = reward * 0.15f; + + IEnumerable crewCharacters = GameSession.GetSessionCrewCharacters(); + + // use multipliers here so that we can easily add them together without introducing multiplicative XP stacking + var experienceGainMultiplier = new AbilityValue(1f); + crewCharacters.ForEach(c => c.CheckTalents(AbilityEffectType.OnAllyGainMissionExperience, experienceGainMultiplier)); + crewCharacters.ForEach(c => experienceGainMultiplier.Value += c.GetStatValue(StatTypes.MissionExperienceGainMultiplier)); + + foreach (Character character in crewCharacters) + { + character.Info.GiveExperience((int)(baseExperienceGain * experienceGainMultiplier.Value), isMissionExperience: true); + } + + // apply money gains afterwards to prevent them from affecting XP gains + var moneyGainMultiplier = new AbilityValue(1f); + crewCharacters.ForEach(c => c.CheckTalents(AbilityEffectType.OnGainMissionMoney, (this, moneyGainMultiplier))); + crewCharacters.ForEach(c => moneyGainMultiplier.Value += c.GetStatValue(StatTypes.MissionMoneyGainMultiplier)); + + campaign.Money += (int)(reward * moneyGainMultiplier.Value); foreach (KeyValuePair reputationReward in ReputationRewards) { if (reputationReward.Key.Equals("location", StringComparison.OrdinalIgnoreCase)) { - Locations[0].Reputation.Value += reputationReward.Value; - Locations[1].Reputation.Value += reputationReward.Value; + Locations[0].Reputation.AddReputation(reputationReward.Value); + Locations[1].Reputation.AddReputation(reputationReward.Value); } else { Faction faction = campaign.Factions.Find(faction1 => faction1.Prefab.Identifier.Equals(reputationReward.Key, StringComparison.OrdinalIgnoreCase)); - if (faction != null) { faction.Reputation.Value += reputationReward.Value; } + if (faction != null) { faction.Reputation.AddReputation(reputationReward.Value); } } } diff --git a/Barotrauma/BarotraumaShared/SharedSource/GameSession/AutoItemPlacer.cs b/Barotrauma/BarotraumaShared/SharedSource/GameSession/AutoItemPlacer.cs index c93b28077..127e56d71 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/GameSession/AutoItemPlacer.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/GameSession/AutoItemPlacer.cs @@ -8,8 +8,6 @@ namespace Barotrauma { static class AutoItemPlacer { - private static readonly List spawnedItems = new List(); - public static bool OutputDebugInfo = false; public static void PlaceIfNeeded() @@ -41,7 +39,12 @@ namespace Barotrauma } } - private static void Place(IEnumerable subs) + public static void RegenerateLoot(Submarine sub, ItemContainer regeneratedContainer) + { + Place(sub.ToEnumerable(), regeneratedContainer); + } + + private static void Place(IEnumerable subs, ItemContainer regeneratedContainer = null) { if (GameMain.NetworkMember != null && GameMain.NetworkMember.IsClient) { @@ -49,19 +52,29 @@ namespace Barotrauma return; } + List spawnedItems = new List(100); + int itemCountApprox = MapEntityPrefab.List.Count() / 3; var containers = new List(70 + 30 * subs.Count()); var prefabsWithContainer = new List(itemCountApprox / 3); var prefabsWithoutContainer = new List(itemCountApprox); var removals = new List(); - foreach (Item item in Item.ItemList) + // generate loot only for a specific container if defined + if (regeneratedContainer != null) { - if (!subs.Contains(item.Submarine)) { continue; } - if (item.GetRootInventoryOwner() is Character) { continue; } - containers.AddRange(item.GetComponents()); + containers.Add(regeneratedContainer); + } + else + { + foreach (Item item in Item.ItemList) + { + if (!subs.Contains(item.Submarine)) { continue; } + if (item.GetRootInventoryOwner() is Character) { continue; } + containers.AddRange(item.GetComponents()); + } + containers.Shuffle(Rand.RandSync.Server); } - containers.Shuffle(Rand.RandSync.Server); foreach (MapEntityPrefab prefab in MapEntityPrefab.List) { @@ -77,7 +90,6 @@ namespace Barotrauma } } - spawnedItems.Clear(); var validContainers = new Dictionary(); prefabsWithContainer.Shuffle(Rand.RandSync.Server); // Spawn items that have an ItemContainer component first so we can fill them up with items if needed (oxygen tanks inside the spawned diving masks, etc) @@ -152,8 +164,10 @@ namespace Barotrauma } foreach (var validContainer in validContainers) { - if (SpawnItem(itemPrefab, containers, validContainer)) + var newItems = SpawnItem(itemPrefab, containers, validContainer); + if (newItems.Any()) { + spawnedItems.AddRange(newItems); success = true; } } @@ -184,14 +198,15 @@ namespace Barotrauma return validContainers; } - private static bool SpawnItem(ItemPrefab itemPrefab, List containers, KeyValuePair validContainer) + private static List SpawnItem(ItemPrefab itemPrefab, List containers, KeyValuePair validContainer) { + List spawnedItems = new List(); bool success = false; - if (Rand.Value(Rand.RandSync.Server) > validContainer.Value.SpawnProbability) { return false; } + if (Rand.Value(Rand.RandSync.Server) > validContainer.Value.SpawnProbability) { return spawnedItems; } // Don't add dangerously reactive materials in thalamus wrecks if (validContainer.Key.Item.Submarine.WreckAI != null && itemPrefab.Tags.Contains("explodesinwater")) { - return false; + return spawnedItems; } int amount = Rand.Range(validContainer.Value.MinAmount, validContainer.Value.MaxAmount + 1, Rand.RandSync.Server); for (int i = 0; i < amount; i++) @@ -219,7 +234,7 @@ namespace Barotrauma containers.AddRange(item.GetComponents()); success = true; } - return success; + return spawnedItems; } } } diff --git a/Barotrauma/BarotraumaShared/SharedSource/GameSession/CrewManager.cs b/Barotrauma/BarotraumaShared/SharedSource/GameSession/CrewManager.cs index 8eed7fcfa..49e0aa705 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/GameSession/CrewManager.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/GameSession/CrewManager.cs @@ -237,6 +237,9 @@ namespace Barotrauma { CharacterInfo.ApplyHealthData(character, character.Info.HealthData); } + + character.LoadTalents(); + character.GiveIdCardTags(spawnWaypoints[i]); character.Info.StartItemsGiven = true; if (character.Info.OrderData != null) diff --git a/Barotrauma/BarotraumaShared/SharedSource/GameSession/Data/Reputation.cs b/Barotrauma/BarotraumaShared/SharedSource/GameSession/Data/Reputation.cs index 9944fd2bc..49f175753 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/GameSession/Data/Reputation.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/GameSession/Data/Reputation.cs @@ -1,5 +1,6 @@ using Microsoft.Xna.Framework; using System; +using System.Linq; namespace Barotrauma { @@ -31,7 +32,7 @@ namespace Barotrauma public float Value { get => Math.Min(MaxReputation, Metadata.GetFloat(metaDataIdentifier, InitialReputation)); - set + private set { if (MathUtils.NearlyEqual(Value, value)) { return; } Metadata.SetValue(metaDataIdentifier, Math.Clamp(value, MinReputation, MaxReputation)); @@ -40,6 +41,25 @@ namespace Barotrauma } } + public void SetReputation(float newReputation) + { + Value = newReputation; + } + + public void AddReputation(float reputationChange) + { + if (reputationChange > 0f) + { + float reputationGainMultiplier = 1f; + foreach (Character character in Character.CharacterList.Where(c => c.TeamID == CharacterTeamType.Team1)) + { + reputationGainMultiplier += character.GetStatValue(StatTypes.ReputationGainMultiplier); + } + reputationChange *= reputationGainMultiplier; + } + Value += reputationChange; + } + public Action OnReputationValueChanged; public static Action OnAnyReputationValueChanged; diff --git a/Barotrauma/BarotraumaShared/SharedSource/GameSession/GameModes/CampaignMode.cs b/Barotrauma/BarotraumaShared/SharedSource/GameSession/GameModes/CampaignMode.cs index 9c7e037e4..fdf7fa68a 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/GameSession/GameModes/CampaignMode.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/GameSession/GameModes/CampaignMode.cs @@ -18,6 +18,10 @@ namespace Barotrauma public static CampaignSettings Unsure = Empty; public bool RadiationEnabled { get; set; } public int MaxMissionCount { get; set; } + public int AddedMissionCount { get; set; } + + public int TotalMaxMissionCount => MaxMissionCount + AddedMissionCount; + public const int DefaultMaxMissionCount = 2; public const int MaxMissionCountLimit = 10; @@ -27,23 +31,26 @@ namespace Barotrauma { RadiationEnabled = inc.ReadBoolean(); MaxMissionCount = inc.ReadInt32(); + AddedMissionCount = inc.ReadInt32(); } - + public CampaignSettings(XElement element) { - RadiationEnabled = element.GetAttributeBool(nameof(RadiationEnabled).ToLower(), true); - MaxMissionCount = element.GetAttributeInt(nameof(MaxMissionCount).ToLower(), DefaultMaxMissionCount); + RadiationEnabled = element.GetAttributeBool(nameof(RadiationEnabled).ToLowerInvariant(), true); + MaxMissionCount = element.GetAttributeInt(nameof(MaxMissionCount).ToLowerInvariant(), DefaultMaxMissionCount); + AddedMissionCount = element.GetAttributeInt(nameof(AddedMissionCount).ToLowerInvariant(), 0); } public void Serialize(IWriteMessage msg) { msg.Write(RadiationEnabled); msg.Write(MaxMissionCount); + msg.Write(AddedMissionCount); } public XElement Save() { - return new XElement(nameof(CampaignSettings), new XAttribute(nameof(RadiationEnabled).ToLower(), RadiationEnabled), new XAttribute(nameof(MaxMissionCount).ToLower().ToLower(), MaxMissionCount)); + return new XElement(nameof(CampaignSettings), new XAttribute(nameof(RadiationEnabled).ToLowerInvariant(), RadiationEnabled), new XAttribute(nameof(MaxMissionCount).ToLowerInvariant(), MaxMissionCount), new XAttribute(nameof(AddedMissionCount).ToLowerInvariant(), AddedMissionCount)); } } @@ -226,6 +233,8 @@ namespace Barotrauma PurchasedLostShuttles = false; var connectedSubs = Submarine.MainSub.GetConnectedSubs(); wasDocked = Level.Loaded.StartOutpost != null && connectedSubs.Contains(Level.Loaded.StartOutpost); + + ResetTalentData(); } public void InitCampaignData() @@ -846,7 +855,7 @@ namespace Barotrauma Location location = Map?.CurrentLocation; if (location != null) { - location.Reputation.Value -= attackResult.Damage * Reputation.ReputationLossPerNPCDamage; + location.Reputation.AddReputation(-attackResult.Damage * Reputation.ReputationLossPerNPCDamage); } } @@ -898,15 +907,24 @@ namespace Barotrauma { foreach (Location location in currentLocation.Connections.Select(c => c.OtherLocation(currentLocation))) { - if (NumberOfMissionsAtLocation(location) > Settings.MaxMissionCount) + if (NumberOfMissionsAtLocation(location) > Settings.TotalMaxMissionCount) { DebugConsole.AddWarning($"Client {sender.Name} had too many missions selected for location {location.Name}! Count was {NumberOfMissionsAtLocation(location)}. Deselecting extra missions."); - foreach (Mission mission in currentLocation.SelectedMissions.Where(m => m.Locations[1] == location).Skip(Settings.MaxMissionCount).ToList()) + foreach (Mission mission in currentLocation.SelectedMissions.Where(m => m.Locations[1] == location).Skip(Settings.TotalMaxMissionCount).ToList()) { currentLocation.DeselectMission(mission); } } } } + + // Talent relevant data, only stored for the duration of the mission + private void ResetTalentData() + { + CrewHasDied = false; + } + + public bool CrewHasDied { get; set; } + } } diff --git a/Barotrauma/BarotraumaShared/SharedSource/GameSession/GameSession.cs b/Barotrauma/BarotraumaShared/SharedSource/GameSession/GameSession.cs index b17a7ec74..0a2e0bdd3 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/GameSession/GameSession.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/GameSession/GameSession.cs @@ -29,6 +29,8 @@ namespace Barotrauma public bool IsRunning { get; private set; } + public bool RoundEnding { get; private set; } + public Level Level { get; private set; } public LevelData LevelData { get; private set; } @@ -654,43 +656,83 @@ namespace Barotrauma partial void UpdateProjSpecific(float deltaTime); + public static IEnumerable GetSessionCrewCharacters() + { +#if SERVER + return GameMain.Server.ConnectedClients.Select(c => c.Character).Where(c => c.Info != null); +#else + return GameMain.GameSession.CrewManager.CharacterInfos.Select(i => i.Character).Where(c => c != null); +#endif + } + public void EndRound(string endMessage, List traitorResults = null, CampaignMode.TransitionType transitionType = CampaignMode.TransitionType.None) { - foreach (Mission mission in missions) - { - mission.End(); - } -#if CLIENT - if (GUI.PauseMenuOpen) - { - GUI.TogglePauseMenu(); - } - GUI.PreventPauseMenuToggle = true; + RoundEnding = true; - if (!(GameMode is TestGameMode) && Screen.Selected == GameMain.GameScreen && RoundSummary != null) + try { - GUI.ClearMessages(); - GUIMessageBox.MessageBoxes.RemoveAll(mb => mb.UserData is RoundSummary); - GUIFrame summaryFrame = RoundSummary.CreateSummaryFrame(this, endMessage, traitorResults, transitionType); - GUIMessageBox.MessageBoxes.Add(summaryFrame); - RoundSummary.ContinueButton.OnClicked = (_, __) => { GUIMessageBox.MessageBoxes.Remove(summaryFrame); return true; }; - } + IEnumerable crewCharacters = GameSession.GetSessionCrewCharacters(); - if (GameMain.NetLobbyScreen != null) GameMain.NetLobbyScreen.OnRoundEnded(); - TabMenu.OnRoundEnded(); - GUIMessageBox.MessageBoxes.RemoveAll(mb => mb.UserData as string == "ConversationAction" || ReadyCheck.IsReadyCheck(mb)); -#endif - SteamAchievementManager.OnRoundEnded(this); + foreach (Mission mission in missions) + { + mission.End(); + } - GameMode?.End(transitionType); - EventManager?.EndRound(); - StatusEffect.StopAll(); - missions.Clear(); - IsRunning = false; + if (missions.Any()) + { + if (missions.Any(m => m.Completed)) + { + foreach (CharacterInfo characterInfo in GameMain.GameSession.CrewManager.CharacterInfos) + { + characterInfo.Character?.CheckTalents(AbilityEffectType.OnAnyMissionCompleted); + } + } + + if (missions.All(m => m.Completed)) + { + foreach (CharacterInfo characterInfo in GameMain.GameSession.CrewManager.CharacterInfos) + { + characterInfo.Character?.CheckTalents(AbilityEffectType.OnAllMissionsCompleted); + } + } + } #if CLIENT - HintManager.OnRoundEnded(); + if (GUI.PauseMenuOpen) + { + GUI.TogglePauseMenu(); + } + GUI.PreventPauseMenuToggle = true; + + if (!(GameMode is TestGameMode) && Screen.Selected == GameMain.GameScreen && RoundSummary != null) + { + GUI.ClearMessages(); + GUIMessageBox.MessageBoxes.RemoveAll(mb => mb.UserData is RoundSummary); + GUIFrame summaryFrame = RoundSummary.CreateSummaryFrame(this, endMessage, traitorResults, transitionType); + GUIMessageBox.MessageBoxes.Add(summaryFrame); + RoundSummary.ContinueButton.OnClicked = (_, __) => { GUIMessageBox.MessageBoxes.Remove(summaryFrame); return true; }; + } + + if (GameMain.NetLobbyScreen != null) { GameMain.NetLobbyScreen.OnRoundEnded(); } + TabMenu.OnRoundEnded(); + GUIMessageBox.MessageBoxes.RemoveAll(mb => mb.UserData as string == "ConversationAction" || ReadyCheck.IsReadyCheck(mb)); #endif + SteamAchievementManager.OnRoundEnded(this); + + GameMode?.End(transitionType); + EventManager?.EndRound(); + StatusEffect.StopAll(); + missions.Clear(); + IsRunning = false; + +#if CLIENT + HintManager.OnRoundEnded(); +#endif + } + finally + { + RoundEnding = false; + } } public void KillCharacter(Character character) diff --git a/Barotrauma/BarotraumaShared/SharedSource/GameSettings.cs b/Barotrauma/BarotraumaShared/SharedSource/GameSettings.cs index d5cc99aea..2183d6866 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/GameSettings.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/GameSettings.cs @@ -307,6 +307,7 @@ namespace Barotrauma public bool AutomaticQuickStartEnabled { get; set; } public bool AutomaticCampaignLoadEnabled { get; set; } public bool TextManagerDebugModeEnabled { get; set; } + public bool TestScreenEnabled { get; set; } public bool ModBreakerMode { get; set; } #endif @@ -548,6 +549,12 @@ namespace Barotrauma case ContentType.Text: TextManager.LoadTextPack(file.Path); break; + case ContentType.Talents: + TalentPrefab.LoadFromFile(file); + break; + case ContentType.TalentTrees: + TalentTree.LoadFromFile(file); + break; #if CLIENT case ContentType.Particles: GameMain.ParticleManager?.LoadPrefabsFromFile(file); @@ -594,6 +601,12 @@ namespace Barotrauma case ContentType.Text: TextManager.RemoveTextPack(file.Path); break; + case ContentType.Talents: + TalentPrefab.LoadFromFile(file); + break; + case ContentType.TalentTrees: + TalentTree.LoadFromFile(file); + break; #if CLIENT case ContentType.Particles: GameMain.ParticleManager?.RemovePrefabsByFile(file.Path); @@ -703,7 +716,6 @@ namespace Barotrauma public string MasterServerUrl { get; set; } public string RemoteContentUrl { get; set; } public bool AutoCheckUpdates { get; set; } - public bool WasGameUpdated { get; set; } private string playerName; public string PlayerName @@ -796,13 +808,6 @@ namespace Barotrauma LoadDefaultConfig(); - if (WasGameUpdated) - { - UpdaterUtil.CleanOldFiles(); - WasGameUpdated = false; - SaveNewDefaultConfig(); - } - LoadPlayerConfig(); } @@ -827,7 +832,6 @@ namespace Barotrauma MasterServerUrl = doc.Root.GetAttributeString("masterserverurl", MasterServerUrl); RemoteContentUrl = doc.Root.GetAttributeString("remotecontenturl", RemoteContentUrl); - WasGameUpdated = doc.Root.GetAttributeBool("wasgameupdated", WasGameUpdated); VerboseLogging = doc.Root.GetAttributeBool("verboselogging", VerboseLogging); SaveDebugConsoleLogs = doc.Root.GetAttributeBool("savedebugconsolelogs", SaveDebugConsoleLogs); AutoUpdateWorkshopItems = doc.Root.GetAttributeBool("autoupdateworkshopitems", AutoUpdateWorkshopItems); @@ -889,11 +893,6 @@ namespace Barotrauma doc.Root.Add(new XAttribute("senduserstatistics", sendUserStatistics)); } - if (WasGameUpdated) - { - doc.Root.Add(new XAttribute("wasgameupdated", true)); - } - XElement gMode = doc.Root.Element("graphicsmode"); if (gMode == null) { @@ -1147,6 +1146,7 @@ namespace Barotrauma new XAttribute("disableingamehints", DisableInGameHints) #if DEBUG , new XAttribute("automaticquickstartenabled", AutomaticQuickStartEnabled) + , new XAttribute(nameof(TestScreenEnabled).ToLower(), TestScreenEnabled) , new XAttribute("automaticcampaignloadenabled", AutomaticCampaignLoadEnabled) , new XAttribute("textmanagerdebugmodeenabled", TextManagerDebugModeEnabled) , new XAttribute("modbreakermode", ModBreakerMode) @@ -1402,6 +1402,7 @@ namespace Barotrauma DisableInGameHints = doc.Root.GetAttributeBool("disableingamehints", DisableInGameHints); #if DEBUG AutomaticQuickStartEnabled = doc.Root.GetAttributeBool("automaticquickstartenabled", AutomaticQuickStartEnabled); + TestScreenEnabled = doc.Root.GetAttributeBool(nameof(TestScreenEnabled).ToLower(), TestScreenEnabled); AutomaticCampaignLoadEnabled = doc.Root.GetAttributeBool("automaticcampaignloadenabled", AutomaticCampaignLoadEnabled); TextManagerDebugModeEnabled = doc.Root.GetAttributeBool("textmanagerdebugmodeenabled", TextManagerDebugModeEnabled); ModBreakerMode = doc.Root.GetAttributeBool("modbreakermode", ModBreakerMode); @@ -1686,7 +1687,6 @@ namespace Barotrauma Language = "English"; } MasterServerUrl = "http://www.undertowgames.com/baromaster"; - WasGameUpdated = false; VerboseLogging = false; SaveDebugConsoleLogs = false; AutoUpdateWorkshopItems = true; diff --git a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/DockingPort.cs b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/DockingPort.cs index a5e681c9a..e2d433d8c 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/DockingPort.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/DockingPort.cs @@ -204,8 +204,8 @@ namespace Barotrauma.Items.Components target.InitializeLinks(); - if (!item.linkedTo.Contains(target.item)) item.linkedTo.Add(target.item); - if (!target.item.linkedTo.Contains(item)) target.item.linkedTo.Add(item); + if (!item.linkedTo.Contains(target.item)) { item.linkedTo.Add(target.item); } + if (!target.item.linkedTo.Contains(item)) { target.item.linkedTo.Add(item); } if (!target.item.Submarine.DockedTo.Contains(item.Submarine)) target.item.Submarine.ConnectedDockingPorts.Add(item.Submarine, target); if (!item.Submarine.DockedTo.Contains(target.item.Submarine)) item.Submarine.ConnectedDockingPorts.Add(target.item.Submarine, this); @@ -291,7 +291,7 @@ namespace Barotrauma.Items.Components List removedEntities = item.linkedTo.Where(e => e.Removed).ToList(); - foreach (MapEntity removed in removedEntities) item.linkedTo.Remove(removed); + foreach (MapEntity removed in removedEntities) { item.linkedTo.Remove(removed); } if (!item.linkedTo.Any(e => e is Hull) && !DockingTarget.item.linkedTo.Any(e => e is Hull)) { @@ -306,9 +306,8 @@ namespace Barotrauma.Items.Components if (myWayPoint != null && targetWayPoint != null) { myWayPoint.FindHull(); - myWayPoint.linkedTo.Add(targetWayPoint); targetWayPoint.FindHull(); - targetWayPoint.linkedTo.Add(myWayPoint); + myWayPoint.ConnectTo(targetWayPoint); } } } @@ -597,8 +596,9 @@ namespace Barotrauma.Items.Components { hullRects[i].X -= expand; hullRects[i].Width += expand * 2; - hullRects[i].Location -= MathUtils.ToPoint((subs[i].WorldPosition - subs[i].HiddenSubPosition)); + hullRects[i].Location -= MathUtils.ToPoint(subs[i].WorldPosition - subs[i].HiddenSubPosition); hulls[i] = new Hull(MapEntityPrefab.Find(null, "hull"), hullRects[i], subs[i]); + hulls[i].RoomName = IsHorizontal ? "entityname.dockingport" : "entityname.dockinghatch"; hulls[i].AddToGrid(subs[i]); hulls[i].FreeID(); @@ -716,8 +716,9 @@ namespace Barotrauma.Items.Components { hullRects[i].Y += expand; hullRects[i].Height += expand * 2; - hullRects[i].Location -= MathUtils.ToPoint((subs[i].WorldPosition - subs[i].HiddenSubPosition)); + hullRects[i].Location -= MathUtils.ToPoint(subs[i].WorldPosition - subs[i].HiddenSubPosition); hulls[i] = new Hull(MapEntityPrefab.Find(null, "hull"), hullRects[i], subs[i]); + hulls[i].RoomName = IsHorizontal ? "entityname.dockingport" : "entityname.dockinghatch"; hulls[i].AddToGrid(subs[i]); hulls[i].FreeID(); @@ -873,8 +874,10 @@ namespace Barotrauma.Items.Components { myWayPoint.FindHull(); myWayPoint.linkedTo.Remove(targetWayPoint); + myWayPoint.OnLinksChanged?.Invoke(myWayPoint); targetWayPoint.FindHull(); targetWayPoint.linkedTo.Remove(myWayPoint); + targetWayPoint.OnLinksChanged?.Invoke(targetWayPoint); } } @@ -1058,7 +1061,7 @@ namespace Barotrauma.Items.Components } } - if (!item.linkedTo.Any()) return; + if (!item.linkedTo.Any()) { return; } List linked = new List(item.linkedTo); foreach (MapEntity entity in linked) diff --git a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/ElectricalDischarger.cs b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/ElectricalDischarger.cs index a86e3f923..2d58be590 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/ElectricalDischarger.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/ElectricalDischarger.cs @@ -475,6 +475,21 @@ namespace Barotrauma.Items.Components } } + public override void ReceiveSignal(Signal signal, Connection connection) + { + switch (connection.Name) + { + case "activate": + case "use": + case "trigger_in": + if (signal.value != "0") + { + item.Use(1.0f, null); + } + break; + } + } + protected override void RemoveComponentSpecific() { base.RemoveComponentSpecific(); diff --git a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Holdable/Holdable.cs b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Holdable/Holdable.cs index cbfc92b1a..8c48733a9 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Holdable/Holdable.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Holdable/Holdable.cs @@ -33,7 +33,7 @@ namespace Barotrauma.Items.Components private bool attachable, attached, attachedByDefault; private Voronoi2.VoronoiCell attachTargetCell; - private readonly PhysicsBody body; + private PhysicsBody body; public PhysicsBody Pusher { get; @@ -780,7 +780,19 @@ namespace Barotrauma.Items.Components DeattachFromWall(); } } - + + protected override void RemoveComponentSpecific() + { + base.RemoveComponentSpecific(); + attachTargetCell = null; + if (Pusher != null) + { + GameMain.World.Remove(Pusher.FarseerBody); + Pusher = null; + } + body = null; + } + public override XElement Save(XElement parentElement) { if (!attachable) diff --git a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Holdable/IdCard.cs b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Holdable/IdCard.cs index d426b1a70..d362beb6f 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Holdable/IdCard.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Holdable/IdCard.cs @@ -1,11 +1,29 @@ -using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework; using System.Collections.Generic; +using System.Linq; using System.Xml.Linq; namespace Barotrauma.Items.Components { partial class IdCard : Pickable { + [Serialize(CharacterTeamType.None, true, alwaysUseInstanceValues: true)] + public CharacterTeamType TeamID + { + get; + set; + } + + [Serialize(0, true, alwaysUseInstanceValues: true)] + public int SubmarineSpecificID + { + get; + set; + } + + private JobPrefab cachedJobPrefab; + private string cachedName; + public IdCard(Item item, XElement element) : base(item, element) { @@ -20,6 +38,8 @@ namespace Barotrauma.Items.Components item.AddTag("jobid:" + info.Job.Prefab.Identifier); } + TeamID = info.TeamID; + var head = info.Head; if (info != null && head != null) @@ -50,5 +70,48 @@ namespace Barotrauma.Items.Components base.Unequip(character); character.Info?.CheckDisguiseStatus(true, this); } + + public JobPrefab GetJob() + { + if (cachedJobPrefab != null) + { + return cachedJobPrefab; + } + + foreach (string tag in item.GetTags()) + { + if (tag.StartsWith("jobid:")) + { + string jobIdentifier = tag.Split(':').Last(); + if (JobPrefab.Get(jobIdentifier) is { } jobPrefab) + { + cachedJobPrefab = jobPrefab; + return jobPrefab; + } + } + } + + return null; + } + + public string GetName() + { + if (cachedName != null) + { + return cachedName; + } + + foreach (string tag in item.GetTags()) + { + if (tag.StartsWith("name:")) + { + string ownerName = tag.Split(':').Last(); + cachedName = ownerName; + return ownerName; + } + } + + return null; + } } } \ No newline at end of file diff --git a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Holdable/MeleeWeapon.cs b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Holdable/MeleeWeapon.cs index f59597c61..b7174abdf 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Holdable/MeleeWeapon.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Holdable/MeleeWeapon.cs @@ -61,7 +61,7 @@ namespace Barotrauma.Items.Components foreach (XElement subElement in element.Elements()) { if (!subElement.Name.ToString().Equals("attack", StringComparison.OrdinalIgnoreCase)) { continue; } - Attack = new Attack(subElement, item.Name + ", MeleeWeapon"); + Attack = new Attack(subElement, item.Name + ", MeleeWeapon", item); Attack.DamageRange = item.body == null ? 10.0f : ConvertUnits.ToDisplayUnits(item.body.GetMaxExtent()); } item.IsShootable = true; @@ -95,7 +95,7 @@ namespace Barotrauma.Items.Components if (hitPos < MathHelper.PiOver4) { return false; } ActivateNearbySleepingCharacters(); - reloadTimer = reload; + reloadTimer = reload / (1 + character.GetStatValue(StatTypes.MeleeAttackSpeed)); item.body.FarseerBody.CollisionCategories = Physics.CollisionProjectile; item.body.FarseerBody.CollidesWith = Physics.CollisionCharacter | Physics.CollisionWall; diff --git a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Holdable/RangedWeapon.cs b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Holdable/RangedWeapon.cs index 8a73e00a7..d628c5d40 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Holdable/RangedWeapon.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Holdable/RangedWeapon.cs @@ -5,6 +5,7 @@ using FarseerPhysics.Dynamics; using Microsoft.Xna.Framework; using System; using System.Collections.Generic; +using System.Diagnostics; using System.Linq; using System.Xml.Linq; @@ -52,6 +53,21 @@ namespace Barotrauma.Items.Components set; } + [Serialize(0f, true, description: "The time required for a charge-type turret to charge up before able to fire.")] + public float MaxChargeTime + { + get; + private set; + } + + private enum ChargingState + { + Inactive, + WindingUp, + WindingDown, + } + private ChargingState currentChargingState; + public Vector2 TransformedBarrelPos { get @@ -62,7 +78,10 @@ namespace Barotrauma.Items.Components return Vector2.Transform(flippedPos, bodyTransform); } } - + + private float currentChargeTime; + private bool tryingToCharge; + public RangedWeapon(Item item, XElement element) : base(item, element) { @@ -88,10 +107,41 @@ namespace Barotrauma.Items.Components if (ReloadTimer < 0.0f) { ReloadTimer = 0.0f; - IsActive = false; + // was this an optimization or related to something else? currently disabled for charge-type weapons + //IsActive = false; + if (MaxChargeTime == 0.0f) + { + IsActive = false; + return; + } } + + float previousChargeTime = currentChargeTime; + + float chargeDeltaTime = tryingToCharge ? deltaTime : -deltaTime; + currentChargeTime = Math.Clamp(currentChargeTime + chargeDeltaTime, 0f, MaxChargeTime); + + tryingToCharge = false; + + if (currentChargeTime == 0f) + { + currentChargingState = ChargingState.Inactive; + } + else if (currentChargeTime < previousChargeTime) + { + currentChargingState = ChargingState.WindingDown; + } + else + { + // if we are charging up or at maxed charge, remain winding up + currentChargingState = ChargingState.WindingUp; + } + + UpdateProjSpecific(deltaTime); } + partial void UpdateProjSpecific(float deltaTime); + private float GetSpread(Character user) { float degreeOfFailure = 1.0f - DegreeOfSuccess(user); @@ -102,11 +152,16 @@ namespace Barotrauma.Items.Components private readonly List limbBodies = new List(); public override bool Use(float deltaTime, Character character = null) { + tryingToCharge = true; if (character == null || character.Removed) { return false; } if ((item.RequireAimToUse && !character.IsKeyDown(InputType.Aim)) || ReloadTimer > 0.0f) { return false; } + if (currentChargeTime < MaxChargeTime) { return false; } IsActive = true; - ReloadTimer = reload; + ReloadTimer = reload / (1 + character.GetStatValue(StatTypes.RangedAttackSpeed)); + currentChargeTime = 0f; + + character.CheckTalents(AbilityEffectType.OnUseRangedWeapon, item); if (item.AiTarget != null) { diff --git a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/ItemComponent.cs b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/ItemComponent.cs index 22f334166..90fd92739 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/ItemComponent.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/ItemComponent.cs @@ -711,7 +711,27 @@ namespace Barotrauma.Items.Components bool CheckItems(RelatedItem relatedItem, IEnumerable itemList) { - bool Predicate(Item it) => it != null && it.Condition > 0.0f && relatedItem.MatchesItem(it); + bool Predicate(Item it) + { + if (it == null || it.Condition <= 0.0f || !relatedItem.MatchesItem(it)) { return false; } + if (item.Submarine != null) + { + var idCard = it.GetComponent(); + if (idCard != null) + { + //id cards don't work in enemy subs (except on items that only require the default "idcard" tag) + if (idCard.TeamID != CharacterTeamType.None && idCard.TeamID != item.Submarine.TeamID && relatedItem.Identifiers.Any(id => id != "idcard")) + { + return false; + } + else if (idCard.SubmarineSpecificID != 0 && item.Submarine.SubmarineSpecificIDTag != idCard.SubmarineSpecificID) + { + return false; + } + } + } + return true; + }; bool shouldBreak = false; bool inEditor = false; #if CLIENT diff --git a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/ItemContainer.cs b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/ItemContainer.cs index 5502221ae..336a5b183 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/ItemContainer.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/ItemContainer.cs @@ -140,6 +140,20 @@ namespace Barotrauma.Items.Components set; } + [Serialize(false, false, description: "Should the items be injected into the user.")] + public bool AutoInject + { + get; + set; + } + + [Serialize(0.5f, false, description: "The rotation in which the contained sprites are drawn (in degrees).")] + public float AutoInjectThreshold + { + get; + set; + } + [Serialize(false, false)] public bool RemoveContainedItemsOnDeconstruct { get; set; } @@ -237,9 +251,23 @@ namespace Barotrauma.Items.Components SpawnAlwaysContainedItems(); } - if (item.ParentInventory is CharacterInventory) + if (item.ParentInventory is CharacterInventory ownerInventory) { item.SetContainedItemPositions(); + + if (AutoInject) + { + if (ownerInventory?.Owner is Character ownerCharacter && + ownerCharacter.HealthPercentage / 100f <= AutoInjectThreshold && + ownerCharacter.HasEquippedItem(item)) + { + foreach (Item item in Inventory.AllItemsMod) + { + item.ApplyStatusEffects(ActionType.OnUse, 1.0f, ownerCharacter); + } + } + } + } else if (item.body != null && item.body.Enabled && @@ -256,6 +284,7 @@ namespace Barotrauma.Items.Components foreach (var activeContainedItem in activeContainedItems) { Item contained = activeContainedItem.Item; + if (activeContainedItem.ExcludeBroken && contained.Condition <= 0.0f) { continue; } StatusEffect effect = activeContainedItem.StatusEffect; @@ -299,6 +328,8 @@ namespace Barotrauma.Items.Components } } } + character.CheckTalents(AbilityEffectType.OnOpenItemContainer, item); + return base.Select(character); } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/Engine.cs b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/Engine.cs index 0e9457394..d766f09fa 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/Engine.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/Engine.cs @@ -122,6 +122,12 @@ namespace Barotrauma.Items.Components float voltageFactor = MinVoltage <= 0.0f ? 1.0f : Math.Min(Voltage, 1.0f); Vector2 currForce = new Vector2(force * maxForce * forceMultiplier * voltageFactor, 0.0f); + + if (item.GetComponent()?.IsTinkering ?? false) + { + currForce *= 2.5f; + } + //less effective when in a bad condition currForce *= MathHelper.Lerp(0.5f, 2.0f, item.Condition / item.MaxCondition); if (item.Submarine.FlippedX) { currForce *= -1; } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/Fabricator.cs b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/Fabricator.cs index ba0fd4715..8d84d9d26 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/Fabricator.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/Fabricator.cs @@ -4,8 +4,8 @@ using System; using System.Collections.Generic; using System.Globalization; using System.Linq; -using System.Security.Cryptography; using System.Xml.Linq; +using Barotrauma.Abilities; namespace Barotrauma.Items.Components { @@ -24,6 +24,12 @@ namespace Barotrauma.Items.Components private Character user; + public float FabricationSpeedMultiplier + { + get; + set; + } + private ItemContainer inputContainer, outputContainer; [Serialize(1.0f, true)] @@ -240,8 +246,10 @@ namespace Barotrauma.Items.Components public override void Update(float deltaTime, Camera cam) { - if (fabricatedItem == null || !CanBeFabricated(fabricatedItem)) + var availableIngredients = GetAvailableIngredients(); + if (fabricatedItem == null || !CanBeFabricated(fabricatedItem, availableIngredients, user)) { + FabricationSpeedMultiplier = 1f; CancelFabricating(); return; } @@ -278,38 +286,56 @@ namespace Barotrauma.Items.Components if (powerConsumption <= 0) { Voltage = 1.0f; } - timeUntilReady -= deltaTime * Math.Min(Voltage, 1.0f); + timeUntilReady -= deltaTime * Math.Min(Voltage, 1.0f) * FabricationSpeedMultiplier; + FabricationSpeedMultiplier = 1f; + UpdateRequiredTimeProjSpecific(); if (timeUntilReady > 0.0f) { return; } if (GameMain.NetworkMember == null || GameMain.NetworkMember.IsServer) { - var availableIngredients = GetAvailableIngredients(); - foreach (FabricationRecipe.RequiredItem ingredient in fabricatedItem.RequiredItems) - { - for (int i = 0; i < ingredient.Amount; i++) + fabricatedItem.RequiredItems.ForEach(requiredItem => { + for (int usedPrefabsAmount = 0; usedPrefabsAmount < requiredItem.Amount; usedPrefabsAmount++) { - var availableItem = availableIngredients.FirstOrDefault(it => - it != null && ingredient.ItemPrefabs.Contains(it.Prefab) && - it.ConditionPercentage >= ingredient.MinCondition * 100.0f && - it.ConditionPercentage <= ingredient.MaxCondition * 100.0f); - if (availableItem == null) { continue; } - - if (ingredient.UseCondition && availableItem.ConditionPercentage - ingredient.MinCondition * 100 > 0.0f) //Leave it behind with reduced condition if it has enough to stay above 0 + foreach (ItemPrefab requiredPrefab in requiredItem.ItemPrefabs) { - availableItem.Condition -= availableItem.Prefab.Health * ingredient.MinCondition; - continue; + if (!availableIngredients.ContainsKey(requiredPrefab.Identifier)) { continue; } + + var availablePrefabs = availableIngredients[requiredPrefab.Identifier]; + var availablePrefab = availablePrefabs.FirstOrDefault(potentialPrefab => + { + return potentialPrefab.ConditionPercentage >= requiredItem.MinCondition * 100.0f && + potentialPrefab.ConditionPercentage <= requiredItem.MaxCondition * 100.0f; + }); + + if (availablePrefab == null) { continue; } + + if (requiredItem.UseCondition && availablePrefab.ConditionPercentage - requiredItem.MinCondition * 100 > 0.0f) //Leave it behind with reduced condition if it has enough to stay above 0 + { + availablePrefab.Condition -= availablePrefab.Prefab.Health * requiredItem.MinCondition; + continue; + } + + availablePrefabs.Remove(availablePrefab); + Entity.Spawner.AddToRemoveQueue(availablePrefab); + inputContainer.Inventory.RemoveItem(availablePrefab); } - availableIngredients.Remove(availableItem); - Entity.Spawner.AddToRemoveQueue(availableItem); - inputContainer.Inventory.RemoveItem(availableItem); } - } + }); Character tempUser = user; + int amountFittingContainer = outputContainer.Inventory.HowManyCanBePut(fabricatedItem.TargetItem, fabricatedItem.OutCondition * fabricatedItem.TargetItem.Health); - for (int i = 0; i < fabricatedItem.Amount; i++) + var itemsCreated = new AbilityValue(fabricatedItem.Amount); + foreach (Character character in Character.CharacterList.Where(c => c.TeamID == user.TeamID)) + { + character.CheckTalents(AbilityEffectType.OnAllyItemFabricatedAmount, (fabricatedItem.TargetItem, itemsCreated)); + } + + tempUser.CheckTalents(AbilityEffectType.OnItemFabricatedAmount, (fabricatedItem.TargetItem, itemsCreated)); + + for (int i = 0; i < (int)itemsCreated.Value; i++) { if (i < amountFittingContainer) { @@ -339,9 +365,13 @@ namespace Barotrauma.Items.Components foreach (Skill skill in fabricatedItem.RequiredSkills) { float userSkill = user.GetSkillLevel(skill.Identifier); + float addedSkill = skill.Level * SkillSettings.Current.SkillIncreasePerFabricatorRequiredSkill / Math.Max(userSkill, 1.0f); + var addedSkillValue = new AbilityValue(0f); + user.CheckTalents(AbilityEffectType.OnItemFabricationSkillGain, addedSkillValue); + user.Info.IncreaseSkillLevel( skill.Identifier, - skill.Level * SkillSettings.Current.SkillIncreasePerFabricatorRequiredSkill / Math.Max(userSkill, 1.0f), + addedSkill + addedSkillValue.Value, user.Position + Vector2.UnitY * 150.0f); } } @@ -365,24 +395,36 @@ namespace Barotrauma.Items.Components partial void UpdateRequiredTimeProjSpecific(); - private bool CanBeFabricated(FabricationRecipe fabricableItem) + private bool CanBeFabricated(FabricationRecipe fabricableItem, Dictionary> availableIngredients, Character character) { if (fabricableItem == null) { return false; } - List availableIngredients = GetAvailableIngredients(); - return CanBeFabricated(fabricableItem, availableIngredients); - } + if (fabricableItem.RequiresRecipe && (character == null || !character.HasRecipeForItem(fabricableItem.TargetItem.Identifier))) { return false; } - private bool CanBeFabricated(FabricationRecipe fabricableItem, IEnumerable availableIngredients) - { - if (fabricableItem == null) { return false; } - foreach (FabricationRecipe.RequiredItem requiredItem in fabricableItem.RequiredItems) + return fabricableItem.RequiredItems.All(requiredItem => { - if (availableIngredients.Count(it => IsItemValidIngredient(it, requiredItem)) < requiredItem.Amount) + int availablePrefabsAmount = 0; + foreach (ItemPrefab requiredPrefab in requiredItem.ItemPrefabs) { - return false; + if (!availableIngredients.ContainsKey(requiredPrefab.Identifier)) { continue; } + + var availablePrefabs = availableIngredients[requiredPrefab.Identifier]; + foreach (Item availablePrefab in availablePrefabs) + { + if (availablePrefab.Condition / availablePrefab.Prefab.Health >= requiredItem.MinCondition && + availablePrefab.Condition / availablePrefab.Prefab.Health <= requiredItem.MaxCondition) + { + availablePrefabsAmount++; + } + + if (availablePrefabsAmount >= requiredItem.Amount) + { + return true; + } + } } - } - return true; + + return false; + }); } private float GetRequiredTime(FabricationRecipe fabricableItem, Character user) @@ -416,7 +458,7 @@ namespace Barotrauma.Items.Components /// Get a list of all items available in the input container and linked containers /// /// - private List GetAvailableIngredients() + private Dictionary> GetAvailableIngredients() { List availableIngredients = new List(); availableIngredients.AddRange(inputContainer.Inventory.AllItems); @@ -448,7 +490,19 @@ namespace Barotrauma.Items.Components } #endif - return availableIngredients; + Dictionary> ingredientsDictionary = new Dictionary>(); + for (int i = 0; i < availableIngredients.Count; i++) + { + var itemIdentifier = availableIngredients[i].prefab.Identifier; + if (!ingredientsDictionary.ContainsKey(itemIdentifier)) + { + ingredientsDictionary[itemIdentifier] = new List(availableIngredients.Count); + } + + ingredientsDictionary[itemIdentifier].Add(availableIngredients[i]); + } + + return ingredientsDictionary; } /// @@ -463,40 +517,41 @@ namespace Barotrauma.Items.Components bool isClient = GameMain.NetworkMember != null && GameMain.NetworkMember.IsClient; var availableIngredients = GetAvailableIngredients(); - foreach (var requiredItem in targetItem.RequiredItems) - { + targetItem.RequiredItems.ForEach(requiredItem => { for (int i = 0; i < requiredItem.Amount; i++) { - var matchingItem = availableIngredients.Find(it => !usedItems.Contains(it) && IsItemValidIngredient(it, requiredItem)); - if (matchingItem == null) { continue; } + foreach (ItemPrefab requiredPrefab in requiredItem.ItemPrefabs) + { + if (!availableIngredients.ContainsKey(requiredPrefab.Identifier)) { continue; } - availableIngredients.Remove(matchingItem); - - if (matchingItem.ParentInventory == inputContainer.Inventory) - { - //already in input container, all good - usedItems.Add(matchingItem); - } - else //in another inventory, we need to move the item - { - if (!inputContainer.Inventory.CanBePut(matchingItem)) + var availablePrefabs = availableIngredients[requiredPrefab.Identifier]; + var availablePrefab = availablePrefabs.FirstOrDefault(potentialPrefab => { - var unneededItem = inputContainer.Inventory.AllItems.FirstOrDefault(it => !usedItems.Contains(it)); - unneededItem?.Drop(null, createNetworkEvent: !isClient); - } - inputContainer.Inventory.TryPutItem(matchingItem, user: null, createNetworkEvent: !isClient); - } - } - } - } + return !usedItems.Contains(potentialPrefab) && + potentialPrefab.ConditionPercentage >= requiredItem.MinCondition * 100.0f && + potentialPrefab.ConditionPercentage <= requiredItem.MaxCondition * 100.0f; + }); + if (availablePrefab == null) { continue; } - private bool IsItemValidIngredient(Item item, FabricationRecipe.RequiredItem requiredItem) - { - return - item != null && - requiredItem.ItemPrefabs.Contains(item.prefab) && - item.Condition / item.Prefab.Health >= requiredItem.MinCondition && - item.Condition / item.Prefab.Health <= requiredItem.MaxCondition; + availablePrefabs.Remove(availablePrefab); + + if (availablePrefab.ParentInventory == inputContainer.Inventory) + { + //already in input container, all good + usedItems.Add(availablePrefab); + } + else //in another inventory, we need to move the item + { + if (!inputContainer.Inventory.CanBePut(availablePrefab)) + { + var unneededItem = inputContainer.Inventory.AllItems.FirstOrDefault(it => !usedItems.Contains(it)); + unneededItem?.Drop(null, createNetworkEvent: !isClient); + } + inputContainer.Inventory.TryPutItem(availablePrefab, user: null, createNetworkEvent: !isClient); + } + } + } + }); } public override XElement Save(XElement parentElement) diff --git a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/MiniMap.cs b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/MiniMap.cs index 8ffa96100..38d3c40fa 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/MiniMap.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/MiniMap.cs @@ -7,10 +7,15 @@ namespace Barotrauma.Items.Components { partial class MiniMap : Powered { - class HullData + internal class HullData { - public float? Oxygen; - public float? Water; + public float? HullOxygenAmount, + HullWaterAmount; + + public float? ReceivedOxygenAmount, + ReceivedWaterAmount; + + public readonly HashSet Cards = new HashSet(); public bool Distort; public float DistortionTimer; @@ -45,17 +50,45 @@ namespace Barotrauma.Items.Components set; } + [Editable, Serialize(true, true, description: "Enable hull status mode.")] + public bool EnableHullStatus + { + get; + set; + } + + [Editable, Serialize(true, true, description: "Enable electrical view mode.")] + public bool EnableElectricalView + { + get; + set; + } + + [Editable, Serialize(true, true, description: "Enable hull condition mode.")] + public bool EnableHullCondition + { + get; + set; + } + + [Editable, Serialize(true, true, description: "Enable item finder mode.")] + public bool EnableItemFinder + { + get; + set; + } + public MiniMap(Item item, XElement element) : base(item, element) { IsActive = true; hullDatas = new Dictionary(); - InitProjSpecific(element); + InitProjSpecific(); } - partial void InitProjSpecific(XElement element); + partial void InitProjSpecific(); - public override void Update(float deltaTime, Camera cam) + public override void Update(float deltaTime, Camera cam) { //periodically reset all hull data //(so that outdated hull info won't be shown if detectors stop sending signals) @@ -65,13 +98,29 @@ namespace Barotrauma.Items.Components { if (!hullData.Distort) { - hullData.Oxygen = null; - hullData.Water = null; + hullData.ReceivedOxygenAmount = null; + hullData.ReceivedWaterAmount = null; } } resetDataTime = DateTime.Now + new TimeSpan(0, 0, 1); } +#if CLIENT + if (cardRefreshTimer > cardRefreshDelay) + { + if (item.Submarine is { } sub) + { + UpdateIDCards(sub); + } + + cardRefreshTimer = 0; + } + else + { + cardRefreshTimer += deltaTime; + } +#endif + currPowerConsumption = powerConsumption; currPowerConsumption *= MathHelper.Lerp(1.5f, 1.0f, item.Condition / item.MaxCondition); @@ -81,7 +130,7 @@ namespace Barotrauma.Items.Components ApplyStatusEffects(ActionType.OnActive, deltaTime, null); } } - + public override bool Pick(Character picker) { return picker != null; @@ -107,11 +156,11 @@ namespace Barotrauma.Items.Components //cheating a bit because water detectors don't actually send the water level if (source.GetComponent() == null) { - hullData.Water = Rand.Range(0.0f, 1.0f); + hullData.ReceivedWaterAmount = Rand.Range(0.0f, 1.0f); } else { - hullData.Water = Math.Min(sourceHull.WaterVolume / sourceHull.Volume, 1.0f); + hullData.ReceivedWaterAmount = Math.Min(sourceHull.WaterVolume / sourceHull.Volume, 1.0f); } break; case "oxygen_data_in": @@ -122,7 +171,7 @@ namespace Barotrauma.Items.Components oxy = Rand.Range(0.0f, 100.0f); } - hullData.Oxygen = oxy; + hullData.ReceivedOxygenAmount = oxy; break; } } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/Pump.cs b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/Pump.cs index 073ae51cf..4231489a5 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/Pump.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/Pump.cs @@ -105,6 +105,12 @@ namespace Barotrauma.Items.Components float powerFactor = Math.Min(currPowerConsumption <= 0.0f || MinVoltage <= 0.0f ? 1.0f : Voltage, 1.0f); currFlow = flowPercentage / 100.0f * maxFlow * powerFactor; + + if (item.GetComponent()?.IsTinkering ?? false) + { + currFlow *= 2.5f; + } + //less effective when in a bad condition currFlow *= MathHelper.Lerp(0.5f, 1.0f, item.Condition / item.MaxCondition); diff --git a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/Steering.cs b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/Steering.cs index 1d0ad14bb..543e9bc1b 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/Steering.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Machines/Steering.cs @@ -1,4 +1,4 @@ -using Barotrauma.Networking; +using Barotrauma.Networking; using FarseerPhysics; using Microsoft.Xna.Framework; using System; @@ -364,6 +364,19 @@ namespace Barotrauma.Items.Components float velY = MathHelper.Lerp((neutralBallastLevel * 100 - 50) * 2, -100 * Math.Sign(targetVelocity.Y), Math.Abs(targetVelocity.Y) / 100.0f); item.SendSignal(new Signal(velY.ToString(CultureInfo.InvariantCulture), sender: user), "velocity_y_out"); + // converts the controlled sub's velocity to km/h and sends it. + // TODO: add current_velocity_x and current_velocity_y pins on the navigation terminals and shuttle terminals + // TODO: increase the size of the connection panels of both navigation terminals + + if (controlledSub is { } sub) + { + item.SendSignal(new Signal((ConvertUnits.ToDisplayUnits(sub.Velocity.X * Physics.DisplayToRealWorldRatio) * 3.6f).ToString("0.0000", CultureInfo.InvariantCulture), sender: user), "current_velocity_x"); + item.SendSignal(new Signal((ConvertUnits.ToDisplayUnits(sub.Velocity.Y * Physics.DisplayToRealWorldRatio) * -3.6f).ToString("0.0000", CultureInfo.InvariantCulture), sender: user), "current_velocity_y"); + + item.SendSignal(new Signal(sub.WorldPosition.X.ToString("0.0000", CultureInfo.InvariantCulture), sender: user), "current_position_x"); + item.SendSignal(new Signal(sub.RealWorldDepth.ToString("0.0000", CultureInfo.InvariantCulture), sender: user), "current_depth"); + } + // if our tactical AI pilot has left, revert back to maintaining position if (navigateTactically && (user == null || user.SelectedConstruction != item)) { diff --git a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Power/PowerTransfer.cs b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Power/PowerTransfer.cs index 1828f7cee..a587d47ff 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Power/PowerTransfer.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Power/PowerTransfer.cs @@ -370,5 +370,12 @@ namespace Barotrauma.Items.Components } } } + + protected override void RemoveComponentSpecific() + { + base.RemoveComponentSpecific(); + connectedRecipients?.Clear(); + connectionDirty?.Clear(); + } } } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Projectile.cs b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Projectile.cs index 1134861ec..6af8ff629 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Projectile.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Projectile.cs @@ -201,7 +201,7 @@ namespace Barotrauma.Items.Components foreach (XElement subElement in element.Elements()) { if (!subElement.Name.ToString().Equals("attack", StringComparison.OrdinalIgnoreCase)) { continue; } - Attack = new Attack(subElement, item.Name + ", Projectile"); + Attack = new Attack(subElement, item.Name + ", Projectile", item); } InitProjSpecific(element); } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Repairable.cs b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Repairable.cs index 26a50ebf7..2b474213b 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Repairable.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Repairable.cs @@ -103,18 +103,22 @@ namespace Barotrauma.Items.Components } } + public bool IsTinkering { get; private set; } = false; + public float RepairIconThreshold { get { return RepairThreshold / 2; } } public Character CurrentFixer { get; private set; } + private Item currentRepairItem; public enum FixActions : int { None = 0, Repair = 1, - Sabotage = 2 + Sabotage = 2, + Tinker = 3, } private FixActions currentFixerAction = FixActions.None; @@ -161,12 +165,14 @@ namespace Barotrauma.Items.Components /// /// Check if the character manages to succesfully repair the item /// - public bool CheckCharacterSuccess(Character character) + public bool CheckCharacterSuccess(Character character, Item bestRepairItem) { if (character == null) { return false; } if (statusEffectLists == null || statusEffectLists.None(s => s.Key == ActionType.OnFailure)) { return true; } + if (bestRepairItem != null && bestRepairItem.Prefab.CannotRepairFail) { return true; } + // unpowered (electrical) items can be repaired without a risk of electrical shock if (requiredSkills.Any(s => s != null && s.Identifier.Equals("electrical", StringComparison.OrdinalIgnoreCase)) && item.GetComponent() is Powered powered && powered.Voltage < 0.1f) { return true; } @@ -201,10 +207,11 @@ namespace Barotrauma.Items.Components } else { + Item bestRepairItem = GetBestRepairItem(character); #if SERVER if (CurrentFixer != character || currentFixerAction != action) { - if (!CheckCharacterSuccess(character)) + if (!CheckCharacterSuccess(character, bestRepairItem)) { GameServer.Log($"{GameServer.CharacterLogName(character)} failed to {(action == FixActions.Sabotage ? "sabotage" : "repair")} {item.Name}", ServerLog.MessageType.ItemInteraction); GameMain.Server?.CreateEntityEvent(item, new object[] { NetEntityEvent.Type.ApplyStatusEffect, ActionType.OnFailure, this, character.ID }); @@ -215,11 +222,18 @@ namespace Barotrauma.Items.Components item.CreateServerEvent(this); } #else - if (GameMain.Client == null && (CurrentFixer != character || currentFixerAction != action) && !CheckCharacterSuccess(character)) { return false; } + if (GameMain.Client == null && (CurrentFixer != character || currentFixerAction != action) && !CheckCharacterSuccess(character, bestRepairItem)) { return false; } #endif CurrentFixer = character; + currentRepairItem = bestRepairItem; CurrentFixerAction = action; return true; + + Item GetBestRepairItem(Character character) + { + return character.HeldItems.OrderByDescending(i => i.Prefab.AddedRepairSpeedMultiplier).FirstOrDefault(); + } + } } @@ -233,8 +247,16 @@ namespace Barotrauma.Items.Components item.CreateServerEvent(this); } #endif + if (currentRepairItem != null) + { + foreach (var ic in currentRepairItem.GetComponents()) + { + ic.ApplyStatusEffects(ActionType.OnSuccess, 1.0f, character); + } + } CurrentFixer.AnimController.Anim = AnimController.Animation.None; CurrentFixer = null; + currentRepairItem = null; currentFixerAction = FixActions.None; #if CLIENT repairSoundChannel?.FadeOutAndDispose(); @@ -266,7 +288,8 @@ namespace Barotrauma.Items.Components public override void Update(float deltaTime, Camera cam) { UpdateProjSpecific(deltaTime); - + IsTinkering = false; + if (CurrentFixer == null) { if (deteriorateAlwaysResetTimer > 0.0f) @@ -314,6 +337,20 @@ namespace Barotrauma.Items.Components return; } + if (currentFixerAction == FixActions.Tinker) + { + // this is a bit code rotty to interject it here, should be less reliant on returning + if (!CanTinker(CurrentFixer)) + { + StopRepairing(CurrentFixer); + } + else + { + IsTinkering = true; + } + return; + } + float successFactor = requiredSkills.Count == 0 ? 1.0f : RepairDegreeOfSuccess(CurrentFixer, requiredSkills); //item must have been below the repair threshold for the player to get an achievement or XP for repairing it @@ -327,6 +364,8 @@ namespace Barotrauma.Items.Components } float fixDuration = MathHelper.Lerp(FixDurationLowSkill, FixDurationHighSkill, successFactor); + fixDuration /= 1 + CurrentFixer.GetStatValue(StatTypes.RepairSpeed) + currentRepairItem?.Prefab.AddedRepairSpeedMultiplier ?? 0f; + if (currentFixerAction == FixActions.Repair) { if (fixDuration <= 0.0f) @@ -354,6 +393,7 @@ namespace Barotrauma.Items.Components CurrentFixer.Position + Vector2.UnitY * 100.0f); } SteamAchievementManager.OnItemRepaired(item, CurrentFixer); + CurrentFixer.CheckTalents(AbilityEffectType.OnRepairComplete); } deteriorationTimer = Rand.Range(MinDeteriorationDelay, MaxDeteriorationDelay); wasBroken = false; @@ -399,6 +439,12 @@ namespace Barotrauma.Items.Components } } + private bool CanTinker(Character character) + { + if (!character.HasAbilityFlag(AbilityFlags.CanTinker)) { return false; } + return true; + } + partial void UpdateProjSpecific(float deltaTime); public void AdjustPowerConsumption(ref float powerConsumption) diff --git a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Signal/ConnectionPanel.cs b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Signal/ConnectionPanel.cs index 38c56e427..e7648c9ac 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Signal/ConnectionPanel.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Signal/ConnectionPanel.cs @@ -350,6 +350,7 @@ namespace Barotrauma.Items.Components } } } + Connections.Clear(); #if CLIENT rewireSoundChannel?.FadeOutAndDispose(); diff --git a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Signal/OscillatorComponent.cs b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Signal/OscillatorComponent.cs index 309bfee73..6d92474fe 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Signal/OscillatorComponent.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Signal/OscillatorComponent.cs @@ -12,8 +12,10 @@ namespace Barotrauma.Items.Components public enum WaveType { Pulse, + Sawtooth, Sine, Square, + Triangle, } private float frequency; @@ -22,8 +24,11 @@ namespace Barotrauma.Items.Components [InGameEditable, Serialize(WaveType.Pulse, true, description: "What kind of a signal the item outputs." + " Pulse: periodically sends out a signal of 1." + + " Sawtooth: sends out a periodic wave that increases linearly from 0 to 1." + " Sine: sends out a sine wave oscillating between -1 and 1." + - " Square: sends out a signal that alternates between 0 and 1.", alwaysUseInstanceValues: true)] + " Square: sends out a signal that alternates between 0 and 1." + + " Triangle: sends out a wave that alternates between increasing linearly from -1 to 1 and decreasing from 1 to -1.", + alwaysUseInstanceValues: true)] public WaveType OutputType { get; @@ -63,6 +68,10 @@ namespace Barotrauma.Items.Components phase -= pulseInterval; } break; + case WaveType.Sawtooth: + phase = (phase + deltaTime * frequency) % 1.0f; + item.SendSignal(phase.ToString(CultureInfo.InvariantCulture), "signal_out"); + break; case WaveType.Square: phase = (phase + deltaTime * frequency) % 1.0f; item.SendSignal(phase < 0.5f ? "0" : "1", "signal_out"); @@ -71,6 +80,11 @@ namespace Barotrauma.Items.Components phase = (phase + deltaTime * frequency) % 1.0f; item.SendSignal(Math.Sin(phase * MathHelper.TwoPi).ToString(CultureInfo.InvariantCulture), "signal_out"); break; + case WaveType.Triangle: + phase = (phase + deltaTime * frequency) % 1.0f; + float output = 4.0f * MathF.Abs(MathUtils.PositiveModulo(phase - 0.25f, 1.0f) - 0.5f) - 1.0f; + item.SendSignal(output.ToString(CultureInfo.InvariantCulture), "signal_out"); + break; } } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Signal/RegExFindComponent.cs b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Signal/RegExFindComponent.cs index b2f512ca2..ed67a0e46 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Signal/RegExFindComponent.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Signal/RegExFindComponent.cs @@ -85,14 +85,15 @@ namespace Barotrauma.Items.Components public override void Update(float deltaTime, Camera cam) { - if (string.IsNullOrWhiteSpace(expression) || regex == null) return; + if (string.IsNullOrWhiteSpace(expression) || regex == null) { return; } + if (!ContinuousOutput && nonContinuousOutputSent) { return; } if (receivedSignal != previousReceivedSignal && receivedSignal != null) { try { Match match = regex.Match(receivedSignal); - previousResult = match.Success; + previousResult = match.Success; previousGroups = UseCaptureGroup && previousResult ? match.Groups : null; previousReceivedSignal = receivedSignal; @@ -133,7 +134,7 @@ namespace Barotrauma.Items.Components { if (!string.IsNullOrEmpty(signalOut)) { item.SendSignal(signalOut, "signal_out"); } } - else if (!nonContinuousOutputSent) + else { if (!string.IsNullOrEmpty(signalOut)) { item.SendSignal(signalOut, "signal_out"); } nonContinuousOutputSent = true; diff --git a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Signal/Terminal.cs b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Signal/Terminal.cs index fb93543ab..540284013 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Signal/Terminal.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Signal/Terminal.cs @@ -45,6 +45,9 @@ namespace Barotrauma.Items.Components } } + [Editable, Serialize(false, true, description: "The terminal will use a monospace font if this box is ticked.", alwaysUseInstanceValues: true)] + public bool UseMonospaceFont { get; set; } + private string OutputValue { get; set; } public Terminal(Item item, XElement element) diff --git a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Signal/WaterDetector.cs b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Signal/WaterDetector.cs index 7c6c61021..763800065 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Signal/WaterDetector.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Signal/WaterDetector.cs @@ -100,9 +100,11 @@ namespace Barotrauma.Items.Components if (item.CurrentHull != null) { - int waterPercentage = MathHelper.Clamp((int)Math.Round(item.CurrentHull.WaterPercentage), 0, 100); + int waterPercentage = MathHelper.Clamp((int)Math.Ceiling(item.CurrentHull.WaterPercentage), 0, 100); item.SendSignal(waterPercentage.ToString(), "water_%"); } + string highPressureOut = (item.CurrentHull == null || item.CurrentHull.LethalPressure > 5.0f) ? "1" : "0"; + item.SendSignal(highPressureOut, "high_pressure"); } } } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Turret.cs b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Turret.cs index 3ea88ae11..0bed7d299 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Turret.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Turret.cs @@ -544,6 +544,7 @@ namespace Barotrauma.Items.Components Projectile launchedProjectile = null; bool loaderBroken = false; + bool isTinkering = false; for (int i = 0; i < ProjectileCount; i++) { var projectiles = GetLoadedProjectiles(); @@ -575,6 +576,7 @@ namespace Barotrauma.Items.Components projectiles = GetLoadedProjectiles(); if (projectiles.Any()) { break; } } + } } if (projectiles.Count == 0 && !LaunchWithoutProjectile) @@ -601,10 +603,25 @@ namespace Barotrauma.Items.Components return false; } failedLaunchAttempts = 0; + + foreach (MapEntity e in item.linkedTo) + { + if (!(e is Item linkedItem)) { continue; } + if (!item.prefab.IsLinkAllowed(e.prefab)) { continue; } + if (linkedItem.GetComponent() is Repairable repairable && linkedItem.HasTag("turretammosource")) + { + isTinkering = repairable.IsTinkering; + } + } + if (!ignorePower) { var batteries = item.GetConnectedComponents(); float neededPower = powerConsumption; + if (isTinkering) + { + neededPower /= 1.25f; + } while (neededPower > 0.0001f && batteries.Count > 0) { batteries.RemoveAll(b => b.Charge <= 0.0001f || b.MaxOutPut <= 0.0001f); @@ -622,7 +639,8 @@ namespace Barotrauma.Items.Components } launchedProjectile = projectiles.FirstOrDefault(); - if (launchedProjectile?.Item.Container != null) + Item container = launchedProjectile?.Item.Container; + if (container != null) { var repairable = launchedProjectile?.Item.Container.GetComponent(); if (repairable != null) @@ -637,18 +655,22 @@ namespace Barotrauma.Items.Components { foreach (Projectile projectile in projectiles) { - Launch(projectile.Item, character); + Launch(projectile.Item, character, isTinkering: isTinkering); } } else { - Launch(null, character); + Launch(null, character, isTinkering: isTinkering); } if (item.AiTarget != null) { item.AiTarget.SoundRange = item.AiTarget.MaxSoundRange; // Turrets also have a light component, which handles the sight range. } + if (container != null) + { + ShiftItemsInProjectileContainer(container.GetComponent()); + } } } @@ -672,9 +694,18 @@ namespace Barotrauma.Items.Components return true; } - private void Launch(Item projectile, Character user = null, float? launchRotation = null) + private void Launch(Item projectile, Character user = null, float? launchRotation = null, bool isTinkering = false) { reload = reloadTime; + if (isTinkering) + { + reload /= 1.25f; + } + + if (user != null) + { + reload /= 1 + user.GetStatValue(StatTypes.TurretAttackSpeed); + } if (projectile != null) { @@ -698,6 +729,10 @@ namespace Barotrauma.Items.Components if (projectileComponent != null) { projectileComponent.Attacker = user; + if (isTinkering) + { + projectileComponent.Attack.DamageMultiplier *= 1.25f; + } projectileComponent.Use(); projectile.GetComponent()?.Attach(item, projectile); projectileComponent.User = user; @@ -725,6 +760,26 @@ namespace Barotrauma.Items.Components partial void LaunchProjSpecific(); + private void ShiftItemsInProjectileContainer(ItemContainer container) + { + if (container == null) { return; } + bool moved; + do + { + moved = false; + for (int i = 1; i < container.Capacity; i++) + { + if (container.Inventory.GetItemAt(i) is Item item1 && container.Inventory.CanBePutInSlot(item1, i - 1)) + { + if (container.Inventory.TryPutItem(item1, i - 1, allowSwapping: false, allowCombine: false, user: null, createNetworkEvent: true)) + { + moved = true; + } + } + } + } while (moved); + } + private float waitTimer; private float disorderTimer; @@ -864,57 +919,26 @@ namespace Barotrauma.Items.Components float turretAngle = -rotation; if (Math.Abs(MathUtils.GetShortestAngle(enemyAngle, turretAngle)) > 0.15f) { return; } } - Vector2 start = ConvertUnits.ToSimUnits(item.WorldPosition); Vector2 end = ConvertUnits.ToSimUnits(target.WorldPosition); + // Check that there's not other entities that shouldn't be targeted (like a friendly sub) between us and the target. + Body worldTarget = CheckLineOfSight(start, end); + bool shoot; if (target.Submarine != null) { start -= target.Submarine.SimPosition; end -= target.Submarine.SimPosition; - } - var collisionCategories = Physics.CollisionWall | Physics.CollisionCharacter | Physics.CollisionItem | Physics.CollisionLevel; - var pickedBody = Submarine.PickBody(start, end, null, collisionCategories, allowInsideFixture: true, - customPredicate: (Fixture f) => - { - if (f.UserData is Item i && i.GetComponent() != null) { return false; } - return !item.StaticFixtures.Contains(f); - }); - if (pickedBody == null) { return; } - Character targetCharacter = null; - if (pickedBody.UserData is Character c) - { - targetCharacter = c; - } - else if (pickedBody.UserData is Limb limb) - { - targetCharacter = limb.character; - } - if (targetCharacter != null) - { - if (targetCharacter.Params.Group.Equals(ai.Config.Entity, StringComparison.OrdinalIgnoreCase)) - { - // Don't shoot friendly characters - return; - } + Body transformedTarget = CheckLineOfSight(start, end); + shoot = CanShoot(transformedTarget, user: null, ai, targetSubmarines) && (worldTarget == null || CanShoot(worldTarget, user: null, ai, targetSubmarines)); } else { - if (pickedBody.UserData is ISpatialEntity e) - { - Submarine sub = e.Submarine; - if (sub == null) { return; } - if (!targetSubmarines) { return; } - if (sub == Item.Submarine) { return; } - // Don't shoot non-player submarines, i.e. wrecks or outposts. - if (!sub.Info.IsPlayer) { return; } - } - else - { - // Hit something else, probably a level wall - return; - } + shoot = CanShoot(worldTarget, user: null, ai, targetSubmarines); + } + if (shoot) + { + TryLaunch(deltaTime, ignorePower: true); } - TryLaunch(deltaTime, ignorePower: true); } public override bool AIOperate(float deltaTime, Character character, AIObjectiveOperateItem objective) @@ -1067,7 +1091,8 @@ namespace Barotrauma.Items.Components { // Ignore dead, friendly, and those that are inside the same sub if (enemy.IsDead || !enemy.Enabled || enemy.Submarine == character.Submarine) { continue; } - // Don't aim monsters that are inside a submarine. + if (enemy.Submarine != null && enemy.Submarine.TeamID == character.Submarine.TeamID) { continue; } + // Don't aim monsters that are inside any submarine. if (!enemy.IsHuman && enemy.CurrentHull != null) { continue; } if (HumanAIController.IsFriendly(character, enemy)) { continue; } float dist = Vector2.DistanceSquared(enemy.WorldPosition, item.WorldPosition); @@ -1091,26 +1116,34 @@ namespace Barotrauma.Items.Components if (closestEnemy != null) { - // Target the closest limb. Doesn't make much difference with smaller creatures, but enables the bots to shoot longer abyss creatures like the endworm. Otherwise they just target the main body = head. targetPos = closestEnemy.WorldPosition; - float closestDist = closestDistance; - foreach (Limb limb in closestEnemy.AnimController.Limbs) + //if the enemy is inside another sub, aim at the room they're in to make it less obvious that the enemy "knows" exactly where the target is + if (closestEnemy.Submarine != null && closestEnemy.CurrentHull != null && closestEnemy.Submarine != item.Submarine) { - if (limb.IsSevered) { continue; } - if (limb.Hidden) { continue; } - if (!CheckTurretAngle(limb.WorldPosition)) { continue; } - float dist = Vector2.DistanceSquared(limb.WorldPosition, item.WorldPosition); - if (dist < closestDist) - { - closestDist = dist; - targetPos = limb.WorldPosition; - } + targetPos = closestEnemy.CurrentHull.WorldPosition; } - if (closestDist > shootDistance * shootDistance) + else { - // Not close enough to shoot - closestEnemy = null; - targetPos = null; + // Target the closest limb. Doesn't make much difference with smaller creatures, but enables the bots to shoot longer abyss creatures like the endworm. Otherwise they just target the main body = head. + float closestDist = closestDistance; + foreach (Limb limb in closestEnemy.AnimController.Limbs) + { + if (limb.IsSevered) { continue; } + if (limb.Hidden) { continue; } + if (!CheckTurretAngle(limb.WorldPosition)) { continue; } + float dist = Vector2.DistanceSquared(limb.WorldPosition, item.WorldPosition); + if (dist < closestDist) + { + closestDist = dist; + targetPos = limb.WorldPosition; + } + } + if (closestDist > shootDistance * shootDistance) + { + // Not close enough to shoot + closestEnemy = null; + targetPos = null; + } } } else if (item.Submarine != null && Level.Loaded != null) @@ -1158,7 +1191,7 @@ namespace Barotrauma.Items.Components continue; } // Allow targeting farther when heading towards the spire (up to 1000 px) - dist -= MathHelper.Lerp(0, 1000, MathUtils.InverseLerp(minAngle, 1, dot)); ; + dist -= MathHelper.Lerp(0, 1000, MathUtils.InverseLerp(minAngle, 1, dot)); if (dist > closestDistance) { continue; } targetPos = closestPoint; closestDistance = dist; @@ -1222,58 +1255,25 @@ namespace Barotrauma.Items.Components if (Math.Abs(MathUtils.GetShortestAngle(enemyAngle, turretAngle)) > maxAngleError) { return false; } - Vector2 start = ConvertUnits.ToSimUnits(item.WorldPosition); - Vector2 end = ConvertUnits.ToSimUnits(targetPos.Value); - if (closestEnemy != null && closestEnemy.Submarine != null) - { - start -= closestEnemy.Submarine.SimPosition; - end -= closestEnemy.Submarine.SimPosition; - } - var collisionCategories = Physics.CollisionWall | Physics.CollisionCharacter | Physics.CollisionItem | Physics.CollisionLevel; - var pickedBody = Submarine.PickBody(start, end, null, collisionCategories, allowInsideFixture: true, - customPredicate: (Fixture f) => - { - if (f.UserData is Item i && i.GetComponent() != null) { return false; } - return !item.StaticFixtures.Contains(f); - }); - if (pickedBody == null) { return false; } - Character targetCharacter = null; - if (pickedBody.UserData is Character c) - { - targetCharacter = c; - } - else if (pickedBody.UserData is Limb limb) - { - targetCharacter = limb.character; - } - if (targetCharacter != null) - { - if (HumanAIController.IsFriendly(character, targetCharacter)) - { - // Don't shoot friendly characters - return false; - } - } - else - { - if (pickedBody.UserData is ISpatialEntity e) - { - Submarine sub = e.Submarine; - if (sub == null) { return false; } - if (sub == Item.Submarine) { return false; } - // Don't shoot non-player submarines, i.e. wrecks or outposts. - if (!sub.Info.IsPlayer) { return false; } - // Don't shoot friendly submarines. - if (sub.TeamID == Item.Submarine.TeamID) { return false; } - } - else if (!(pickedBody.UserData is Voronoi2.VoronoiCell cell && cell.IsDestructible)) - { - // Hit something else, probably a level wall - return false; - } - } if (canShoot) { + Vector2 start = ConvertUnits.ToSimUnits(item.WorldPosition); + Vector2 end = ConvertUnits.ToSimUnits(targetPos.Value); + // Check that there's not other entities that shouldn't be targeted (like a friendly sub) between us and the target. + Body worldTarget = CheckLineOfSight(start, end); + bool shoot; + if (closestEnemy != null && closestEnemy.Submarine != null) + { + start -= closestEnemy.Submarine.SimPosition; + end -= closestEnemy.Submarine.SimPosition; + Body transformedTarget = CheckLineOfSight(start, end); + shoot = CanShoot(transformedTarget, character) && (worldTarget == null || CanShoot(worldTarget, character)); + } + else + { + shoot = CanShoot(worldTarget, character); + } + if (!shoot) { return false; } if (character.IsOnPlayerTeam) { character.Speak(TextManager.Get("DialogFireTurret"), null, 0.0f, "fireturret", 10.0f); @@ -1284,6 +1284,67 @@ namespace Barotrauma.Items.Components return false; } + private bool CanShoot(Body targetBody, Character user = null, WreckAI ai = null, bool targetSubmarines = true) + { + if (targetBody == null) { return false; } + Character targetCharacter = null; + if (targetBody.UserData is Character c) + { + targetCharacter = c; + } + else if (targetBody.UserData is Limb limb) + { + targetCharacter = limb.character; + } + if (targetCharacter != null) + { + if (user != null) + { + if (HumanAIController.IsFriendly(user, targetCharacter)) + { + return false; + } + } + if (ai != null) + { + if (targetCharacter.Params.Group.Equals(ai.Config.Entity, StringComparison.OrdinalIgnoreCase)) + { + return false; + } + } + } + else + { + if (targetBody.UserData is ISpatialEntity e) + { + Submarine sub = e.Submarine ?? e as Submarine; + if (!targetSubmarines && e is Submarine) { return false; } + if (sub == null) { return false; } + if (sub == Item.Submarine) { return false; } + if (sub.Info.IsOutpost || sub.Info.IsWreck || sub.Info.IsBeacon) { return false; } + if (sub.TeamID == Item.Submarine.TeamID) { return false; } + } + else if (!(targetBody.UserData is Voronoi2.VoronoiCell cell && cell.IsDestructible)) + { + // Hit something else, probably a level wall + return false; + } + } + return true; + } + + private Body CheckLineOfSight(Vector2 start, Vector2 end) + { + var collisionCategories = Physics.CollisionWall | Physics.CollisionCharacter | Physics.CollisionItem | Physics.CollisionLevel; + Body pickedBody = Submarine.PickBody(start, end, null, collisionCategories, allowInsideFixture: true, + customPredicate: (Fixture f) => + { + if (f.UserData is Item i && i.GetComponent() != null) { return false; } + return !item.StaticFixtures.Contains(f); + }); + return pickedBody; + } + private Vector2 GetRelativeFiringPosition(bool useOffset = true) { Vector2 transformedFiringOffset = Vector2.Zero; diff --git a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Wearable.cs b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Wearable.cs index b541c4812..baec2c0b0 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Wearable.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Items/Components/Wearable.cs @@ -7,6 +7,7 @@ using System.Xml.Linq; using Barotrauma.Items.Components; using Barotrauma.Extensions; using Barotrauma.Networking; +using Barotrauma.Abilities; namespace Barotrauma { @@ -210,7 +211,9 @@ namespace Barotrauma.Items.Components private readonly Limb[] limb; private readonly List damageModifiers; - public readonly Dictionary SkillModifiers; + public readonly Dictionary SkillModifiers = new Dictionary(); + + public readonly Dictionary WearableStatValues = new Dictionary(); public IEnumerable DamageModifiers { @@ -266,7 +269,6 @@ namespace Barotrauma.Items.Components this.item = item; damageModifiers = new List(); - SkillModifiers = new Dictionary(); int spriteCount = element.Elements().Count(x => x.Name.ToString() == "sprite"); Variants = element.GetAttributeInt("variants", 0); @@ -322,6 +324,18 @@ namespace Barotrauma.Items.Components SkillModifiers.TryAdd(skillIdentifier, skillValue); } break; + case "statvalue": + StatTypes statType = CharacterAbilityGroup.ParseStatType(subElement.GetAttributeString("stattype", ""), Name); + float statValue = subElement.GetAttributeFloat("value", 0f); + if (WearableStatValues.ContainsKey(statType)) + { + WearableStatValues[statType] += statValue; + } + else + { + WearableStatValues.TryAdd(statType, statValue); + } + break; } } } @@ -334,6 +348,7 @@ namespace Barotrauma.Items.Components } picker = character; + for (int i = 0; i < wearableSprites.Length; i++ ) { var wearableSprite = wearableSprites[i]; diff --git a/Barotrauma/BarotraumaShared/SharedSource/Items/Item.cs b/Barotrauma/BarotraumaShared/SharedSource/Items/Item.cs index 0636069b9..db66ce9f0 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Items/Item.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Items/Item.cs @@ -1903,17 +1903,17 @@ namespace Barotrauma return connectedComponents; } - - public static readonly Pair[] connectionPairs = new Pair[] + + public static readonly (string input, string output)[] connectionPairs = new (string input, string output)[] { - new Pair("power_in", "power_out"), - new Pair("signal_in1", "signal_out1"), - new Pair("signal_in2", "signal_out2"), - new Pair("signal_in3", "signal_out3"), - new Pair("signal_in4", "signal_out4"), - new Pair("signal_in", "signal_out"), - new Pair("signal_in1", "signal_out"), - new Pair("signal_in2", "signal_out") + ("power_in", "power_out"), + ("signal_in1", "signal_out1"), + ("signal_in2", "signal_out2"), + ("signal_in3", "signal_out3"), + ("signal_in4", "signal_out4"), + ("signal_in", "signal_out"), + ("signal_in1", "signal_out"), + ("signal_in2", "signal_out") }; private void GetConnectedComponentsRecursive(Connection c, HashSet alreadySearched, List connectedComponents) where T : ItemComponent @@ -1949,20 +1949,20 @@ namespace Barotrauma recipient.Item.GetConnectedComponentsRecursive(recipient, alreadySearched, connectedComponents); } - foreach (Pair connectionPair in connectionPairs) + foreach ((string input, string output) in connectionPairs) { - if (connectionPair.First == c.Name) + if (input == c.Name) { - var pairedConnection = c.Item.Connections.FirstOrDefault(c2 => c2.Name == connectionPair.Second); + var pairedConnection = c.Item.Connections.FirstOrDefault(c2 => c2.Name == output); if (pairedConnection != null) { if (alreadySearched.Contains(pairedConnection)) { continue; } GetConnectedComponentsRecursive(pairedConnection, alreadySearched, connectedComponents); } } - else if (connectionPair.Second == c.Name) + else if (output == c.Name) { - var pairedConnection = c.Item.Connections.FirstOrDefault(c2 => c2.Name == connectionPair.First); + var pairedConnection = c.Item.Connections.FirstOrDefault(c2 => c2.Name == input); if (pairedConnection != null) { if (alreadySearched.Contains(pairedConnection)) { continue; } @@ -1972,18 +1972,27 @@ namespace Barotrauma } } - public Controller FindController() + public Controller FindController(string[] tags = null) { //try finding the controller with the simpler non-recursive method first var controllers = GetConnectedComponents(); - if (controllers.None()) { controllers = GetConnectedComponents(recursive: true); } - return controllers.Count < 2 ? controllers.FirstOrDefault() : - (controllers.FirstOrDefault(c => c.GetFocusTarget() == this) ?? controllers.FirstOrDefault()); + bool needsTag = tags != null && tags.Length > 0; + if (controllers.None() || (needsTag && controllers.None(c => c.Item.HasTag(tags)))) + { + controllers = GetConnectedComponents(recursive: true); + } + if (needsTag) + { + controllers.RemoveAll(c => !c.Item.HasTag(tags)); + } + return controllers.Count < 2 ? + controllers.FirstOrDefault() : + controllers.FirstOrDefault(c => c.GetFocusTarget() == this) ?? controllers.FirstOrDefault(); } - public bool TryFindController(out Controller controller) + public bool TryFindController(out Controller controller, string[] tags = null) { - controller = FindController(); + controller = FindController(tags: tags); return controller != null; } @@ -3029,6 +3038,8 @@ namespace Barotrauma } } + connections?.Clear(); + if (parentInventory != null) { if (parentInventory is CharacterInventory characterInventory) @@ -3054,6 +3065,8 @@ namespace Barotrauma body = null; } + CurrentHull = null; + if (StaticFixtures != null) { foreach (Fixture fixture in StaticFixtures) diff --git a/Barotrauma/BarotraumaShared/SharedSource/Items/ItemPrefab.cs b/Barotrauma/BarotraumaShared/SharedSource/Items/ItemPrefab.cs index c7256157a..e2c81690d 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Items/ItemPrefab.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Items/ItemPrefab.cs @@ -4,6 +4,7 @@ using Microsoft.Xna.Framework; using System; using System.Collections.Generic; using System.Collections.Immutable; +using System.Globalization; using System.Linq; using System.Xml.Linq; @@ -22,7 +23,7 @@ namespace Barotrauma public readonly bool CopyCondition; public float Commonness { get; } - public DeconstructItem(XElement element) + public DeconstructItem(XElement element, string parentDebugName) { ItemIdentifier = element.GetAttributeString("identifier", "notfound"); MinCondition = element.GetAttributeFloat("mincondition", -0.1f); @@ -30,6 +31,11 @@ namespace Barotrauma OutCondition = element.GetAttributeFloat("outcondition", 1.0f); CopyCondition = element.GetAttributeBool("copycondition", false); Commonness = element.GetAttributeFloat("commonness", 1.0f); + + if (element.Attribute("copycondition") != null && element.Attribute("outcondition") != null) + { + DebugConsole.AddWarning($"Invalid deconstruction output in \"{parentDebugName}\": the output item \"{ItemIdentifier}\" has the out condition set, but is also set to copy the condition of the deconstructed item. Ignoring the out condition."); + } } } @@ -67,8 +73,10 @@ namespace Barotrauma public readonly List RequiredItems; public readonly string[] SuitableFabricatorIdentifiers; public readonly float RequiredTime; + public readonly bool RequiresRecipe; public readonly float OutCondition; //Percentage-based from 0 to 1 public readonly List RequiredSkills; + public int Amount { get; } public FabricationRecipe(XElement element, ItemPrefab itemPrefab) @@ -83,6 +91,7 @@ namespace Barotrauma RequiredTime = element.GetAttributeFloat("requiredtime", 1.0f); OutCondition = element.GetAttributeFloat("outcondition", 1.0f); RequiredItems = new List(); + RequiresRecipe = element.GetAttributeBool("requiresrecipe", false); Amount = element.GetAttributeInt("amount", 1); foreach (XElement subElement in element.Elements()) @@ -281,7 +290,7 @@ namespace Barotrauma /// public List Triggers; - private List fabricationRecipeElements = new List(); + private readonly List fabricationRecipeElements = new List(); private readonly Dictionary treatmentSuitability = new Dictionary(); @@ -513,6 +522,20 @@ namespace Barotrauma private set; } + [Serialize(0.0f, false)] + public float AddedRepairSpeedMultiplier + { + get; + private set; + } + + [Serialize(false, false)] + public bool CannotRepairFail + { + get; + private set; + } + [Serialize(null, false)] public string EquipConfirmationText { get; set; } @@ -732,6 +755,20 @@ namespace Barotrauma name = originalName; identifier = element.GetAttributeString("identifier", ""); + string variantOf = element.GetAttributeString("variantof", ""); + if (!string.IsNullOrEmpty(variantOf)) + { + ItemPrefab basePrefab = Find(null, variantOf); + if (basePrefab == null) + { + DebugConsole.ThrowError($"Failed to load the item variant \"{identifier}\" - could not find the base prefab \"{variantOf}\""); + } + else + { + ConfigElement = element = CreateVariantXML(element, basePrefab); + } + } + string categoryStr = element.GetAttributeString("category", "Misc"); if (!Enum.TryParse(categoryStr, true, out MapEntityCategory category)) { @@ -1031,7 +1068,7 @@ namespace Barotrauma DebugConsole.ThrowError("Error in item config \"" + Name + "\" - use item identifiers instead of names to configure the deconstruct items."); continue; } - DeconstructItems.Add(new DeconstructItem(deconstructItem)); + DeconstructItems.Add(new DeconstructItem(deconstructItem, identifier)); } RandomDeconstructionOutputAmount = Math.Min(RandomDeconstructionOutputAmount, DeconstructItems.Count); break; @@ -1044,7 +1081,7 @@ namespace Barotrauma var preferredContainer = new PreferredContainer(subElement); if (preferredContainer.Primary.Count == 0 && preferredContainer.Secondary.Count == 0) { - DebugConsole.ThrowError($"Error in item prefab {Name}: preferred container has no preferences defined ({subElement.ToString()})."); + DebugConsole.ThrowError($"Error in item prefab {Name}: preferred container has no preferences defined ({subElement})."); } else { @@ -1313,5 +1350,99 @@ namespace Barotrauma public static bool IsContainerPreferred(IEnumerable preferences, ItemContainer c) => preferences.Any(id => c.Item.Prefab.Identifier == id || c.Item.HasTag(id)); public static bool IsContainerPreferred(IEnumerable preferences, IEnumerable ids) => ids.Any(id => preferences.Contains(id)); + + private XElement CreateVariantXML(XElement variantElement, ItemPrefab basePrefab) + { + XElement newElement = new XElement(variantElement.Name); + newElement.Add(basePrefab.ConfigElement.Attributes()); + newElement.Add(basePrefab.ConfigElement.Elements()); + + ReplaceElement(newElement, variantElement); + + void ReplaceElement(XElement element, XElement replacement) + { + List elementsToRemove = new List(); + foreach (XAttribute attribute in replacement.Attributes()) + { + ReplaceAttribute(element, attribute); + } + foreach (XElement replacementSubElement in replacement.Elements()) + { + int index = replacement.Elements().ToList().FindAll(e => e.Name.ToString().Equals(replacementSubElement.Name.ToString(), StringComparison.OrdinalIgnoreCase)).IndexOf(replacementSubElement); + System.Diagnostics.Debug.Assert(index > -1); + + int i = 0; + bool matchingElementFound = false; + foreach (XElement subElement in element.Elements()) + { + if (!subElement.Name.ToString().Equals(replacementSubElement.Name.ToString(), StringComparison.OrdinalIgnoreCase)) { continue; } + if (i == index) + { + if (!replacementSubElement.HasAttributes && !replacementSubElement.HasElements) + { + //if the replacement is empty (no attributes or child elements) + //remove the element from the variant + elementsToRemove.Add(subElement); + } + else + { + ReplaceElement(subElement, replacementSubElement); + } + matchingElementFound = true; + break; + } + i++; + } + if (!matchingElementFound) + { + element.Add(replacementSubElement); + } + } + elementsToRemove.ForEach(e => e.Remove()); + } + + void ReplaceAttribute(XElement element, XAttribute newAttribute) + { + XAttribute existingAttribute = element.Attributes().FirstOrDefault(a => a.Name.ToString().Equals(newAttribute.Name.ToString(), StringComparison.OrdinalIgnoreCase)); + if (existingAttribute == null) + { + element.Add(newAttribute); + return; + } + float.TryParse(existingAttribute.Value, NumberStyles.Any, CultureInfo.InvariantCulture, out float value); + if (newAttribute.Value.StartsWith('*')) + { + string multiplierStr = newAttribute.Value.Substring(1, newAttribute.Value.Length - 1); + float.TryParse(multiplierStr, NumberStyles.Any, CultureInfo.InvariantCulture, out float multiplier); + if (multiplierStr.Contains('.') || existingAttribute.Value.Contains('.')) + { + existingAttribute.Value = (value * multiplier).ToString("G", CultureInfo.InvariantCulture); + } + else + { + existingAttribute.Value = ((int)(value * multiplier)).ToString(); + } + } + else if (newAttribute.Value.StartsWith('+')) + { + string additionStr = newAttribute.Value.Substring(1, newAttribute.Value.Length - 1); + float.TryParse(additionStr, NumberStyles.Any, CultureInfo.InvariantCulture, out float addition); + if (additionStr.Contains('.') || existingAttribute.Value.Contains('.')) + { + existingAttribute.Value = (value + addition).ToString("G", CultureInfo.InvariantCulture); + } + else + { + existingAttribute.Value = ((int)(value + addition)).ToString(); + } + } + else + { + existingAttribute.Value = newAttribute.Value; + } + } + + return newElement; + } } } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Map/Explosion.cs b/Barotrauma/BarotraumaShared/SharedSource/Map/Explosion.cs index 4e6759d60..a1958db8e 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Map/Explosion.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Map/Explosion.cs @@ -13,10 +13,8 @@ namespace Barotrauma { partial class Explosion { - private static readonly List> prevExplosions = new List>(); - public readonly Attack Attack; - + private readonly float force; private readonly float cameraShake, cameraShakeRange; @@ -36,6 +34,8 @@ namespace Barotrauma private readonly string decal; private readonly float decalSize; + private readonly float itemRepairStrength; + public float EmpStrength { get; set; } public float BallastFloraDamage { get; set; } @@ -63,22 +63,24 @@ namespace Barotrauma force = element.GetAttributeFloat("force", 0.0f); - sparks = element.GetAttributeBool("sparks", true); - shockwave = element.GetAttributeBool("shockwave", true); - flames = element.GetAttributeBool("flames", true); - underwaterBubble = element.GetAttributeBool("underwaterbubble", true); - smoke = element.GetAttributeBool("smoke", true); + bool showEffects = element.GetAttributeBool("showeffects", true); - playTinnitus = element.GetAttributeBool("playtinnitus", true); + sparks = element.GetAttributeBool("sparks", showEffects); + shockwave = element.GetAttributeBool("shockwave", showEffects); + flames = element.GetAttributeBool("flames", showEffects); + underwaterBubble = element.GetAttributeBool("underwaterbubble", showEffects); + smoke = element.GetAttributeBool("smoke", showEffects); - applyFireEffects = element.GetAttributeBool("applyfireeffects", flames); + playTinnitus = element.GetAttributeBool("playtinnitus", showEffects); + + applyFireEffects = element.GetAttributeBool("applyfireeffects", flames && showEffects); ignoreFireEffectsForTags = element.GetAttributeStringArray("ignorefireeffectsfortags", new string[0], convertToLowerInvariant: true); ignoreCover = element.GetAttributeBool("ignorecover", false); onlyInside = element.GetAttributeBool("onlyinside", false); onlyOutside = element.GetAttributeBool("onlyoutside", false); - flash = element.GetAttributeBool("flash", true); + flash = element.GetAttributeBool("flash", showEffects); flashDuration = element.GetAttributeFloat("flashduration", 0.05f); if (element.Attribute("flashrange") != null) { flashRange = element.GetAttributeFloat("flashrange", 100.0f); } flashColor = element.GetAttributeColor("flashcolor", Color.LightYellow); @@ -86,15 +88,18 @@ namespace Barotrauma EmpStrength = element.GetAttributeFloat("empstrength", 0.0f); BallastFloraDamage = element.GetAttributeFloat("ballastfloradamage", 0.0f); - decal = element.GetAttributeString("decal", ""); + itemRepairStrength = element.GetAttributeFloat("itemrepairstrength", 0.0f); + + decal = element.GetAttributeString("decal", ""); decalSize = element.GetAttributeFloat(1.0f, "decalSize", "decalsize"); - cameraShake = element.GetAttributeFloat("camerashake", Attack.Range * 0.1f); - cameraShakeRange = element.GetAttributeFloat("camerashakerange", Attack.Range); + cameraShake = element.GetAttributeFloat("camerashake", showEffects ? Attack.Range * 0.1f : 0f); + cameraShakeRange = element.GetAttributeFloat("camerashakerange", showEffects ? Attack.Range : 0f); - screenColorRange = element.GetAttributeFloat("screencolorrange", Attack.Range * 0.1f); + screenColorRange = element.GetAttributeFloat("screencolorrange", showEffects ? Attack.Range * 0.1f : 0f); screenColor = element.GetAttributeColor("screencolor", Color.Transparent); screenColorDuration = element.GetAttributeFloat("screencolorduration", 0.1f); + } public void DisableParticles() @@ -107,19 +112,8 @@ namespace Barotrauma underwaterBubble = false; } - public List> GetRecentExplosions(float maxSecondsAgo) - { - return prevExplosions.FindAll(e => e.Third >= Timing.TotalTime - maxSecondsAgo); - } - public void Explode(Vector2 worldPosition, Entity damageSource, Character attacker = null) { - prevExplosions.Add(new Triplet(this, worldPosition, (float)Timing.TotalTime)); - if (prevExplosions.Count > 100) - { - prevExplosions.RemoveAt(0); - } - Hull hull = Hull.FindHull(worldPosition); ExplodeProjSpecific(worldPosition, hull); @@ -180,6 +174,23 @@ namespace Barotrauma } } + if (itemRepairStrength > 0.0f) + { + float displayRangeSqr = displayRange * displayRange; + foreach (Item item in Item.ItemList) + { + float distSqr = Vector2.DistanceSquared(item.WorldPosition, worldPosition); + if (distSqr > displayRangeSqr) continue; + + float distFactor = 1.0f - (float)Math.Sqrt(distSqr) / displayRange; + //repair repairable items + if (item.Repairables.Any()) + { + item.Condition += itemRepairStrength * distFactor; + } + } + } + if (MathUtils.NearlyEqual(force, 0.0f) && MathUtils.NearlyEqual(Attack.Stun, 0.0f) && MathUtils.NearlyEqual(Attack.GetTotalDamage(false), 0.0f)) { return; diff --git a/Barotrauma/BarotraumaShared/SharedSource/Map/Hull.cs b/Barotrauma/BarotraumaShared/SharedSource/Map/Hull.cs index ee40e20a9..d99fa611d 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Map/Hull.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Map/Hull.cs @@ -14,8 +14,8 @@ namespace Barotrauma partial class BackgroundSection { public Rectangle Rect; - public int Index; - public int RowIndex; + public ushort Index; + public ushort RowIndex; private Vector4 colorVector4; private Color color; @@ -39,7 +39,7 @@ namespace Barotrauma } } - public BackgroundSection(Rectangle rect, int index, int rowIndex) + public BackgroundSection(Rectangle rect, ushort index, ushort rowIndex) { Rect = rect; Index = index; @@ -53,7 +53,7 @@ namespace Barotrauma Color = DirtColor = Color.Lerp(new Color(10, 10, 10, 100), new Color(54, 57, 28, 200), Noise.X); } - public BackgroundSection(Rectangle rect, int index, float colorStrength, Color color, int rowIndex) + public BackgroundSection(Rectangle rect, ushort index, float colorStrength, Color color, ushort rowIndex) { System.Diagnostics.Debug.Assert(rect.Width > 0 && rect.Height > 0); @@ -674,6 +674,9 @@ namespace Barotrauma Gap.UpdateHulls(); } + BackgroundSections?.Clear(); + submergedSections?.Clear(); + List fireSourcesToRemove = new List(FireSources); foreach (FireSource fireSource in fireSourcesToRemove) { @@ -1260,9 +1263,9 @@ namespace Barotrauma { for (int x = 0; x < xBackgroundMax; x++) { - int index = BackgroundSections.Count; + ushort index = (ushort)BackgroundSections.Count; int sector = (int)Math.Floor(index / (float)sectorWidth - xSectors * y) + y / sectorHeight * (int)Math.Ceiling(xSectors); - BackgroundSections.Add(new BackgroundSection(new Rectangle(x * sectionWidth, y * -sectionHeight, sectionWidth, sectionHeight), index, y)); + BackgroundSections.Add(new BackgroundSection(new Rectangle(x * sectionWidth, y * -sectionHeight, sectionWidth, sectionHeight), index, (ushort)y)); } } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Map/Levels/Level.cs b/Barotrauma/BarotraumaShared/SharedSource/Map/Levels/Level.cs index 5a0c3bd8c..afb5f6086 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Map/Levels/Level.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Map/Levels/Level.cs @@ -325,7 +325,6 @@ namespace Barotrauma get { return LevelData.Seed; } } - public static float? ForcedDifficulty; public float Difficulty { @@ -3020,13 +3019,6 @@ namespace Barotrauma } } - public string GetWreckIDTag(string originalTag, Submarine wreck) - { - string shortSeed = ToolBox.StringToInt(LevelData.Seed + wreck?.Info.Name).ToString(); - if (shortSeed.Length > 6) { shortSeed = shortSeed.Substring(0, 6); } - return originalTag + "_" + shortSeed; - } - public bool IsCloseToStart(Vector2 position, float minDist) => IsCloseToStart(position.ToPoint(), minDist); public bool IsCloseToEnd(Vector2 position, float minDist) => IsCloseToEnd(position.ToPoint(), minDist); @@ -3891,12 +3883,39 @@ namespace Barotrauma LevelObjectManager = null; } + AbyssIslands?.Clear(); + AbyssResources?.Clear(); + Caves?.Clear(); + Tunnels?.Clear(); + PathPoints?.Clear(); + PositionsOfInterest?.Clear(); + + wreckPositions?.Clear(); + Wrecks?.Clear(); + + BeaconStation = null; + beaconSonar = null; + StartOutpost = null; + EndOutpost = null; + + blockedRects?.Clear(); + + EntitiesBeforeGenerate?.Clear(); + EqualityCheckValues?.Clear(); + if (Ruins != null) { Ruins.Clear(); Ruins = null; } + bottomPositions?.Clear(); + BottomBarrier = null; + TopBarrier = null; + SeaFloor = null; + + distanceField = null; + if (ExtraWalls != null) { foreach (LevelWall w in ExtraWalls) { w.Dispose(); } @@ -3908,7 +3927,9 @@ namespace Barotrauma UnsyncedExtraWalls = null; } + tempCells?.Clear(); cells = null; + cellGrid = null; if (bodies != null) { @@ -3916,6 +3937,9 @@ namespace Barotrauma bodies = null; } + StartLocation = null; + EndLocation = null; + Loaded = null; } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Map/Levels/LevelObjects/LevelTrigger.cs b/Barotrauma/BarotraumaShared/SharedSource/Map/Levels/LevelObjects/LevelTrigger.cs index 6259d240d..55850a421 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Map/Levels/LevelObjects/LevelTrigger.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Map/Levels/LevelObjects/LevelTrigger.cs @@ -264,7 +264,7 @@ namespace Barotrauma var tagsArray = element.GetAttributeStringArray("tags", new string[0]); foreach (string tag in tagsArray) { - tags.Add(tag.ToLower()); + tags.Add(tag.ToLowerInvariant()); } if (triggeredBy.HasFlag(TriggererType.OtherTrigger)) @@ -272,7 +272,7 @@ namespace Barotrauma var otherTagsArray = element.GetAttributeStringArray("allowedothertriggertags", new string[0]); foreach (string tag in otherTagsArray) { - allowedOtherTriggerTags.Add(tag.ToLower()); + allowedOtherTriggerTags.Add(tag.ToLowerInvariant()); } } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Map/Map/Radiation.cs b/Barotrauma/BarotraumaShared/SharedSource/Map/Map/Radiation.cs index fbe5d775f..766ef959e 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Map/Map/Radiation.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Map/Map/Radiation.cs @@ -149,7 +149,7 @@ namespace Barotrauma public XElement Save() { XElement element = new XElement(nameof(Radiation)); - SerializableProperty.SerializeProperties(this, element); + SerializableProperty.SerializeProperties(this, element, saveIfDefault: true); return element; } } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Map/MapEntity.cs b/Barotrauma/BarotraumaShared/SharedSource/Map/MapEntity.cs index 61e14591b..ad5279bc9 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Map/MapEntity.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Map/MapEntity.cs @@ -48,8 +48,7 @@ namespace Barotrauma } } - //observable collection because some entities may need to be notified when the collection is modified - public readonly ObservableCollection linkedTo = new ObservableCollection(); + public readonly List linkedTo = new List(); protected bool flippedX, flippedY; public bool FlippedX { get { return flippedX; } } @@ -515,7 +514,11 @@ namespace Barotrauma } #endif - if (aiTarget != null) aiTarget.Remove(); + if (aiTarget != null) + { + aiTarget.Remove(); + aiTarget = null; + } if (linkedTo != null) { diff --git a/Barotrauma/BarotraumaShared/SharedSource/Map/Structure.cs b/Barotrauma/BarotraumaShared/SharedSource/Map/Structure.cs index 23644df10..80ba583ee 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Map/Structure.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Map/Structure.cs @@ -47,7 +47,7 @@ namespace Barotrauma const float LeakThreshold = 0.1f; #if CLIENT - private SpriteEffects SpriteEffects = SpriteEffects.None; + public SpriteEffects SpriteEffects = SpriteEffects.None; #endif //dimensions of the wall sections' physics bodies (only used for debug rendering) @@ -955,6 +955,15 @@ namespace Barotrauma SoundPlayer.PlayDamageSound(attack.StructureSoundType, damageAmount, worldPosition, tags: Tags); } #endif + + if (Submarine != null && damageAmount > 0) + { + foreach (Character character in Character.CharacterList) + { + character.CheckTalents(AbilityEffectType.AfterSubmarineAttacked, Submarine); + } + } + return new AttackResult(damageAmount, null); } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Map/Submarine.cs b/Barotrauma/BarotraumaShared/SharedSource/Map/Submarine.cs index 2270e5d69..3e92a9aea 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Map/Submarine.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Map/Submarine.cs @@ -249,6 +249,17 @@ namespace Barotrauma get { return subBody?.HullVertices; } } + private int? submarineSpecificIDTag; + public int SubmarineSpecificIDTag + { + get + { + submarineSpecificIDTag ??= ToolBox.StringToInt((Level.Loaded?.Seed ?? "") + Info.Name); + return submarineSpecificIDTag.Value; + } + } + + public bool AtDamageDepth { get @@ -329,48 +340,6 @@ namespace Barotrauma DockedTo.ForEach(s => s.ShowSonarMarker = false); PhysicsBody.FarseerBody.BodyType = BodyType.Static; TeamID = CharacterTeamType.None; - - string defaultTag = Level.Loaded.GetWreckIDTag("wreck_id", this); - ReplaceIDCardTagRequirements("wreck_id", defaultTag); - - foreach (Item item in Item.ItemList) - { - if (item.Submarine != this) { continue; } - if (item.prefab.Identifier == "idcardwreck" || item.prefab.Identifier == "idcard") - { - foreach (string tag in item.GetTags().ToList()) - { - if (tag == "smallitem") { continue; } - string newTag = Level.Loaded.GetWreckIDTag(tag, this); - item.ReplaceTag(tag, newTag); - ReplaceIDCardTagRequirements(tag, newTag); - } - } - } - - void ReplaceIDCardTagRequirements(string oldTag, string newTag) - { - foreach (Item item in Item.ItemList) - { - if (item.Submarine != this) { continue; } - foreach (ItemComponent ic in item.Components) - { - ReplaceIDCardTagRequirement(ic, RelatedItem.RelationType.Picked, oldTag, newTag); - ReplaceIDCardTagRequirement(ic, RelatedItem.RelationType.Equipped, oldTag, newTag); - } - } - } - - static void ReplaceIDCardTagRequirement(ItemComponent ic, RelatedItem.RelationType relationType, string oldTag, string newTag) - { - if (!ic.requiredItems.ContainsKey(relationType)) { return; } - foreach (RelatedItem requiredItem in ic.requiredItems[relationType]) - { - int index = Array.IndexOf(requiredItem.Identifiers, oldTag); - if (index == -1) { continue; } - requiredItem.Identifiers[index] = newTag; - } - } } public WreckAI WreckAI { get; private set; } @@ -1718,7 +1687,10 @@ namespace Barotrauma PhysicsBody.RemoveAll(); - GameMain.World.Clear(); + GameMain.World?.Clear(); + GameMain.World = null; + + GC.Collect(); Unloading = false; } @@ -1730,6 +1702,9 @@ namespace Barotrauma subBody?.Remove(); subBody = null; + outdoorNodes?.Clear(); + outdoorNodes = null; + if (GameMain.GameSession?.Campaign?.UpgradeManager != null) { GameMain.GameSession.Campaign.UpgradeManager.OnUpgradesChanged -= ResetCrushDepth; @@ -1743,8 +1718,8 @@ namespace Barotrauma visibleEntities = null; - if (MainSub == this) MainSub = null; - if (MainSubs[1] == this) MainSubs[1] = null; + if (MainSub == this) { MainSub = null; } + if (MainSubs[1] == this) { MainSubs[1] = null; } ConnectedDockingPorts?.Clear(); diff --git a/Barotrauma/BarotraumaShared/SharedSource/Map/SubmarineBody.cs b/Barotrauma/BarotraumaShared/SharedSource/Map/SubmarineBody.cs index 5fe93ad3b..c24088ba5 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Map/SubmarineBody.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Map/SubmarineBody.cs @@ -569,8 +569,7 @@ namespace Barotrauma } var gaps = newHull?.ConnectedGaps ?? Gap.GapList.Where(g => g.Submarine == submarine); - targetPos = character.WorldPosition; - Gap adjacentGap = Gap.FindAdjacent(gaps, targetPos, 500.0f); + Gap adjacentGap = Gap.FindAdjacent(gaps, ConvertUnits.ToDisplayUnits(points[0]), 200.0f); if (adjacentGap == null) { return true; } if (newHull != null) diff --git a/Barotrauma/BarotraumaShared/SharedSource/Map/WayPoint.cs b/Barotrauma/BarotraumaShared/SharedSource/Map/WayPoint.cs index 2f7152ffa..e6942d2bb 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Map/WayPoint.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Map/WayPoint.cs @@ -54,6 +54,8 @@ namespace Barotrauma set { spawnType = value; } } + public Action OnLinksChanged { get; set; } + public override string Name { get @@ -761,9 +763,16 @@ namespace Barotrauma public void ConnectTo(WayPoint wayPoint2) { System.Diagnostics.Debug.Assert(this != wayPoint2); - - if (!linkedTo.Contains(wayPoint2)) { linkedTo.Add(wayPoint2); } - if (!wayPoint2.linkedTo.Contains(this)) { wayPoint2.linkedTo.Add(this); } + if (!linkedTo.Contains(wayPoint2)) + { + OnLinksChanged?.Invoke(this); + linkedTo.Add(wayPoint2); + } + if (!wayPoint2.linkedTo.Contains(this)) + { + wayPoint2.OnLinksChanged?.Invoke(wayPoint2); + wayPoint2.linkedTo.Add(this); + } } public static WayPoint GetRandom(SpawnType spawnType = SpawnType.Human, JobPrefab assignedJob = null, Submarine sub = null, Ruin ruin = null, bool useSyncedRand = false) @@ -986,14 +995,18 @@ namespace Barotrauma public override void ShallowRemove() { base.ShallowRemove(); - WayPointList.Remove(this); } public override void Remove() { base.Remove(); - + CurrentHull = null; + ConnectedGap = null; + Tunnel = null; + Stairs = null; + Ladders = null; + OnLinksChanged = null; WayPointList.Remove(this); } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Networking/ChildServerRelay.cs b/Barotrauma/BarotraumaShared/SharedSource/Networking/ChildServerRelay.cs index 7402c316d..d43ef274d 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Networking/ChildServerRelay.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Networking/ChildServerRelay.cs @@ -89,7 +89,7 @@ namespace Barotrauma.Networking private static int ReadIncomingMsgs() { Task readTask = readStream?.ReadAsync(tempBytes, 0, tempBytes.Length, readCancellationToken.Token); - TimeSpan ts = TimeSpan.FromMilliseconds(100); + TimeSpan timeOut = TimeSpan.FromMilliseconds(100); for (int i = 0; i < 150; i++) { if (shutDown) @@ -99,7 +99,7 @@ namespace Barotrauma.Networking return -1; } - if ((readTask?.IsCompleted ?? true) || (readTask?.Wait(ts) ?? true)) + if ((readTask?.IsCompleted ?? true) || (readTask?.Wait(timeOut) ?? true)) { break; } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Networking/NetEntityEvent/NetEntityEvent.cs b/Barotrauma/BarotraumaShared/SharedSource/Networking/NetEntityEvent/NetEntityEvent.cs index f0b800508..fa35ae9aa 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Networking/NetEntityEvent/NetEntityEvent.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Networking/NetEntityEvent/NetEntityEvent.cs @@ -23,6 +23,9 @@ namespace Barotrauma.Networking TeamChange, ObjectiveManagerState, AddToCrew, + UpdateExperience, + UpdateTalents, + UpdateMoney, } public readonly Entity Entity; diff --git a/Barotrauma/BarotraumaShared/SharedSource/Networking/OrderChatMessage.cs b/Barotrauma/BarotraumaShared/SharedSource/Networking/OrderChatMessage.cs index b6eb1674f..dc79afcd9 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Networking/OrderChatMessage.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Networking/OrderChatMessage.cs @@ -23,9 +23,12 @@ namespace Barotrauma.Networking /// public int? WallSectionIndex { get; set; } + /// + /// Same as calling , but the text parameter is set using + /// public OrderChatMessage(Order order, string orderOption, int priority, ISpatialEntity targetEntity, Character targetCharacter, Character sender) : this(order, orderOption, priority, - order?.GetChatMessage(targetCharacter?.Name, sender?.CurrentHull?.DisplayName, givingOrderToSelf: targetCharacter == sender, orderOption: orderOption), + order?.GetChatMessage(targetCharacter?.Name, sender?.CurrentHull?.DisplayName, givingOrderToSelf: targetCharacter == sender, orderOption: orderOption, priority: priority), targetEntity, targetCharacter, sender) { diff --git a/Barotrauma/BarotraumaShared/SharedSource/Networking/RespawnManager.cs b/Barotrauma/BarotraumaShared/SharedSource/Networking/RespawnManager.cs index c0074d353..e4d53fc9c 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Networking/RespawnManager.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Networking/RespawnManager.cs @@ -26,6 +26,9 @@ namespace Barotrauma.Networking //any respawn items left in the shuttle are removed when the shuttle despawns private readonly List respawnItems = new List(); + //characters who spawned during the last respawn + private readonly List respawnedCharacters = new List(); + public bool UsingShuttle { get { return RespawnShuttle != null; } @@ -277,11 +280,17 @@ namespace Barotrauma.Networking hull.BallastFlora?.Kill(); } + Dictionary characterPositions = new Dictionary(); foreach (Character c in Character.CharacterList) { if (c.Submarine != RespawnShuttle) { continue; } + if (!respawnedCharacters.Contains(c)) + { + characterPositions.Add(c, c.WorldPosition); + continue; + } #if CLIENT - if (Character.Controlled == c) Character.Controlled = null; + if (Character.Controlled == c) { Character.Controlled = null; } #endif c.Kill(CauseOfDeathType.Unknown, null, true); c.Enabled = false; @@ -298,6 +307,11 @@ namespace Barotrauma.Networking RespawnShuttle.SetPosition(new Vector2(Level.Loaded.StartPosition.X, Level.Loaded.Size.Y + RespawnShuttle.Borders.Height)); RespawnShuttle.Velocity = Vector2.Zero; + + foreach (var characterPosition in characterPositions) + { + characterPosition.Key.TeleportTo(characterPosition.Value); + } } partial void RespawnCharactersProjSpecific(Vector2? shuttlePos); diff --git a/Barotrauma/BarotraumaShared/SharedSource/Networking/ServerSettings.cs b/Barotrauma/BarotraumaShared/SharedSource/Networking/ServerSettings.cs index 8b72e0075..c68215f53 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Networking/ServerSettings.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Networking/ServerSettings.cs @@ -507,7 +507,7 @@ namespace Barotrauma.Networking } [Serialize(800, true)] - private int LinesPerLogFile + public int LinesPerLogFile { get { diff --git a/Barotrauma/BarotraumaShared/SharedSource/Serialization/XMLExtensions.cs b/Barotrauma/BarotraumaShared/SharedSource/Serialization/XMLExtensions.cs index fb24f1a63..00c4f0517 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Serialization/XMLExtensions.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Serialization/XMLExtensions.cs @@ -12,7 +12,7 @@ namespace Barotrauma { public static class XMLExtensions { - public static string ParseContentPathFromUri(this XObject element) => ToolBox.ConvertAbsoluteToRelativePath(element.BaseUri); + public static string ParseContentPathFromUri(this XObject element) => Path.GetRelativePath(Environment.CurrentDirectory, element.BaseUri); public static XDocument TryLoadXml(string filePath) { @@ -52,7 +52,7 @@ namespace Barotrauma return null; } - if (doc.Root == null) return null; + if (doc.Root == null) { return null; } } return doc; @@ -60,20 +60,18 @@ namespace Barotrauma public static object GetAttributeObject(XAttribute attribute) { - if (attribute == null) return null; + if (attribute == null) { return null; } return ParseToObject(attribute.Value.ToString()); } public static object ParseToObject(string value) { - float floatVal; - int intVal; - if (value.Contains(".") && Single.TryParse(value, NumberStyles.Float, CultureInfo.InvariantCulture, out floatVal)) + if (value.Contains(".") && Single.TryParse(value, NumberStyles.Float, CultureInfo.InvariantCulture, out float floatVal)) { return floatVal; } - if (Int32.TryParse(value, out intVal)) + if (Int32.TryParse(value, out int intVal)) { return intVal; } @@ -94,7 +92,7 @@ namespace Barotrauma public static string GetAttributeString(this XElement element, string name, string defaultValue) { - if (element?.Attribute(name) == null) return defaultValue; + if (element?.Attribute(name) == null) { return defaultValue; } return GetAttributeString(element.Attribute(name), defaultValue); } @@ -106,10 +104,10 @@ namespace Barotrauma public static string[] GetAttributeStringArray(this XElement element, string name, string[] defaultValue, bool trim = true, bool convertToLowerInvariant = false) { - if (element?.Attribute(name) == null) return defaultValue; + if (element?.Attribute(name) == null) { return defaultValue; } string stringValue = element.Attribute(name).Value; - if (string.IsNullOrEmpty(stringValue)) return defaultValue; + if (string.IsNullOrEmpty(stringValue)) { return defaultValue; } string[] splitValue = stringValue.Split(',', ','); @@ -133,11 +131,11 @@ namespace Barotrauma public static float GetAttributeFloat(this XElement element, float defaultValue, params string[] matchingAttributeName) { - if (element == null) return defaultValue; + if (element == null) { return defaultValue; } foreach (string name in matchingAttributeName) { - if (element.Attribute(name) == null) continue; + if (element.Attribute(name) == null) { continue; } float val; try @@ -162,7 +160,7 @@ namespace Barotrauma public static float GetAttributeFloat(this XElement element, string name, float defaultValue) { - if (element?.Attribute(name) == null) return defaultValue; + if (element?.Attribute(name) == null) { return defaultValue; } float val = defaultValue; try @@ -184,7 +182,7 @@ namespace Barotrauma public static float GetAttributeFloat(this XAttribute attribute, float defaultValue) { - if (attribute == null) return defaultValue; + if (attribute == null) { return defaultValue; } float val = defaultValue; @@ -207,10 +205,10 @@ namespace Barotrauma public static float[] GetAttributeFloatArray(this XElement element, string name, float[] defaultValue) { - if (element?.Attribute(name) == null) return defaultValue; + if (element?.Attribute(name) == null) { return defaultValue; } string stringValue = element.Attribute(name).Value; - if (string.IsNullOrEmpty(stringValue)) return defaultValue; + if (string.IsNullOrEmpty(stringValue)) { return defaultValue; } string[] splitValue = stringValue.Split(','); float[] floatValue = new float[splitValue.Length]; @@ -236,13 +234,16 @@ namespace Barotrauma public static int GetAttributeInt(this XElement element, string name, int defaultValue) { - if (element?.Attribute(name) == null) return defaultValue; + if (element?.Attribute(name) == null) { return defaultValue; } int val = defaultValue; try { - val = Int32.Parse(element.Attribute(name).Value, CultureInfo.InvariantCulture); + if (!Int32.TryParse(element.Attribute(name).Value, NumberStyles.Any, CultureInfo.InvariantCulture, out val)) + { + val = (int)float.Parse(element.Attribute(name).Value, CultureInfo.InvariantCulture); + } } catch (Exception e) { @@ -254,7 +255,7 @@ namespace Barotrauma public static uint GetAttributeUInt(this XElement element, string name, uint defaultValue) { - if (element?.Attribute(name) == null) return defaultValue; + if (element?.Attribute(name) == null) { return defaultValue; } uint val = defaultValue; @@ -272,7 +273,7 @@ namespace Barotrauma public static UInt64 GetAttributeUInt64(this XElement element, string name, UInt64 defaultValue) { - if (element?.Attribute(name) == null) return defaultValue; + if (element?.Attribute(name) == null) { return defaultValue; } UInt64 val = defaultValue; @@ -290,7 +291,7 @@ namespace Barotrauma public static UInt64 GetAttributeSteamID(this XElement element, string name, UInt64 defaultValue) { - if (element?.Attribute(name) == null) return defaultValue; + if (element?.Attribute(name) == null) { return defaultValue; } UInt64 val = defaultValue; @@ -308,10 +309,10 @@ namespace Barotrauma public static int[] GetAttributeIntArray(this XElement element, string name, int[] defaultValue) { - if (element?.Attribute(name) == null) return defaultValue; + if (element?.Attribute(name) == null) { return defaultValue; } string stringValue = element.Attribute(name).Value; - if (string.IsNullOrEmpty(stringValue)) return defaultValue; + if (string.IsNullOrEmpty(stringValue)) { return defaultValue; } string[] splitValue = stringValue.Split(','); int[] intValue = new int[splitValue.Length]; @@ -332,10 +333,10 @@ namespace Barotrauma } public static ushort[] GetAttributeUshortArray(this XElement element, string name, ushort[] defaultValue) { - if (element?.Attribute(name) == null) return defaultValue; + if (element?.Attribute(name) == null) { return defaultValue; } string stringValue = element.Attribute(name).Value; - if (string.IsNullOrEmpty(stringValue)) return defaultValue; + if (string.IsNullOrEmpty(stringValue)) { return defaultValue; } string[] splitValue = stringValue.Split(','); ushort[] ushortValue = new ushort[splitValue.Length]; @@ -357,13 +358,13 @@ namespace Barotrauma public static bool GetAttributeBool(this XElement element, string name, bool defaultValue) { - if (element?.Attribute(name) == null) return defaultValue; + if (element?.Attribute(name) == null) { return defaultValue; } return element.Attribute(name).GetAttributeBool(defaultValue); } public static bool GetAttributeBool(this XAttribute attribute, bool defaultValue) { - if (attribute == null) return defaultValue; + if (attribute == null) { return defaultValue; } string val = attribute.Value.ToLowerInvariant().Trim(); if (val == "true") @@ -381,31 +382,31 @@ namespace Barotrauma public static Point GetAttributePoint(this XElement element, string name, Point defaultValue) { - if (element?.Attribute(name) == null) return defaultValue; + if (element?.Attribute(name) == null) { return defaultValue; } return ParsePoint(element.Attribute(name).Value); } public static Vector2 GetAttributeVector2(this XElement element, string name, Vector2 defaultValue) { - if (element?.Attribute(name) == null) return defaultValue; + if (element?.Attribute(name) == null) { return defaultValue; } return ParseVector2(element.Attribute(name).Value); } public static Vector3 GetAttributeVector3(this XElement element, string name, Vector3 defaultValue) { - if (element == null || element.Attribute(name) == null) return defaultValue; + if (element == null || element.Attribute(name) == null) { return defaultValue; } return ParseVector3(element.Attribute(name).Value); } public static Vector4 GetAttributeVector4(this XElement element, string name, Vector4 defaultValue) { - if (element == null || element.Attribute(name) == null) return defaultValue; + if (element == null || element.Attribute(name) == null) { return defaultValue; } return ParseVector4(element.Attribute(name).Value); } public static Color GetAttributeColor(this XElement element, string name, Color defaultValue) { - if (element == null || element.Attribute(name) == null) return defaultValue; + if (element == null || element.Attribute(name) == null) { return defaultValue; } return ParseColor(element.Attribute(name).Value); } @@ -417,32 +418,32 @@ namespace Barotrauma public static Color[] GetAttributeColorArray(this XElement element, string name, Color[] defaultValue) { - if (element?.Attribute(name) == null) return defaultValue; + if (element?.Attribute(name) == null) { return defaultValue; } - string stringValue = element.Attribute(name).Value; - if (string.IsNullOrEmpty(stringValue)) return defaultValue; + string stringValue = element.Attribute(name).Value; + if (string.IsNullOrEmpty(stringValue)) { return defaultValue; } - string[] splitValue = stringValue.Split(';'); - Color[] colorValue = new Color[splitValue.Length]; - for (int i = 0; i < splitValue.Length; i++) + string[] splitValue = stringValue.Split(';'); + Color[] colorValue = new Color[splitValue.Length]; + for (int i = 0; i < splitValue.Length; i++) + { + try { - try - { - Color val = ParseColor(splitValue[i], true); - colorValue[i] = val; - } - catch (Exception e) - { - DebugConsole.ThrowError("Error in " + element + "! ", e); - } + Color val = ParseColor(splitValue[i], true); + colorValue[i] = val; } + catch (Exception e) + { + DebugConsole.ThrowError("Error in " + element + "! ", e); + } + } - return colorValue; + return colorValue; } public static Rectangle GetAttributeRect(this XElement element, string name, Rectangle defaultValue) { - if (element == null || element.Attribute(name) == null) return defaultValue; + if (element == null || element.Attribute(name) == null) { return defaultValue; } return ParseRect(element.Attribute(name).Value, false); } @@ -498,7 +499,7 @@ namespace Barotrauma if (components.Length != 2) { - if (!errorMessages) return point; + if (!errorMessages) { return point; } DebugConsole.ThrowError("Failed to parse the string \"" + stringPoint + "\" to Vector2"); return point; } @@ -516,7 +517,7 @@ namespace Barotrauma if (components.Length != 2) { - if (!errorMessages) return vector; + if (!errorMessages) { return vector; } DebugConsole.ThrowError("Failed to parse the string \"" + stringVector2 + "\" to Vector2"); return vector; } @@ -535,7 +536,7 @@ namespace Barotrauma if (components.Length != 3) { - if (!errorMessages) return vector; + if (!errorMessages) { return vector; } DebugConsole.ThrowError("Failed to parse the string \"" + stringVector3 + "\" to Vector3"); return vector; } @@ -555,7 +556,7 @@ namespace Barotrauma if (components.Length < 3) { - if (errorMessages) DebugConsole.ThrowError("Failed to parse the string \"" + stringVector4 + "\" to Vector4"); + if (errorMessages) { DebugConsole.ThrowError("Failed to parse the string \"" + stringVector4 + "\" to Vector4"); } return vector; } @@ -563,7 +564,9 @@ namespace Barotrauma Single.TryParse(components[1], NumberStyles.Float, CultureInfo.InvariantCulture, out vector.Y); Single.TryParse(components[2], NumberStyles.Float, CultureInfo.InvariantCulture, out vector.Z); if (components.Length > 3) + { Single.TryParse(components[3], NumberStyles.Float, CultureInfo.InvariantCulture, out vector.W); + } return vector; } @@ -603,8 +606,7 @@ namespace Barotrauma { stringColor = stringColor.Substring(1); - int colorInt = 0; - if (int.TryParse(stringColor, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out colorInt)) + if (int.TryParse(stringColor, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out int colorInt)) { if (stringColor.Length == 6) { @@ -621,7 +623,7 @@ namespace Barotrauma if (hexFailed) { - if (errorMessages) DebugConsole.ThrowError("Failed to parse the string \"" + stringColor + "\" to Color"); + if (errorMessages) { DebugConsole.ThrowError("Failed to parse the string \"" + stringColor + "\" to Color"); } return Color.White; } } @@ -651,7 +653,7 @@ namespace Barotrauma string[] strComponents = stringRect.Split(','); if ((strComponents.Length < 3 && requireSize) || strComponents.Length < 2) { - if (errorMessages) DebugConsole.ThrowError("Failed to parse the string \"" + stringRect + "\" to Rectangle"); + if (errorMessages) { DebugConsole.ThrowError("Failed to parse the string \"" + stringRect + "\" to Rectangle"); } return new Rectangle(0, 0, 0, 0); } diff --git a/Barotrauma/BarotraumaShared/SharedSource/StatusEffects/StatusEffect.cs b/Barotrauma/BarotraumaShared/SharedSource/StatusEffects/StatusEffect.cs index 41c47a0b7..faa57d7b1 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/StatusEffects/StatusEffect.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/StatusEffects/StatusEffect.cs @@ -309,6 +309,9 @@ namespace Barotrauma public readonly List> ReduceAffliction; + private readonly List giveExperiences; + private readonly List<(string identifier, float amount)> giveSkills; + public float Duration => duration; //only applicable if targeting NearbyCharacters or NearbyItems @@ -357,6 +360,9 @@ namespace Barotrauma Explosions = new List(); triggeredEvents = new List(); ReduceAffliction = new List>(); + giveExperiences = new List(); + giveSkills = new List<(string, float)>(); + tags = new HashSet(element.GetAttributeString("tags", "").Split(',')); OnlyInside = element.GetAttributeBool("onlyinside", false); OnlyOutside = element.GetAttributeBool("onlyoutside", false); @@ -486,13 +492,22 @@ namespace Barotrauma } } + if (duration > 0.0f && !setValue) + { + //a workaround to "tags" possibly meaning either an item's tags or this status effect's tags: + //if the status effect has a duration, assume tags mean this status effect's tags and leave item tags untouched. + propertyAttributes.RemoveAll(a => a.Name.ToString().Equals("tags", StringComparison.OrdinalIgnoreCase)); + } + int count = propertyAttributes.Count; + propertyNames = new string[count]; propertyEffects = new object[count]; int n = 0; foreach (XAttribute attribute in propertyAttributes) { + propertyNames[n] = attribute.Name.ToString().ToLowerInvariant(); propertyEffects[n] = XMLExtensions.GetAttributeObject(attribute); n++; @@ -626,6 +641,12 @@ namespace Barotrauma case "aitrigger": aiTriggers.Add(new AITrigger(subElement)); break; + case "giveexperience": + giveExperiences.Add(subElement.GetAttributeInt("amount", 0)); + break; + case "giveskill": + giveSkills.Add((subElement.GetAttributeString("skillidentifier", ""), subElement.GetAttributeFloat("amount", 0))); + break; } } InitProjSpecific(element, parentDebugName); @@ -1181,6 +1202,47 @@ namespace Barotrauma } } } + + int i = 0; + foreach (int giveExperience in giveExperiences) + { + Character targetCharacter = CharacterFromTarget(target); + if (targetCharacter != null && !targetCharacter.Removed) + { + targetCharacter?.Info?.GiveExperience(giveExperience, popupOffset: i * 25f); + i++; + } + } + + if (giveSkills.Any()) + { + foreach ((string skillIdentifier, float amount) in giveSkills) + { + Character targetCharacter = CharacterFromTarget(target); + if (targetCharacter != null && !targetCharacter.Removed) + { + if (skillIdentifier?.ToLowerInvariant() == "randomskill") + { + if (GameMain.NetworkMember != null && GameMain.NetworkMember.IsClient) + { + // don't let clients simulate random skill gain + continue; + } + targetCharacter.Info?.IncreaseSkillLevel(GetRandomSkill(), amount, targetCharacter.Position + Vector2.UnitY * (150.0f + i * 25f)); + + string GetRandomSkill() + { + return targetCharacter.Info?.Job?.Skills.Select(s => s.Identifier).GetRandom(); + } + } + else + { + targetCharacter.Info?.IncreaseSkillLevel(skillIdentifier?.ToLowerInvariant(), amount, targetCharacter.Position + Vector2.UnitY * (150.0f + i * 25f)); + } + i++; + } + } + } } if (FireSize > 0.0f && entity != null) @@ -1346,6 +1408,19 @@ namespace Barotrauma } ApplyProjSpecific(deltaTime, entity, targets, hull, position, playSound: true); + + Character CharacterFromTarget(ISerializableEntity target) + { + Character targetCharacter = target as Character; + if (targetCharacter == null) + { + if (target is Limb targetLimb && !targetLimb.Removed) + { + targetCharacter = targetLimb.character; + } + } + return targetCharacter; + } } partial void ApplyProjSpecific(float deltaTime, Entity entity, IEnumerable targets, Hull currentHull, Vector2 worldPosition, bool playSound); @@ -1353,38 +1428,31 @@ namespace Barotrauma private void ApplyToProperty(ISerializableEntity target, SerializableProperty property, object value, float deltaTime) { if (disableDeltaTime || setValue) { deltaTime = 1.0f; } - Type type = value.GetType(); - if (type == typeof(float) || (type == typeof(int) && property.GetValue(target) is float)) + if (value is int || value is float) { - float floatValue = Convert.ToSingle(value) * deltaTime; - if (!setValue) + var propertyValue = property.GetValue(target); + if (propertyValue is float propertyValueF) { - floatValue += (float)property.GetValue(target); + float floatValue = Convert.ToSingle(value) * deltaTime; + if (!setValue) + { + floatValue += propertyValueF; + } + property.TrySetValue(target, floatValue); + return; } - property.TrySetValue(target, floatValue); - } - else if (type == typeof(int) && value is int) - { - int intValue = (int)((int)value * deltaTime); - if (!setValue) + else if (propertyValue is int integer) { - intValue += (int)property.GetValue(target); + int intValue = (int)(Convert.ToInt32(value) * deltaTime); + if (!setValue) + { + intValue += integer; + } + property.TrySetValue(target, intValue); + return; } - property.TrySetValue(target, intValue); - } - else if (type == typeof(bool) && value is bool) - { - property.TrySetValue(target, (bool)value); - } - else if (type == typeof(string)) - { - property.TrySetValue(target, (string)value); - } - else - { - DebugConsole.ThrowError("Couldn't apply value " + value.ToString() + " (" + type + ") to property \"" + property.Name + "\" (" + property.GetValue(target).GetType() + ")! " - + "Make sure the type of the value set in the config files matches the type of the property."); } + property.TrySetValue(target, value); } public static void UpdateAll(float deltaTime) diff --git a/Barotrauma/BarotraumaShared/SharedSource/SteamAchievementManager.cs b/Barotrauma/BarotraumaShared/SharedSource/SteamAchievementManager.cs index 24c3db01d..dd975c774 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/SteamAchievementManager.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/SteamAchievementManager.cs @@ -455,6 +455,8 @@ namespace Barotrauma UnlockAchievement(character, character.Info.Job.Prefab.Identifier + "round"); } } + + pathFinder = null; } private static void UnlockAchievement(Character recipient, string identifier) diff --git a/Barotrauma/BarotraumaShared/SharedSource/Upgrades/UpgradePrefab.cs b/Barotrauma/BarotraumaShared/SharedSource/Upgrades/UpgradePrefab.cs index 06f4c29fc..88835bfc0 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Upgrades/UpgradePrefab.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Upgrades/UpgradePrefab.cs @@ -249,7 +249,7 @@ namespace Barotrauma public bool IsDisallowed(Item item) { - return item.disallowedUpgrades.Contains(Identifier); + return item.disallowedUpgrades.Contains(Identifier) || UpgradeCategories.Any(c => item.disallowedUpgrades.Contains(c.Identifier)); } public static UpgradePrefab? Find(string identifier) diff --git a/Barotrauma/BarotraumaShared/SharedSource/Utils/IdRemap.cs b/Barotrauma/BarotraumaShared/SharedSource/Utils/IdRemap.cs index af7097579..6e086afb8 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Utils/IdRemap.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Utils/IdRemap.cs @@ -12,7 +12,7 @@ namespace Barotrauma private int maxId; - private readonly List srcRanges; + private readonly List> srcRanges; private readonly int destOffset; public IdRemap(XElement parentElement, int offset) @@ -20,13 +20,13 @@ namespace Barotrauma destOffset = offset; if (parentElement != null && parentElement.HasElements) { - srcRanges = new List(); + srcRanges = new List>(); foreach (XElement subElement in parentElement.Elements()) { int id = subElement.GetAttributeInt("ID", -1); if (id > 0) { InsertId(id); } } - maxId = GetOffsetId(srcRanges.Last().Y) + 1; + maxId = GetOffsetId(srcRanges.Last().End) + 1; } else { @@ -44,38 +44,38 @@ namespace Barotrauma { for (int i = 0; i < srcRanges.Count; i++) { - if (srcRanges[i].X > id) + if (srcRanges[i].Start > id) { - if (srcRanges[i].X == (id + 1)) + if (srcRanges[i].Start == (id + 1)) { - srcRanges[i] = new Point(id, srcRanges[i].Y); - if (i > 0 && srcRanges[i].X == srcRanges[i - 1].Y) + srcRanges[i] = new Range(id, srcRanges[i].End); + if (i > 0 && srcRanges[i].Start == srcRanges[i - 1].End) { - srcRanges[i - 1] = new Point(srcRanges[i - 1].X, srcRanges[i].Y); + srcRanges[i - 1] = new Range(srcRanges[i - 1].Start, srcRanges[i].End); srcRanges.RemoveAt(i); } } else { - srcRanges.Insert(i, new Point(id, id)); + srcRanges.Insert(i, new Range(id, id)); } return; } - else if (srcRanges[i].Y < id) + else if (srcRanges[i].End < id) { - if (srcRanges[i].Y == (id - 1)) + if (srcRanges[i].End == (id - 1)) { - srcRanges[i] = new Point(srcRanges[i].X, id); - if (i < (srcRanges.Count - 1) && srcRanges[i].Y == srcRanges[i + 1].X) + srcRanges[i] = new Range(srcRanges[i].Start, id); + if (i < (srcRanges.Count - 1) && srcRanges[i].End == srcRanges[i + 1].Start) { - srcRanges[i] = new Point(srcRanges[i].X, srcRanges[i + 1].Y); + srcRanges[i] = new Range(srcRanges[i].Start, srcRanges[i + 1].End); srcRanges.RemoveAt(i + 1); } return; } } } - srcRanges.Add(new Point(id, id)); + srcRanges.Add(new Range(id, id)); } public ushort GetOffsetId(XElement element) @@ -92,11 +92,11 @@ namespace Barotrauma int currOffset = destOffset; for (int i = 0; i < srcRanges.Count; i++) { - if (id >= srcRanges[i].X && id <= srcRanges[i].Y) + if (id >= srcRanges[i].Start && id <= srcRanges[i].End) { - return (ushort)(id - srcRanges[i].X + 1 + currOffset); + return (ushort)(id - srcRanges[i].Start + 1 + currOffset); } - currOffset += srcRanges[i].Y - srcRanges[i].X + 1; + currOffset += srcRanges[i].End - srcRanges[i].Start + 1; } return 0; } diff --git a/Barotrauma/BarotraumaShared/SharedSource/Utils/MathUtils.cs b/Barotrauma/BarotraumaShared/SharedSource/Utils/MathUtils.cs index 299e6d6dd..77ddd1d2f 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Utils/MathUtils.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Utils/MathUtils.cs @@ -29,6 +29,11 @@ namespace Barotrauma return (i % n + n) % n; } + public static float PositiveModulo(float i, float n) + { + return (i % n + n) % n; + } + public static double Distance(double x1, double y1, double x2, double y2) { double dX = x1 - x2; diff --git a/Barotrauma/BarotraumaShared/SharedSource/Utils/Range.cs b/Barotrauma/BarotraumaShared/SharedSource/Utils/Range.cs new file mode 100644 index 000000000..5d380e221 --- /dev/null +++ b/Barotrauma/BarotraumaShared/SharedSource/Utils/Range.cs @@ -0,0 +1,44 @@ +using System; + +namespace Barotrauma +{ + public struct Range where T : IComparable + { + private T start; private T end; + public T Start + { + get { return start; } + set + { + start = value; + VerifyStartLessThanEnd(); + } + } + + public T End + { + get { return end; } + set + { + end = value; + VerifyEndGreaterThanStart(); + } + } + + private void VerifyStartLessThanEnd() + { + if (start.CompareTo(end) > 0) { throw new InvalidOperationException($"Range<{typeof(T).Name}>.Start set to a value greater than End ({start} > {end})"); } + } + + private void VerifyEndGreaterThanStart() + { + if (end.CompareTo(start) < 0) { throw new InvalidOperationException($"Range<{typeof(T).Name}>.End set to a value less than Start ({end} < {start})"); } + } + + public Range(T start, T end) + { + this.start = start; this.end = end; + VerifyEndGreaterThanStart(); + } + } +} \ No newline at end of file diff --git a/Barotrauma/BarotraumaShared/SharedSource/Utils/SafeIO.cs b/Barotrauma/BarotraumaShared/SharedSource/Utils/SafeIO.cs index 201c9d7e9..ac830c575 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Utils/SafeIO.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Utils/SafeIO.cs @@ -138,6 +138,11 @@ namespace Barotrauma.IO return System.IO.Path.GetPathRoot(path); } + public static string GetRelativePath(string relativeTo, string path) + { + return System.IO.Path.GetRelativePath(relativeTo, path); + } + public static string GetDirectoryName(string path) { return System.IO.Path.GetDirectoryName(path); diff --git a/Barotrauma/BarotraumaShared/SharedSource/Utils/SaveUtil.cs b/Barotrauma/BarotraumaShared/SharedSource/Utils/SaveUtil.cs index 105395eb2..7f881cad9 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Utils/SaveUtil.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Utils/SaveUtil.cs @@ -296,20 +296,10 @@ namespace Barotrauma public static void CompressStringToFile(string fileName, string value) { // A. - // Write string to temporary file. - string temp = Path.GetTempFileName(); - File.WriteAllText(temp, value); + // Convert the string to its byte representation. + byte[] b = Encoding.UTF8.GetBytes(value); // B. - // Read file into byte array buffer. - byte[] b; - using (FileStream f = File.Open(temp, System.IO.FileMode.Open)) - { - b = new byte[f.Length]; - f.Read(b, 0, (int)f.Length); - } - - // C. // Use GZipStream to write compressed bytes to target file. using (FileStream f2 = File.Open(fileName, System.IO.FileMode.Create)) using (GZipStream gz = new GZipStream(f2, CompressionMode.Compress, false)) diff --git a/Barotrauma/BarotraumaShared/SharedSource/Utils/ToolBox.cs b/Barotrauma/BarotraumaShared/SharedSource/Utils/ToolBox.cs index fe65006e8..8d727bee0 100644 --- a/Barotrauma/BarotraumaShared/SharedSource/Utils/ToolBox.cs +++ b/Barotrauma/BarotraumaShared/SharedSource/Utils/ToolBox.cs @@ -12,6 +12,7 @@ using System.Text; namespace Barotrauma { + [Obsolete("Use named tuples instead.")] public class Pair { public T1 First { get; set; } @@ -24,20 +25,6 @@ namespace Barotrauma } } - public class Triplet - { - public T1 First { get; set; } - public T2 Second { get; set; } - public T3 Third { get; set; } - - public Triplet(T1 first, T2 second, T3 third) - { - First = first; - Second = second; - Third = third; - } - } - public static partial class ToolBox { static internal class Epoch @@ -555,15 +542,6 @@ namespace Barotrauma return hex.ToString(); } - public static string ConvertAbsoluteToRelativePath(string path) - { - string[] splitted = path.Split(new char[] { Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar }); - string currentFolder = Environment.CurrentDirectory.Split(new char[] { Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar }).Last(); - // Filter out the current folder -> result is "Content/blaahblaah" or "Mods/blaahblaah" etc. - IEnumerable filtered = splitted.SkipWhile(part => part != currentFolder).Skip(1); - return string.Join("/", filtered); - } - public static string EscapeCharacters(string str) { return str.Replace("\\", "\\\\").Replace("\"", "\\\""); @@ -640,6 +618,17 @@ namespace Barotrauma Process.Start(startInfo); } + /// + /// Cleans up a path by replacing backslashes with forward slashes, and + /// optionally corrects the casing of the path. Recommended when serializing + /// paths to a human-readable file to force case correction on all platforms. + /// Also useful when working with paths to files that currently don't exist, + /// i.e. case cannot be corrected. + /// + /// Path to clean up + /// Should the case be corrected to match the filesystem? + /// Directories that the path should be found in, not returned. + /// Path with corrected slashes, and corrected case if requested. public static string CleanUpPathCrossPlatform(this string path, bool correctFilenameCase = true, string directory = "") { if (string.IsNullOrEmpty(path)) { return ""; } @@ -659,21 +648,24 @@ namespace Barotrauma return path; } + /// + /// Cleans up a path by replacing backslashes with forward slashes, and + /// corrects the casing of the path on non-Windows platforms. Recommended + /// when loading a path from a file, to make sure that it is found on all + /// platforms when attempting to open it. + /// + /// Path to clean up + /// Path with corrected slashes, and corrected case if required by the platform. public static string CleanUpPath(this string path) { - if (string.IsNullOrEmpty(path)) { return ""; } - - path = path.Replace('\\', '/'); - while (path.IndexOf("//") >= 0) - { - path = path.Replace("//", "/"); - } -#if LINUX || OSX - //required on *nix platforms to load in mods made on Windows - string correctedPath = CorrectFilenameCase(path, out _); - if (!string.IsNullOrEmpty(correctedPath)) { path = correctedPath; } + return path.CleanUpPathCrossPlatform( + correctFilenameCase: +#if WINDOWS + false +#else + true #endif - return path; + ); } public static float GetEasing(TransitionMode easing, float t) diff --git a/Barotrauma/BarotraumaShared/SharedSource/Utils/UpdaterUtil.cs b/Barotrauma/BarotraumaShared/SharedSource/Utils/UpdaterUtil.cs deleted file mode 100644 index dcd806d14..000000000 --- a/Barotrauma/BarotraumaShared/SharedSource/Utils/UpdaterUtil.cs +++ /dev/null @@ -1,223 +0,0 @@ -using System; -using System.Collections.Generic; -using Barotrauma.IO; -using System.Linq; -using System.Security.Cryptography; -using System.Xml.Linq; - -namespace Barotrauma -{ - public static class UpdaterUtil - { - public const string Version = "1.1"; - - public static void SaveFileList(string filePath) - { - XDocument doc = new XDocument(CreateFileList()); - - doc.SaveSafe(filePath); - } - - public static XElement CreateFileList() - { - XElement root = new XElement("filelist"); - string currentDir = Directory.GetCurrentDirectory(); - - IEnumerable files = Directory.GetFiles(currentDir, "*", System.IO.SearchOption.AllDirectories); - - foreach (string file in files) - { - XElement fileElement = new XElement("file"); - fileElement.Add(new XAttribute("path", GetRelativePath(file, currentDir))); - fileElement.Add(new XAttribute("md5", GetFileMd5Hash(file))); - - root.Add(fileElement); - } - - return root; - } - - public static List GetFileList(XDocument fileListDoc) - { - List fileList = new List(); - - XElement fileListElement = fileListDoc.Root; - - if (fileListElement == null) - { - throw new Exception("Received list of new files was corrupted"); - } - - foreach (XElement file in fileListElement.Elements()) - { - string filePath = file.GetAttributeString("path", ""); - - fileList.Add(filePath); - } - - return fileList; - } - - public static List GetRequiredFiles(XDocument fileListDoc) - { - List requiredFiles = new List(); - - XElement fileList = fileListDoc.Root; - - if (fileList==null) - { - throw new Exception("Received list of new files was corrupted"); - } - - foreach (XElement file in fileList.Elements()) - { - string filePath = file.GetAttributeString("path", ""); - - if (!File.Exists(filePath)) - { - requiredFiles.Add(filePath); - continue; - } - - string md5 = file.GetAttributeString("md5", ""); - - if (GetFileMd5Hash(filePath) != md5) - { - requiredFiles.Add(filePath); - } - } - - return requiredFiles; - } - - private static string GetFileMd5Hash(string filePath) - { - Md5Hash md5Hash = null; - var md5 = MD5.Create(); - using (var stream = File.OpenRead(filePath)) - { - md5Hash = new Md5Hash(md5.ComputeHash(stream)); - } - - return md5Hash.Hash; - } - - public static string GetRelativePath(string filespec, string folder) - { - Uri pathUri = new Uri(filespec); - // Folders must end in a slash - if (!folder.EndsWith(Path.DirectorySeparatorChar.ToString())) - { - folder += Path.DirectorySeparatorChar; - } - Uri folderUri = new Uri(folder); - return Uri.UnescapeDataString(folderUri.MakeRelativeUri(pathUri).ToString().Replace('/', Path.DirectorySeparatorChar)); - } - - /// - /// moves the files in the updatefolder to the install folder - /// if there's an existing file with the same name in the install folder and it can't be removed, - /// it will be renamed as "OLD_[filename]" - /// - /// - public static void InstallUpdatedFiles(string updateFileFolder) - { - IEnumerable files = Directory.GetFiles(updateFileFolder, "*", System.IO.SearchOption.AllDirectories); - - string currentDir = Directory.GetCurrentDirectory(); - - foreach (string file in files) - { - string fileRelPath = GetRelativePath(file, updateFileFolder); - - if (File.Exists(fileRelPath)) - { - try - { - File.Delete(fileRelPath); - } - - //couldn't delete file, probably because it's already in use - catch - { - string oldFileName = Path.Combine(currentDir, Path.GetDirectoryName(fileRelPath), "OLD_"+Path.GetFileName(fileRelPath)); - - if (File.Exists(oldFileName)) File.Delete(oldFileName); - - File.Move(fileRelPath, oldFileName); - } - } - - string directoryName = Path.GetDirectoryName(fileRelPath); - if (!string.IsNullOrWhiteSpace(directoryName)) - { - Directory.CreateDirectory(directoryName); - } - - - System.Diagnostics.Debug.WriteLine("moving: "+file+" -> "+fileRelPath); - File.Move(file, fileRelPath); - } - - Directory.Delete(updateFileFolder, true); - } - - public static void CleanUnnecessaryFiles(List filesToKeep) - { - string currentDir = Directory.GetCurrentDirectory(); - - IEnumerable files = Directory.GetFiles(currentDir, "*", System.IO.SearchOption.AllDirectories); - - foreach (string file in files) - { - string relativePath = GetRelativePath(file, currentDir); - - string dirRoot = relativePath.Split(Path.DirectorySeparatorChar).First(); - if (dirRoot != "Content") continue; - - if (filesToKeep.Contains(relativePath)) continue; - - if (Path.GetFileName(file).Split('_').First() == "OLD") continue; - - System.Diagnostics.Debug.WriteLine("deleting file "+file); - - try - { - File.Delete(file); - } - - catch (Exception e) - { - System.Diagnostics.Debug.WriteLine("Could not delete file \"" + file + "\" (" + e.Message + ")"); - continue; - } - } - } - - - public static void CleanOldFiles() - { - string currentDir = Directory.GetCurrentDirectory(); - - IEnumerable files = Directory.GetFiles(currentDir, "*", System.IO.SearchOption.AllDirectories); - - foreach (string file in files) - { - if (Path.GetFileName(file).Split('_').First() != "OLD") continue; - - System.Diagnostics.Debug.WriteLine("deleting file " + file); - - try - { - File.Delete(file); - } - - catch (Exception e) - { - System.Diagnostics.Debug.WriteLine("Could not delete file \"" + file + "\" (" + e.Message + ")"); - continue; - } - } - } - } -} diff --git a/Barotrauma/BarotraumaShared/Submarines/Humpback.sub b/Barotrauma/BarotraumaShared/Submarines/Humpback.sub index 879c0d4f25ac4aa794cac744204c4263a4a9a1ca..79b880af6f902f324c992d577e9839c294cf4c78 100644 GIT binary patch delta 206572 zcmV(uK4^2mk;80000A?7PRZw}?p%waKmY`Od@ld*kxVBN^G~P{|Cf&c`5(&OPid01|KpK` zZXZ9u|F@>={-k39ei*7h3FuUp{~gAd7ae#)l5OMiKa&yxPJi!_58xZcyf@R|XZ-tL zf3mvB+9T=y^DmU52!cd0g8kQ@X=$?JKmVc`1o;=3q-JZ9?w_tTVEU)z9E$uu|0=Z!b;%s_w?|=T)1ia;*$Xl*P4*X|+{QBir;D4uoew9vvi~s&GZp=JzoJMSZ z_i_T47_2)NQlSm-sDx?!fY<{szeo3kwIb+}TCY{ZyLGhaoa7S@v22y3y;CEt%a;+i z`de0o?|030agSwlyV^Gz3*gVlU>|pyUDG~{9`E#nituv5yTLSVr>1rMOLJO{g-`kS{qfs5l zseY3oRGjendyh(q+{8J5zprstb-o>NO;r<51k=&}ZBww?^Zoa$G5GFpG(dxY+k3U# ze|`1ucPGR8+u+~!RLc81lkGqK`L6~+d-2B+|9|=F|LM#BnV0_`t{3^Nk%aT$2)S6> zlLg|4)zqMk4)w=i3q~^?v-I>i z=YUHZrtsYTy#Hyd%8c^kMM)IbdiUjQL3MAjXCjPxSi%;PKHDtdo1D}ikeEtSArNqu~*Svo2JQerX&LfQE zcz?%BT5oQiKa#~Gmh@gxMMNq2M;!}`OaIJMRb6k6Pd_?Z)J(b5zV(Wg@j)QE`DZ?2 zCze$3_~p%tUpT7HR0(Sn%&XF><4ai8aDOBRi;TqM`1|e*sCgH;P&T_J!jKeU9pXD{ zqZ5iwR|_1_t(L9hZ*PcL#Eg379NOajOr@Mtub5^xPd`|q_@smK7g>4j?#UDri``M2)at=X#ttY9pb}BoH2H)H}-OcMl z0du?y98FTtu8-(v-}H3^{fy2+wtpwB`AsjMP<-Cbug~(P_ObFTzO|G4ixaQtnX%oBfiA`vprO;RnXWy zDvZg(P9@oVl~ONbeXSA~pc;e{XsfGQ9^dxZ!jVFzJC8RsqLD^S?YMjyl~dG)3);f4 zA|F3`jAANGHm>wVN7D^c2-b-3f@|9N#Y`htLqq)#z2~dMQCM7wQ8w0wN!Wcv+fZLZT8WZG6fIzv}T5c!^S81Hg@9 zrf=EDEHQwJwo|a;e=Z?tvmYE%Ryc*TcF#f_op9f%(TZb z03Xf2cxHY~NB@WhQ)-!e`=7?oJi$-v*INg`bUhp{%{{q!m#1 z$=fLO@u=Et_?9BQYv$+JHi^NO4L99;wDwVLW?{K?E!iDG2`tjWA~4WjfX3gD6--P{ zjqG>8K8=G{@ws(UUK@?GJ(a|(xr*bJfqP+=(zm67bAN)ei<38%Uk9BGYfUbv?#0{n zi1!u{9Qw)%eGUJfZ4&jO$4Zf+c1OR_+!ooPezCj$orBWCUdsy3fy}6|WK4-L$C4J? zAeiFY{oH)9ap>D*%sMcraFb(|(aO_P@hzIA_nm)W{)kl+pQ+1}gM&CbeT z#%@QP*Q``^w2JKK6saKN5wB2ez#= zBBI=Y?9*yC0*yl5Z09}jKcZ9I$>19&0j@0awj``Zd{l@zR5bazt9zhc*m>j3x+9XU zStJgTgxw1G8H^=Th|cYot?h1y%xQ>Wi$I+PE)sCEfKjkNjR zj&S4QyH+g*_gsNeIKpi&;st|~KN5-du^0c;V@bYOrEEUFUA)cSbeaJgl-7t#vE~yLH8h>%)pj5vTr@E*d)s0>;lsb!k?z$Rs5NavT zc}&%h-+M>5SlV+oQ>D93=2pZctVq0=KJ`+sZ{J zS}>|3jOG-~+gJfVEL=nYZxoq(Qn~##rJ$dR3d&pnP}fqgyz9kMIxk*V+AV3g4u983 zbylxS+w=-2Ke?0Uf!ASy$W9jm_VFQQT}vfOG+9#E{?HJYWt*k2<+3f)8)1aV%KIhc zJYkIVbw@Ho&S~`FvZv95hliDQgv;M0**I~CwT3G=pt3*qw?h>iZn^hd5N{K>&ocbT zKulBb2ZYd&MdUaW{pyQWu%z5i5`V>UwO15;iFwN&DWTqX`z57Lx)pRP z9^9X^iJ3OU#Sx;koD4sXg=UffrzRW91sKeg}Ue2g4i#ql^?;Tki#Unr8e zI1sKKQKdo$6z^^+iL(&#n(Ehic*fmmx3TMjAVAXhlWuwVQ*ZJ1y?2;K2t`x>+G z4(a(%#d9Q6Np>0z5O?z}&8#NMlSl@wr4$>YOsah$)X` zE2gjasrf(uRlK4-0Dp)Wqg14VS!B;nX<-lQy;${V>3p6eqa=M*`8Ich|GH@DQTCx^ zwZh$T5J-wV?*us4L`Ixh;Wdh+1HYj|qZLp54A3IygP+1B#tL>Nl67qH$8&zte#dkq zDrZ<(v=7+IKPgCB+BLoC?!nn!cG_ z~Mh=H<0>zC{BXqJPlTI-BMv-vy7JZ5mOy zLwkrWjeBi2L9q+7T63#tnQJuoTGq9PBTTi~mzpAukeUSiA9=&p5hK>q$?7$p0$f6;SN4HR7E&@hEZp>2aQIqmJ6#c0n{r6} zm9Sf8;W7n)^SHl}6Dw^}Focb7=X)`!@#EOd%Dv{*ul-u(RDb)D$FgIcT4D-iVM+|uKv7#r zw{%I|p^V?_QXS}Xx0%!B;juI_|4r{bT1jW0L+5RRdVE{jSWJUzZfSdSUV5)bmcBWvVa!JGmg zu*2mCzuhqWR{534gV;-0UMFZ$VJXtfsN>T2L|LxN$}t)al3&S+_^?~-63})+WXaKq zg8~NPGfdrJlgrZdFhI%=e-PqqUfgdlxL3s@^?zr3i5Tx~6K3!$)-MX-5i zHh;l-HDP{f9Q?JF7nR|k!t0@i=#H{59?MPv7y1$3hth4B?l)L8Qx=j-7lxVz@NU_b**^5jHyKOwZ zHI*tYnc_*P{Jfc3tqo z=1)y$bE)*X=(22Dzph|jQS$oY7I^ij#@b1%TkLpREFX$<+LD%cTgh8$K$(DQI>{Z@Jf*Ouv)f7-nHeU4{%S@v)FZ@SW&>LxC=&w&SsPrvv$Et|4;g!iWh4c_ z`&Tx0BG3&4Vt+Z&LEZE7LQoZQM}J3pz1qI*7)TYkJ)JRQDPZ!)S=P1cy}2zaImev% zxEJ7BtWQ+5KdJHqfL3q+u*=9`a`5El0rqsMcW=}@edw=7xdk(~5 zE@mo?nIqWqwJ)=^RteOSaYX~yONQnKBfm>gdasY`waWhN^f!GJM!1OU0~`s1zb`g1 z@4egyie*}XGQCIS`;|;zapdMW@A-T6dVJT9DDu>X28N;4Aq+NiP5KR(r`7@4Yd^#x zC)NJsR%slu@t0*nrc7whIe$D&!tg1zppfaGYbll2mjW_{VON%&zg)d@-@rv1XIv?9 z78fZ1%2s@V?Zp5f!e$^F@WPl?uSYxZ(;6eoPlHXI9^`nFUuXRy{;S4@t_TAlv1k&Z ztHdzi<7bDGK_`0RR9Ti(P?asqntf>Y?K*(6{gU;Bj=cnL$oL*d1%H?O4iuESuyc+_ zxU_J_l6ZL&!~A@%jTMQU=P&j8Ax-tW;)sPgfGxiR0?(bN_AXJHb^0#6)u_AFjg}bu ziiQRqj|cgSPn#KO%V)0yrV7b0U!NV9NH_NL?kQ1R7r>KbMOJ(e4o-oEv^5pd#RDxV z>+scg)~UWV>y7m(n}2zmBq)iUWXkQ+}NF-%v zI6Tyr&6#o_PN>W1=pxMvNJ75)X~IFb7b|zKhuHxC3OXPitbYk8-fAbOis&E!w?00a zcF|PpDS#qQJ&@S<%J+8V$4v2Dcdii$&!FbIpx66yUuGfT{EF@`{Jp{S<`arR-Ae6*gTWA&>M!`G0+}-Y7)u4rHUa4*w3to+QV~}Lu=x5EMPaBw zA*L#kmf}Y|6MyjeEK5E>PpCnBhu??7NRBT!566LwSm&W3uE&CYz6eyO*kw>#OTY)f zCnpX=$X1?C2D4OvNu&gn;PZvF8Y28$V$$<0$Fyg@wPx=1XVqs`{;>}{qp;q2Cf21N z_q`Qc_6xom`~BSSMa45vHD+uobrka4tv1YF?s$BYmVYNQzrO`p4m*Ue%A<7wYB(H% zCCYRR{Fto`;(?}OT<|L=;ap4cJ7L*$`Wk7-BR@DFm}7GM5U1fVtxP9AJJC5F>y3Ou z78-Of-s=&ww@eM!-}noAU$Xqda&e_AmyDdy_b~O_IZF45O%)y>`%H@9U=uEgoql`O zr=KjywSNVDunNg{ogIYtd$3Y0aOCl!(8A*ZPyvVTYiDO+{?*G`!AZmNPi!q(wpno}d=A(U?0qV~|bAP>ADCCI}=0FhK zV-md;Q@$VU(680V9qKKI6+l~$d|)dRtR*Cd88jXT!2>R<&mL9$-L zwNzRnt1vFmIG%L3{Uv&$rIOkvdQp$j&ujb+Z~e=novi0&S4^mUl~;j%_Jl!}HV5+f z*kVijv~Q<|ke}4vU!!GJwRUuaXRF&4KYxVDeFOfLO#RD*%O}V5;=CIgJbx5)Zp3-C zINFWB^CxIvsHN5j_Xqp+E-eO8Ld~~^WrFfAE_=H+<__?+ZbswhRN+~rR6O6l^0b#) zy>7XdRiZZiFdqjf{XgO71QEVrG_CM*yht)LmnDcE3|lZui6xF_)$^$E*;_i_AAgJ; zpBjbcd)rA``!J|(`r=!tPmFYT~NbYUz%7oH%Ve|z-9xNMFxN&nuZ zG}%-oI8fP65zn+SC2xB6LcojO6gRYHf+^m{I?geb|32MxgL?ByT3 zY7r01QbT@S4o)*UF#VkzSM2%$)_)ajqz^WC1+tS(>i~Ze_)$=annscY9nClR{0kK^ zItiTm#o;8svmxmCu;?cG{$f6F0%_E-A%?ZNw3DS2Cx6@*Hs!Z= zc?KyP7*vIIi;A5n#Yh?=U|&%Ph8y5^+c!j6BjOX_cus)VAuWk{TFijKAH1iisv-0q z|5@`4K!9m>^3)I9t*?Uj0esR^%?~C#-)u*Kod?v?FQ^^%j4pm4yI-uy+@ha=Zd(bT zH`J%8sL&k-ECn#8{Cm*c<9{1=@jM6dJ2!h`@&)>f1G1O!il4G#dy}Lbuh**5;JRO_ zw-ric5`m1eR5?v^yRmye4ZcQT zFO9_y-QrJ7E#Lbc6xf>1*A|*B`m@}Igo-1~K4oclVQKmHLAXnVzkfCo;C&|J*&GrQ za0ChOI+B%~Wr6hl6#$E04!~=G8mfAnys80Ej>_iNr7nN@Y-nu0Yn_B44q2KhpAWJw z;fpG9##5MtOC7=#Z#j6#Dgk^n;NEKypb^m5-2OyBi4Hep_LK-L6R%m~V@w$O_EV!p zc*>4W56BAUXa2_QTz}SqEl(YA$z*p}RsVmrnb`B6uoH~@B$M0MsYU)#Gb@X!Zc5*^=gYV#2UJ_ ze2s9VMFW)aBF}QTZ7Qp;kBqEXhbna@!AOP<)14l&oXMw3o5GZ7y)~XEFB&N`k-Z=Y z!b3H1j&prh@qewmv+3K^ps4dw3P^U>^P(u>4;lkR$`MeYl*MJQ%e-d1KyYgc5Wx$Q z9}vHngLpB6{lf#Ghh*UKEGrg-2SRGD2cN)~FZQi~fRj~0%tY7#wLwrAu1k-hd-7>t z5H}Kh^7(O}tNnCp4S=BuV05$WyepiolrVN5oN^uN=zn3Mx*l0cBn=M?b-wST7ukM+ zf|Hc2K5h^CHIW-3+%Kzb;5cZiNl;QW_2a$bCq3#PNv38B^)n@y$ClcFCDZS?_>M6n ztfq~uc~jJp=g5DS#sxhYSo)U0yQ>6JL^`&h~9`2ztm3quEDA?Or| zKvteDirxUz)X)nj)$}($mMLR&OgF;Nw`L( z8rGZ7uA^LKM%L~kSL0g*!hSG9#=m1{XKkR8!Mgj_F(@K5S$2&u1j?&3CgBw8u79#P znD%o)Y~lR^nV6aFY_E7ybb-K%db=b7{c50j%ptl4lS&Bb{3$bLiS$T+dT&du;{iDX zSB7HO!o_u~x5+j@AgFd&+YA7P6Hx$jThtvNX6>KI1(J@yZ4^iQWqyHGaTV|<@qkSN zH2+8_%!>_aZIFY5k9&SlNLZ})9)G;jZ)te4wVCk-ue0c>c3$Cj{MJTCSqBp5I?)9Z zBAWL+y*pIrUv>mc&Q~rL%8UnAtQ5GyzN&*=7wYyaHMoJt*C(y`SRid!0o+@$En~$U zc$?ofIp5Z?4nU{H$JV7ajit%8IN^uj?6399YpS8OLkDO&xO5=<_ZN;Z7JnPe-yAeT zIO7!KtgTo!i|5U7kkaA&xX<##6&=bW`~Dy%U|dln*-TkKgIQ-zij7TrDM_G87>XAc{gmnuqzI% z`MNW1dvKZV?5=0LP!*GykAJdu2WpGuw~3b@33M&(1BGmBE-LD^W)(jf1=9#@ zpe7J5DQLWOV*wEX$d22_N>RnSnd@B00FYgnT&lsie?6P@uQ!m}R3J1E8WxS`R&zR& zC_K$o)Q!K*;BnS4W5Jz5D1LU8> zSD{@O&QKO7j2f`RU&W{ujrw_F4PcE@BQoEs{}zs!Dd2nT^!y4xAG3MyR!fAO82!=> zUu~{0cLRc7ZKMhmw14S;wPJ8)`jhz3Qe?wPH%?M|B|j2qfy5lJ;hiXD|=H%${Odun2!3= zfUIxZ_UXViSO%9~+VnFpr2v*iMWhELjtt}642UP9|7cgQVvvU4g(91p-%2k7V~)iH zz&Jk8F&N4X9e=zc8+`x6hmUPoZot#1E641coJeB0l#BF%~h~6tUW@a7}?rsEc zL*;kPv*`?JXP7c=Vtm_>P4dc z_ivk4Qm@~eYex~#Xm60U`Ss}{5E*PYY&1O&`^dJ=b#)f4N~uCL z27)#19)2b5N@}7C0O^eq*ha(YR9*g=LzzHNbM~~##M$nkZQ%wLNPz%fp9Rx2HY$j6 z0HAHM27ha16Z(CyqBErYt%GsOi)A{x_T7Ga7wdwqAcF@}^nL3~4h-_4q+4jf`+`(| z*DQZif!co^`E$o&+5B(B6x6r&N6Yft<#nRF6SuTH0t*lZ$Hm&Hyo-gU$*d6&v0i@e z#Oa3Y#TA1BseVDe0A3_Dy-UT_YviPpA3;vTHGjz`LV7Ez_Zdi1M7;_W1#H8=<$G*_ zyaDTobFr&czJNd7Qy?Qcd`$d1c)q(#OIZ3DrMOda_)yu$UnJ$r4OEfP@Vq%Sb=g{u z7Ps4V>qt}&(l)lH6fIou<#kZMG~gg6on)mFVm0TrPCzCn_ZqTv8r5whbPvB{T)H$m z=YJ90FJB2^z96Wf_u&?}Y%^n}pi%O(UAZIMk(z(d)Cmp%eayRpfd&8#%b{{${@x2ZjTf7n+cz@{CYknQ`K%visM7}mCw1coav~~j(*+hp% z6dC3rcn@DV0TQ?3lOnUBzI81AFp5AxS5Y0R(VJP=z!kOy`22Wy(qO|-vo3v6Q1Vx!0E64%^MU9>}g&-Q6Cf>t74nO$>7REKH9eJzw4^7*C z^%yliRS*bc3zo5H`Z{B{kx$^jd+ua|6s8`!axrVRU55S@eJCkdiLus9s)+M5XVn5=N&# z>6S!qQ1a{{s8@{NlwKf`hw`*Jl;&79mX0{=DMFoW)wP7XTd;GPt)5i zA8E~7wAD6S!%ZqV5idsGC;BF1bKhvoDFW-LSEjH(R8(T0u0|~!ooSYcAAhs=>-l_P zMKpzqhJ9*N0#tKgz&Ygu4XcC}r2`=vF4{nlN_Ahh+Bo9PtJZiw{whUk*kbME`YvLX zpG=|+)y34F5%rI3jYw55>EuZXHKh@S9w7GO$2j=v`->8PGjueRf<~x;_qGWXZsM;+Xe@8vc?w9Jb3UhC}p zm^L*SuU7yfDo+CKm+z@_+y(S-u|Crm3*;Hq_3gb9>xM+yq*xDO@eOatEdrN$P5@A7 z8kd5C?+_ff%x3F~zJDVR;iSm;QFsURmq`c!t3WxQ>N{36!r7UL-DqS?5nkA_&zIDi zgLw9w ztEz(2ww>xWg81`$o&#z%lY6?rW1{CppCG-0c?&wAumS@v?{f^8UL`~#^o;4=l!K5! z*cX_$<3n^+m=;I3=K07<+2>x zOM1J!LR};yf~aVigHU-zIwxnVX!j%|*h=K-^QBU6#?cZ;P8X;)#1{x2fX+I}dBo9# ze%^84zY|SPX~UES(LB|9wQk?aw${k1pT1C>I8~31Akt;GeqdFIuDHmncOj7Wy;UD% zYu(H2kbfvowEeX?x1+k`*Bic4?|wu8x*4)xKSm71MDu#9#n<};eFAbm#!q^j($HNlHC1NkW$Bxrp= zj~U_z5`gI-++{q2^X^TB$lCAh51T$bDo+x36Mt#3^xT>L$~W>;@rur00gPO8#W#}| zjYR@{aT2n-Jn;^0(H#G<{NF2&t}5cE?~xd6*KguL8?~$@JhOjH=%B(!gzS$$Xg22z zU-xvr{1JjcU;#heM2+mHRYwkhhj-MwiVz7vb>&h&n4N%q=9<@xUsr)luu9p19P+OS z4S$LTvs`SgN$z{PT)Jk>t^JZDe%k>&gY!rlAgc(MqyyVQ0@1Lc+MAPmjRH}tXj;Cr z27Q;i`B}pEIjg|Srwwo{BFGOTamo8&O~uu78IR4XSJ^e?Kw*d0ss=(o5=+O6wx0Qi z{UUHYq~E@B-w??5ECE~Mm9`k`;!gTh27mcIHYm=$8>P_WxAW;epGGdsAOJJ-VMm*c zGy`Jt0{mlAZa~IxViTBJ+?&^n*IapEGi^Y^08pLe;Rj?!(Xfv-6Z1h(>2LL8#`hcK z7H|l z0p`&yvgq`k&rGRbj>8K%Px`4}XZ|6Cg4D*+j)`u6G&Ww=zX79tv&NlaNzdpm4bi zS(i`0Bvv@cPz2%ACXWMiYbWF(kd;Avl&%V)g%AM77O41zmNGlsSViw}tBsL9Nt{%15Va({h~tX^%q zFL%$ z9P`tnmwdre;@|l?VfSP3)PKyYi^^ILq>rp+!-H!d2u`j55yeZe$+7VxPJmy`Zv&Rl zUFuez0crRB`o*b0ZyY)1D*XmtMBzCONMrILuv&g^ryIv0<sa6>%;Pb%wRMU$$$I?AQWghfrA4% z$@AaPFN(Qb?nTRKWRK&O&-`{(PWqbE4}q<>$!l7zzK5QHta@ z*Nty&eGu{PQ{U>bNC9zcyq5xL z{0bbmP-M>BWsn3H5`Rz#$-xrdz%1OW0LiH9J~QTxsf|*Gqm^#%X3gML ztwf!L%9{3k4zBJh!@5F#>tjVAhSu#j5L(A7Cc;ENzsLGP1%D@O(;_NJx{Uw+g9Gi< z9D%n%#P~WN&TN6n?SJpni}TDFK6N36!snF;_fB@Q%2~t1AI`U~2y>1_p2>6&ekHkc zQHRdrA1HTTuqNAhB5o86OiVL&JA9S+H*h0uus<^Q=X-rPe>AaJux68ckQhomuorj6(cyp2*%YQa0-x`{!`tp`8M@7>*vRf(gX0-idd@_S2t_o2~^-eG>6k0*&9^wRV~O z0%j<+m0%pN-z8Rvs>V&-XYj(DO?As!3xnZM<$k=`0wQ=-dS{Q%Y!L_tmfqV(2N9IK z1MDxP@wDp`*vG?uK>-e>Us%=k*m8A(NinFdMt|LSVDikIPmk$LV96S^C7(Baxn)SU z&Vdo2_pF({Tb>}q6Pr?Rp@jC$l3??r(o*w|noC$huu7Pf@rK&7oN#|Vei?s=?t}`w zEZA>~i5YOv)~NKJrtRl9OqQIPcRr|e5{mC*qGP;L-5lGoekuBQHPr6}c|FzSBP`wK zeSbGurM0BY)2KxptgQx`v2 zIfZ~?KOh!PBvqIdSO-de&!E6E3zopc2B5yJn08@h3=`>ZS+#yHxS3OYe{zP=gH z@j`?&BgAr8Y1+UwjV6_Q+nPjvk7bBJ34g#au)I+~j>yT~>~RkPBsu<3%rB(TBmG4e z_WGEfk2Eh>c)vF8B|z;Y0jMuo#(biB*QbhWa1n>do&VVWD}$U*&i&qBVn+h~iaE%B zrJ~V4sMSsu$Q1P$M1}>upoamJ%h7GJ$fpwk*UlOW#&lED6XE*^K1;rR@%TZ(Qv`Fd4XqBXEoVv1iJ zwHEO+fnEZIgobBJuAS_RV4yk^;Z`z|o4fBefYw*Ovq4Ldj z8tqlG6;`jnBNZ|F%G#w&z)z21`Yy^i(Ekw~o}mJ(cc8H_y{+GsIDVR-vjHJ^Xqv^$ zo0dACcSl31Ngrw!;p1rAw>Hm)ky|KpBvS{#=+}8whl99MNk#{Jc7MA?vnaK}IuTWa z2l}+7X<2a!M-JnU8YYFo(KpBMRM#$}F^dBPCkvoIubuQ5%^~A9R|JemW%czz!!4KZ zy$W?}z+M2PB~NLkc7R&2q>6ibWnKyLA|?&8mElhCB1UAhn116}p}$Mq_Cp%j0=~V* z_C>lNM`bw8+{)d6`G5URaZnSGQ+>{2s3khJYL^Sz2w}P)GeZpJ_r=|^^lhdE4ZC?V9_}8;w|`_ku4J5W*cq>(_kO@f zc-cDR2fz;nW`68njLU&K1Im4j{C3YY{2yxUj#_BN&+wL0!f_h}SwPqz2(452!l0Do zj*D{1cXYZ9q)diF6$m?1@^J2h|3%VyY&nVqQS^gY;N21@jIhFr9o`$^;p-=>r`L75 zB*@H&c=tk0dVkfSZyH!{wGK5bShI{Jq+;1CMK6-mWyW@v7}&wv3EaPg7MB#s#GE*HSZ3h7tqcB zDn~cL4r$Jb#p3xxCG!pvgeS)dh|suJk}i zP}c>E2Ov=@BCIao`n`U`rqPRT4Vk+_2=ck(>il5V`RPFqm#@J2-l_*nPE*X(Nxw81 zjH-XH9MHTcnF)@Xq%)p2RDZd>@*8}7$?D0F;&ymnbm!jY7jpraZJRrk;)wlHyZYf0 zr4bloW`E11+c)t9i7YZQg)DxKt^oOWdM!o9pC06C8REJP)6-iI7;}^yK#NpbA{yOS zL&Ab?1aiUN2dwndm7g9eod?{+6ghzM+9FPQ5@qfkMbF1}kluze7&(+CteLz5y4@>X0 zU#9UnJhKxERFHnbY9r&E790}i3FLxSZ z<7LO&e&~Z=llZ%RjO)Pk?J~T*j0#N>*iz_IGfub~mMHjoC|^XZjVVBL3(!wJB7D?!@L8k1cXY7skF_4*DU+brO>V!@D&svd+Z;RfdraPS z#U*p^&wZ{Zm@15w-+af-KKfGb;bA1atiHfhi9(>jdj9v*E&FN+gy6A{;W7ePSHwac zeuHaf7#`{5tbdSw%;p88?9x8!Gk|&n zM2x!Z;8o(@OSs!=2Zn;zjvB|L0bA|$ghbpkHBl;A^zlhY(|8(5gbDZi+#!V0$=b?* zFRIPhXl(NLauVSiun)?H3jJy?U4QB!6Xm1o73b3wqR;AsDWKT z*h5o10!3rK7kgJa&-K(8HX5XaAA@)Be(xQa9nTpE6Uf=FBlILSd2*&7(|<_MEbnv8 z5+68ZYvJd^Cwo;*B6|KSG!Rg1&`Z20j6aE0mu-dY@SiI&rg59oM88!wp?~M$A+{QK zsis)9oLmI4&pi5h0E-`pCz}OOoD%Xnz0dhbANKGTAEm>NU^}#)1~Q+q*Bnc9c+NKi zXU7j|?_qH0ja0xO*pVIq+kZep2Rpz;T^~6R7a|N>Zs8_{*>#MY#G_&7!5^l`kPv89Bq9=!58)7~L=o+IK$VHi(MQ_{9?kmLQy-CTa&!HF1R^MB(Kl(MTKz<*VM zLap-#6E?sU<(+ar_pyNyuD$T}?Fgx!sRB4vW10u7v>1$T{lSWE%#cG?11UC;(ed${ zGqgi#h`{hFD+(kbU?8KJ<&X9t!E<;QtS^iN6w8u)A#I9nU&kPGaIac@hnqkqwRfC= zT>R3w@cgt$rm@gKF@J`5T1vcz6I4$ipyk_9X9j&g%fSITqAc_l(Pk6Qg)b}#lp)j$ zq(V{FC=Edp;A{<|5r_g_DKjvtp?efKUFGjZ8dOPQ+mfVJQEiKcs)| z1jx=TMY{9=xCD~PefUZLv~1|z%F0d+Lc^h_6BjoDqUv-ss(+^HGH81yw*};=*biEY z)3D!O&<{yS9rvBlcH@3hP;2+k>E}DtFI#Y4ChsS^--zpq^@q$!t#J-c%8@+-aD-#B z{JeffJTc#55)01q(tM;0$Y|;B)#N!7N3fdx=G&(lz)WCYg+Yn>ivX|DJ&7_$TuVs+I0SXZU}}rErazcA2i%1mbk=)T_0bT z2uk&>lp<{ijE;ib)Boa<;vx6aNy#f5jN`|f{5LUw^ig@EUvoE0SsQSV&SPIjL@~TC z)cEhZwiPYR&mG0_KZ%FCrmu{JPq_xTm)e6^9(a)-Uw>?qZ(8P8EX_GTQoGFq(jbOf zS5}(xCB}L4;<`q1nq^y=nkFFSRc7(_gBs!HL`AIfWkMH6Repg*0Cg?nEx0?tkrKz2 z1-Kt&j|0{^T3AFRXM+%*C~=SS9OjWuSCn}c#%F1EF#@=--wl)UYPm|B?(f#EDHM)= z$5`F%k$+ghh7Dvh2H+FYzcAJ~4tS3EXpRd}eB`j6`vfgKq@a=gaKfkMlONfv$HVOK z_p0`*D7FFrl833Y8=leuHe?XS!1*z1>n;~`YO!DJQk*Ie;9^l56?d9Lr-rqKv3Zp9#Q=434^|aP~sm0TmkDYCyzC zHGlH>AM}E8;6Op!e)X$VEWvsv1N`dz@4E^rquq)8EjSn$q{=|fmSi8c>`g+VeCH&^ zgYjXpl)U!REHKtrf&S76TOXy4rVvc;R)vp1@}27Xb7xjSnkRq0frO6B^E*pFP>9Qp ztWN}j@cTTAX5jv6DbMgvX1Z^$q8B{#H*a(vnQ1@XKYt4z zO^F-V62&&cd4&w^P=7hR*YnGz`4ggXA+60D zsr9c&&?&5o;kL)u_ZeCY-G50~CDGuEZe$Vm*XJ|t0z8#=A)fmX$Aht;&x?)04*nJj=47{U8tqaRLdhM|wd( z^9=fvGU(xk%K<8v2V|5qJ7BQzV>C_v#;?Qv^d+G^HV%wpFn=?!(hM|(WXFGLz8=O~ zfIi*N(RM&});g=q6Lh{{Sq_8vh%punr=GO7GlLfK8nSjALJ3h(c4ToTrc2zDuo?GL~e$#Y#r$qZ5wpK!NY(+6_;yPgrYM4-Z1yu zSy*KDumtBh-TGkW_RjlwmB4?zqt4L62nvKXjT(b=V&}FJB0fNO3I?-4KF*gA9Hd7s zuy#ph2zJp4q_?T6Fqq|tn3pL&SCiEII#Nc}4ZsKwhxTaTP^CpO7JzzZX2)2stvUgr zc@^GO)IB!{bKvOzJU$F`VBPJ?b2p_bC?Dz@aCVBZt}@LfsOaX%&=h~1|K{Mv>`?;9 zy!)*S`U#kjt9V(v^sGxiX!?47h}mrdyWhj)=CksxN;YY9)d6|uo0p6)u=!rQ8(Q=F zzAWtRYEv-uq4^bn$FF4i1IFW&m5{BLKzauV@SCp+<%3hzhL7Tw zuwsEXM3wq-``(8M=-v`l_H$`@;s{eYHs*oxb9qBZzgNVCOx@+;v0tvS%SidYaA$;M z&3m&8+;mO;V~q4m3g-~--@aU;~^g~IqnzA&1+I+Qrsqi74gG2bMGpDburK*usqKvIX9 zXMhLwa-AHsR2qLx$oY~*DgA5!)xTk!^{IJh$=A}Aqa#Wy%!KR%qQMdry8`Cos8?P$ zwCbP7O~=J+h&@HQSEK!mGn{G;g&2v1Xx6b+A)lFOani1wT&1x%8qh}hW4m+<>G{qn z5BOm2Vhk(@XESYaes0=cmwABct(NBKWkr>%L^|-y$di8}%5(1<9a$(RoTB7u*q%H< z@?TlyVLu0H*E1#}Jo*K+Hv(p)^1B)-4GxPb;f$uGID-!RcW;zBz~voaFaeGopmi7{ zIHubCy#jplzOo$uAg_0YVn8L_5J+0|iKl<)wz%zhQ`3tLr8l@aY+Sa|=Ye>5vGDg- zx~^-U)4hKJ?gubW=@2FOvF;`zDRM9*O_m)g-wWOeC5IoE08XWnf~IkV`#oZvzR$qmA=RUB>uY9$dCiA<1vMx(LV#|2!{?gyXgdZB!7s4c=MedDIIhhzz0 z%B%cpuT1{VEqhms!Dz!Q$Zj>Z-;4}kp z6mZ=g$)9IuJ_(eqp^34yH9c3c(?WT4Rv3f?Wo?ll4G#dK@s&07jil)Ca>!P@3q>uG zU~Vl5gmv%8mukav62HnISFm+>z{wOpTq`)IFPer^9L72cf0Lsu8NB$hRvrv++J;u! zF_nJ_n0*jn3)q(r`tDZUS0bS@_zA*2-5K(L?GCRjG!DtiB9pEbif_IWifhwL5KFVw zWvO-lsQN3d@;o``Av2vr7Xa|LU=+|}o}`0-c|XPC80K%7+wa@3JWlW55T@RE?~P$6 z87a{>X`eGuJ={Uq?CHmWMU@v)sRDy8f53m60o=>4&H2g&locanMIrDv;DnL^y<20? z`>06LoLcfIcA^KLT)iy%M&xWv1l9UI5Og)H)LWu1qnP$SdRR$kN3t*;`$^UrP;PbV zo$34cjI7-o(Z1n0Ns0$5)9aYz%~z!8Srk6%;4a>WK(!`e+Yr&#Tv32Pr%4P5&S!sd z#FY=^{A3{@>{cb`cCeC-+_EOHo)wz22L|j;(dq+yq2!TnJAvl;YEerOiAJ8+En!}q z`AcBo9DApr^Ct*Ly(-)aB&&8TlomDQ&^!0=O5mqNUXpWTKLKpSsjcv+mx;~@POx!v zaG);2yb9+f<^onDqUC({6m<1AX%7<+3&dp|0ScRXDz+~3pc zHQobxC9C3!g9Y{dIn&Cc;8%~);7Sv>LF5@sGA~|sBuwWZG()3v8OH`nV+E8sQ=us# zcd_W}+vQ=g#eS91cy0>!Mr5l!Q z$)n2UZZ^iiT}z^V>XH;bI&idoA`2WfdnucRReCV`J3^F9Dsj&ovBPI}0>6Sf7E?G) zDJN(TIM~1uBX>o_gm}yLFrd-6a{u01Y6sNEF^E(mj(6RCgd=C!?1TMUX&VS`nvnt| z3zEP!#4z7+Z>zr3_@VQJL9ly!=;s?$qHyd`h&{K>IYTq72=!7{@@ z3(-8q$gemr;`R$Gu*P6vOOObnb>t zXnG8iyvf4zw*JH_S^cn>GAFE2|DG4*e#PH=ZV5TX@d#p_{`|4GD4Ks{@N(&$sgUdu zJ~y7EDCV%M+mY>drQ5pdza|)bt^(t}{{cV#;NE(f52nx)4BQ@yOdM-JtT&nHvr2Z6 zs_-?zi8;e;=KGVH)B~h2S)J+~`vT88xm_c0?>VV9DZQITHt$b3eKov$PIY=7c9hYd z>qZ?Q!#~iFN$8_J6&rukP6XYfzl2@&!8`6g{rA$MeSi4eYQ2#JCdmP2M0%nTvdM2s z7$-D*PEA<4Rjq}q^WE2MjmQh^f1oy}gRRh3EQ-H>Z|O+;*u+5kCvUIQv2t>)a>s>f z=z*WI^Zk*y6=21@oF4;Z28;5ecwK^4pU^hm{T)K)SZ#E^@JWBtWW)F0dm3`~`&c6l zj#%3A4Ne3YAh6412MvLGV>w@W{xb&Lo8D>3IbW+y+(I*yRR$0{EP6VRRv;Gd&Xi{q zW=6j+b4HawZlwf!)5!Zy4xKReR5*x9mI%VVI0U)zOC6?V8F&yNG4VMScV>nuIz{rm z9$z4nH5G87Um$-+4$q4e++zU)X`cO9>R!13EKxw;nbet{H~Yoi!-rkB0RmJwOcI+g zWuf#f(i(ul@@etFVlCL5#dNrZNO2?SwDUX_<9}Hxrsfi=pZV@;b=6)hDwWxP-=X9{x4*Irx{8>8; z=$y~8zf0G@`;obTPf+7IOubA3L3>Dvivup;g9uF+YOWQ`Pl08ZaR6CR226;Z+u(O888*b-|rjrh|~}7 zFQ6|vB8&CuR+c99FPY{*KMs1!g#66G;O()ZdT~^ILk6U)$zle6C^edvaUU!GMuYG> zxu(c%+4GZgo#?IYzkrPNR0&tJQI+>&;h;YI5X;NR_WrnfoIPU(w_1zQ3fiFK?OA_O z|E?L3`djZ*fZ)wP-jvOIIDCIkL>S@$7<1F-8a&vQdyz<%YzfR7dlUO?MoF_k!rQ z_Fw8vBxl}?>IzP><)GUOBHn4#aM*v7r$uBB>rI?)=^^93!U&>DY{On>E~%aA!UH)S zG7s7{?<%UPP|BzBR%Zxbj2_g+b!D2K_unrk0|OTv<#6;Bp46S)_OrpaV}_I*X+Ud( z!|1)waQaFK0}viy5$h?-OYFM_x42s6r0$eo`wcq}D4&~8YRlaJZV-G7GH`zdAT{h` zzz7mi8x}v!?_TBKZ$uCfq^yC@z`gDklYdptt3bnrmy_<(htQ)qGxGv2YuLcqVr4Wg zn7oxa60|1cOKRP_Ip;^MZczW72g2Sm%0RDS!G>Dy0cbmma5ksmEgv)!7Z1b_Z{#1$!150Oh_~EZ0oEN* z<+-yljw!q>dR#<)8E6O7H*U^!5uVY<0hlIZ7Zwgl?LuwFm}G^y0uz7SJZ=@%%4qM? za8ubI>v2|Pe)JcU@UB6`6kAa2ApS<+`<@4&{v$nX`wMDKNW6Hf^`13`zhgbI&-mIh zM#kW9@oD(}`x`+9_j*T{Cm_tPK_8cO^Z?Z=o_Y-gTox@_&>R8s!;4jNpGhu>fLIg? zICHM8lSFg+(^?D0DCB?c-1RDbnEj@7+sH=B;2C3`_VadGfezcXX1_C79{0eSI zy^OICxoh;Z5B&ha;Bl(a@xB8}Jz3tD&=yf(I4n&_KbD8oPW^wA0$Gk&LtR`0kpo{b zSaK#Om-?VhihqFwP}o5FaPky;AQ}H8S)G>f0W&O7YR6$a4d->2=>KRaNz&kJvQG@b z+>yZ<4~I%hmgL1m1_Mp%eLZOIqhDa8B$b_Oe{U%=fAz{Bk$oIx!c}JhC%uRG1k&gS z=o)3G@)fqGUB!RU7U=l(3pW3(Ul@+FOhRzEb>25UkN7b$`@Y4i$t~H*f9~I#)F)zL zAh7$%GkX)TpTXCwfM6bBilS_@A_PfbPA~X+usZ>1k~T;Y!j?hhuX;eC;oN2Y&|#i=^aoye*pUP*TqBRas4T+VZJMsxe0O92C!~AHR`5g9_CR!XdH#!(%-C`UHujM}&%ej0ei#Dvnr+T->@eQ4RjQ08J9KW1# zT(37WA+#rcE-`HrDn|k0l!vZ8^9ghmLFIx4@@-}{GeiPyK&O#KE%Pm$Xr-z>-Ua*0 z#Sp8)2qQ>q$ey`cA{rle2P8cWDA9E@Lw?J4 zH9>!t(G5{F9`P~?S5^l7>ax9o7>YcSEu$BP%#DM^n>3>l!hsxM^H zi|6$w%F?@v^V(V4EW{%syfDF`y;|6xjr?P(tQ{>bPWD|{*dAlW|Fru%up%7nG;`!>8 znV4x(@3DMvVeNsrr*-1uc6{Ob+4w>^qToUIQnxG%I;cUeC1Act*+Itn)z!6JcsT1) zU+b$|HTJ?sc{U(6KYS&GX40Hg<)B{4>r0Alw+qe0jguh!_LnD}w!m@H*Is^5hzNfR z4fJ1o>YM59)LjTP@9=hWXltL5aK>nKpkhn0H|Qf|@s?p;P){!;zPdm(bAD-)7(`TrW0EWPaypwpG~XFnT4ib8N(1X zO}jwlP0XkzkX&kx%S$KfDH8Bs4Gn)Q*QKL!@Oj}lOvb4~XALZrBTRHrZ7wTt&C$I% z;h%Uqo_(D5H;3#gIwsJWllO+QN~No4CrwYsLR##xyN1gk>qIpW+Rez7nxCEq$e@f8 z5og|A%)&A|J|mUVIIaY9DQKq%Agn5spgkxsD`X2M(3ds!&-VIJ9h*ryAAWyYpg4rK z{!W=gA_7U005wWHtmu6B(ZJvf}~u-Cp>@^;M=;BLu*Ow)Cb{_72=^!#`FCF-Pm45b`1&sjooq~d` zBq?9g7epl=T$G~$nsJBTTYhcI$M+s+{ld{_d6sqoc$>!1C}9C8tUhJV(gE)O z1jN#D!YXNg^u<8|b{P&PeH8ab2JYuJY|ob_S5ik~+vR@)lc_CWE>nL%&YeIq%Ak{N zzjzRcJO#rR`op$+1g~&bR5BKz>_MnZFP;dvDRkP>#mU~T+EtG00>AU%rtlPgVXucF zQv2%6XVdTX`c)jexK4NI@9D!;8n3a7*B;-zyGeDu^OSnp5qIY#cYwnNmjt-)EcJ8e zcuyC+%whW2bI{Ms7MXw6Mj}-g30-~O!s$LBU-i||Uv`rGQB1+vPcBR*$=#?m6YIt4 z%eTPCs5W`3n+~YtgTf&LIJZl0Dx(~;@goCmL;B#5d)kkFk$T*JYWDlqc3Wm%Y1=$T zNPJ6l-sL6t`%7G|^$1nv@yOle3u7TmP*v|oNP{A)-6LAEL~wr#<7x=cL+TD#nmGK! zvZKSc)l!OhRP0$!%4$C%oiw4{hCq{`19+MzN2I>>puxp}A%Rc@70309#sv{j^2TK# zHym6VjVUAd6dSh{5{*;1pd`eZMONO)ZXG!iDJy^ECJw57`YSIMZssiCzIXcO z;R6B&LFAeS)ti5B95n49u0@hZ12JD9^_NbP5MFZf9!fSo*I)y%O!UMz0P5fEg1hCl zYZ9lX0CH*M$s7wyjGvU5D2kasif&%)l9hH(;fkmg zWi@w)eMNq>%nAn1zM;(r@<$D9j0~wx*-L~JWlHyr9a4W_n7d{Y?nfQq@Z4r}>O(U! zPUnRs#URiAyHD$8b%5x;YNwlwzenSV@_r#S2tgWvBD^=~8oKOt1Dc(M0T$QMsCL5g zS$n>L!-s^pH(FX(6)qkV-F#|Y$??h}y`~0m{jhurLIswkVT`UY+b=3uAdB^~;+Ort zmHo~WGN*rI_&q6K)5kYR_70Hh;jwpM!25mm2oFrgALYMgP+D_<=;!&os*LSsnT^G$ zMm5nD&dBdcdj@`Gf*Rs4wEYU$?3vaZf+r-qM$O-`GaZ1I-joZeDmm67%c8%R_of9y z;bzD6#1|2xI1H@71787~vc11QPMKq(S72;Iu_=Gfm;5QaO!=+4PU%db<}jS`E;c}} zEP4FIOZu5}SHiDvtE3BJ1q@YIY)68W=Iv${M2^4prxC`;79wZciXK2qIu zc|m`I(~`dyf|XN8X&KKUSbl)U7NLNo`>^Z#$ul~3L>x;nl|WAn!`G(+J4;j7LVTnO z)7Uo^<%e0fV)>3?3a9w2e1E%{8TaRQuWJN8SQRKERrE>MN#zVOtQ#Vy5|pwN$8016 z5tGi*BT#ULgq+>FAwQE^b1nf4Dleu71G#@H6Pw?~&_Mn*_8>q&NDv(}u<2kyOg+Ld zGw}Ns9jj=$(d?fe$n1+On9wr&#@U5rZi1rPDR-cqcff@EJxHfrp;mYvXmgMANpiS} z*{nGI;@HXN?XF*mT-E03awoxmcp^Yn@vx=_d7sw+AW2y7KUHNYPzi-|RULnNr3QcK zx&+Iu6}^yv9T_5*#LLiZ@mm@?MF@)&?PjRk-Icu-xpOQJUjmimc-&Sry)(*m>D^v?GuuN($X z85aW6)CDsgy;Fl<9AjV9`{FXVF;UgGkZmD#{2|ASEX9#Bb-2Ia zZ@5exPEv0_=pIJ@aCG(fzvq8#L@78#0f`Ln$;+`^+EL*)=fp!<4x6$8jk6ZJ0|M9P z75JJJMSqZdJ>-PZps|e^(AWK#$p4MN<m*=x@$ z`Q+a0mi}I5U6=!4)oFi6zOx!2O^LOBZr4-=_G#r0-N^6!o4;z1`D;&|wjga5C3i3# z5cZ49Z1U}uV>4mP`sXEj^6L4mQ~eP8Pek_~PLu5yaeQ~Xz2qfCw%05D+@Yh;M<=NY zb5J9M^`6Oe#8s~*(790-#Cwx2rL$EE0{CUsO=>S$t}j0i+*p5h;%~X;Lp_b7C|)ddMSvX`ZeXv<=>N)GFn0R*I2ce<+2+G5$^|p$l z=rB-EV<0Yqp_|%28EL4kKDH9A3_oc5`0)*Le;OFfP8R|{)fFvJhRBHpo(u`()04d2 zhC3|l0wpHPFPwjzpDqs48kGI?!*j@(c3?yLGDa7b0Ju4+JME<%IX(~>HNR4~sd|yo zAs{wMj-dIz@98e1trb%eUsrE`gf+!^%^3+u&BCz~4hJZE8>ZYUgx03FzeT)|WFYk6 zKXh0kV_GV^`Kl@n6bN9>;F|)>=0q#}ejVwro!#7wS9h9+xQpoIh{wmjSSp2-k2iY2Rc@q zw$cy6({jUP%`zC!SgD1*+%79PBZXBmW0k)a{_++=F)Rp!w&QEPrN(WIcko#>;b_qz zTFyygc~*Z65Rj!N9Ql|7p6Mk0TJ+)R{4^q@C+J>~i0@RBo|*dW-;H4?L0P;v+(C4aQ~&{l>`F%ZvF-J1=wkZy)toT zH;utE1}Lor9{>g%{*2%CQ^tp;O!XC5%%lBE;d6hOKXN@^J2;!yX)ldpQ7U)VIM>js zOSidFdWpg$jy@MdC1^;&-um6x2A3S7u-7BdIn0V}0#FF84Iekj&l%VDO@Ald%nJ^B z8;_+Dk)W|9PLT%juH;c~>sL4M4ahdY)%}!=4~0N05-pGid7*%4c?$*OL*1h;ie=EV-J?O z+MNtUiJCOA-j^1m_EzW5ZslXV^JVqUah-o6EF&B*j@w7E6z8EOn0ZR`+24*doindc00b6D4(8J1-Ka+^DH6GoA7`14nWTZwUf|mZCq@o+8s`}Q?321CrV{fk2|?sJPUmjmyIykj@cl{j^zhT5Z=nbKD!zxq)Z+7ml|+$+dk2f@bb%8-cd9BW z07Q!1XQ$`9%ava?s#1z0n@Xx*3U8j0JF_m}O+b1;u2}#Y^_q)E0|#37#2bG%2iZOW z6=3yx3V>9X&^-^bI}$9*(dsBffY2fy*bx{Wjx0DPwhZBZHmd<^(i_cjN4p0Hgp)xZ zJ03+r*rU403T)5R!5b_w^)3IRZbek<==+9wKNAnwPHU`1C~mGL6q{?e5=V;N6&I5a z^t7wI+G;)bZ{j)MOHYt(2iboj36xM3e&KxgAg1C~G1$D12Ep`J68U6Cm*ITj%xt#E zCO%blN7I@BglB=T+T9F#%2w z>}`IxePd*9e)XTkSFgUVj3#V%YR#KCMv?;BOcb&87;Rmja(->c15|(g@UP|RiB%7! zJtb!`(w`UZ3AD+9m=K-Vqdbr|R*kNp30)IzF!j6RS>%Z<+e{OE!5l6+8Dy>DZ-l<0 zE__a|(sKf624wCFrCnJD!0U8id#?1p30h$iDUd&XJSfZdLqTXpP`Um=2(T^`QoID! zpz*_tMPuEwmiTgN%*TIlm6bgNv#pyrXrP*ISu^XpU#xB04Zh#9fnGFEBG{K4Q4ERZ zS@&c`(1%r?Sp~<^cpEVH$U2}OK0jBdjnS*um#Ou@nR)dx33Oywyl;w`DMA^*fEhx> zFK|gA?UPdCs~p4|CFfSWy&&)lWRf5OXtVldIkBcoI{waHKtX>1lo5M1ch+oWS=7+@ zXv1q`X&}Oha|b@}CwX{YLZ{G}Sa`=!6c;x!FF7yVCjisz2za-MkoDi}phuQZj6zuR z@Q}Xsr883(8YBsW(`#Ddo3r6(N1+A-vopNV^Ucx7eywtQF}{2E2{D4$?cCz|eDeKp zB>1qII!p4huzG*0>!8f~tV$H!>m?MA-w^S%xK`wtfSkic%OiB&NGSf*S6aHec=%R& z4RUFww5ivMM-$hA44q-gW6b2IH2eV!W)wNYVl@%Kn~VgJ@%yDF@bGY;fGncsSAAzy zqLTi(hvxdO8i;;1@_XcUsT*)1fkW;+FQOCcvP=lp3zdH&a1h!uSr#z-!3>@k9^=ua zF+KY8#@fi>Gu~|}8Dzb;_c}yy3i_n&xb|j+=@efWV#ON2F8i@}SZN5Z%^X_0sb2Kr zT3ZVxI{Sts@BO~&?-k~jvL|>luF9Ue895*t)ixC&G|~;TWwA!s=l$u)ULbU&fXb0< zWP|iFSo?oO2GV50i4KC)cg9{AaAW+OwYVfV%n;66FYt}g0W4-&lu1T5gno#fHA0i` zm-6JS=k6Bl`2t9bW}zi)>XwWQf*d8oH}-7D7aQz0umY?16PVw9{AO#TpGLrWMw4)eO3<3-rp|y=;z#(oFJP7g zY~vem7x;5;3=duB;~;yV*zO0^x$J z?!bS2e0%zxj&Z_oJ85Cn@>&B_5XMG!nw7}vB z2%>;vFaBJA+odR?7QZgHK^>Vv?Nf?t{>gO1ZiD5bm2ohEZajaQ_llR&F4@gmKSCsM z>X-k@B+xC-1Z#noH7XS%zgEl2BFKNnK+d6q+=E$g712bFpSkVjU9M=NrK%qj93BtJ zQ7Ct4Ddy*USTBihUP<)YZ467!cAamdemi)Y542+5EDe0k9R@*bNgl>GCo?g3V6t6m zitO(jQZ_KYyNN{q2*F_O0L}7GN6KmYU@YXCA^Kh|QCvQ-%jUGq&I`@hjn{vIko?&Y z7tn|XaHchD5lB`}|8<4!(vzSHfSN-Z%cIR^!kDpojV6 z3W#Mn(-=I>SwYa~f~FRmmUrW~Z9V8sGM@e@!8{|bOq{Ry-8569dE&a`gXZv$*oiDt zUNX>*N&sEqtYI_Qs#@WOTQGlfZ4+Ea4R^lN)_Dq@Mz~+n#oslmV_ua%ZjazTwE#O^ zJI{jNZ0j~?exjnAfwlrSLN1lm&_DAzP7o+cS}G39-VKZ9_vA+<_jR#D>bd=9RH{_n5Nj0A7N{a&FW-x#KWJp1h&k(yCZ)qHXI(k;nU5|lB0&g@^?7vF+Oz9$hQWyd)=Lw)ozvb4s-$8 zJw1F)bV)dlBit$D&o~@2y;p%W$0)$#&eUG~`*Q>CBfOp21S6uX zEJN4)z3q12ctu3#uY$e(m4AnZpRhjI%$Q~iwwkS8q0NftIre{Sg~=e*?d#*tX2qSh zECFFA?7@}?8KD-I57S~$jw!FxQ`ULte@X0Opc?HGGXNn5yHw`=22N~&Zq4epS^(qA zO7Qc~D-+=c^A5_u+W0HNl?KX!E6={(`vpkQ30dgLx6!BaFM3P$mL9^4f2m_Th{uPa z<%&*Ty=X8~Is|`SeT4nW+8I*9ZFJqL9=!IY>g6C-^E(W2wpPAw!lBBg7uuCtS$3lz z(*Ax(>+?eysgxwX=%4ouN!g3fu8_C@*875Xq3N4eL=jmZ+V4Q3O7oC|UVl1+IXm|Y zD@T}vpD+zDb0O)gA)Ls2U(=_R-nKtD2F{7^3Nz|$9#wxs@jei0o-GeDa!LB`nB_R? zOJ80PQ@~^~TtO^?S~HFV(m7(zQ{Kxe`&cl!$$)#tZ$3F)D(|aL!lfH$P8Gq#O;ip{ zJEulj04q|$q!!9cv-s~xOAG2^Xr)c?AOgim3S4HW^59)N@+nJyv!S!R{-fwDwp<0G zDEdJRAV`0JA?^-AWr2Eo=odFRBbcf%8?iMZN7v1cnUOn*4kbm^S>d4fhOY zk4Q*fR+}-*cNMa1;_$Pw{!6w~@R2DU6JtLh!|;DV$TrVp&jC+NuaC!y`Vhju}|l~^3<2(Q`AUD~Y^*yX!hdQxAz%s-sIM{2 zo^Ywxm!NlA4qu9>c6X_xhSOh~v`qLh40W!jlKnl#FuORvp8?^7VKLrDP%ot4j9Aeo zzhQr74vT&AMf)PbxaMpW*1WsK^{b79$>G&HaT|gu^i?x*E7L${TIDT{WK}iw7%qxx z+>~yJOW6Z}l{(M7Ir*0`;NUq_3(4;ne`h_W6y&76DBv zJE;hcVt}BZJVMj@$%oasO~3OlY_hR+nKZ+K#4hVvC8|3R=dwY5AfM%NSu$`MQ~+CL zlm*^;DE>Sz(kssw2~!fN<1rVogb)2JVx|(mPYeB?In}Pk6-4j?vK93ZO;Gc0QyZUi zn;ze}+MQg)iQE@JZ{WGYJUI9$cT0Z(;+YVePKy;#x|RWNpXh(}27LbTd}A`aeMlK7 zY0|nCYX{h3+2IZbAMe4o0EL#pHpPKGDm5jhn~B2CR2Akw14;v?u2A+k!z?agx1+|W z{Gkp#j=Vg^l`M*oq#ktI_FG7D+tqWJ4 z#~01r-NZkJ;tlhW=8`EICBd!Zhr1kCy>_8%u-Ys+j~oKwTpqyJ!0~@xi9&!1CK4_E z{WU@MSw=*mD(y~K`ASQ$i6zo!#0h7I-QI3jn?4L#b|fvlYmwprt3(Qk_6bzf;Xe>iU_ z;R19~Dk0p5jFY@e1)vBtx~l!~|Mw(&w-uNGTxN!TgZ7>G+9z{vTjUQ^*C-AHXib*yw-BpXJwM9l95p zAQGh{o&wzncsi8#TO6O80=*HOY552ZaFl*DuqkuvCed^I{-1Km3rYC_ zF$OryFVN1KYW+SuKlyTRDo?@c%u=T+xe9T93V5Gup!NC|hD7vEay3HvVC};$TEv*;xowAAi{N&1|I5t!aPd?jhX0C;rP};kvb7 zKzUMX3SBu^Nazd6R&E7mua)7TS>^ld%u)jc;t#7vOkMF zVv*r}`G5a_cUb8{n(2S&3BnkujdCqy9mQE#46w77{I=?? zuF~py_*xq8S^?eDDpG9Ji$O1Gz0I$zF21oUud+ATvmb>b-e}A&DeSx{s;mK007E?_ zEBi^+$@=aoyOM;jJ$K;v(-YG|9+Upkmh24-eaFJ{BHpS3$~ysPt@A6j-^?K(NJwQ> zi9dhqJA5q**@*}tP%w?ReMbyovyiKefzr@=z$L0wowkOHzL43|4+cvoWm8D6_Z4y( zfchOAUl%_0>dsTmO>^Z3c%1fBs5@8m39aMM4mRYHmrIZNh`lj4dsZ3o#pwPX(=;1zCR93L~eh3p-Tr_AH82$rs;%r`Hr>7qUcddY@&U` zp2#&yy-=vVR(JysA*OZ*kF0*QOdxOtkDE;2f10pRVp9j&_JWbQg^MEcYp(Y-2Y2WX zI&$jv*8XG~bkxW$&jOfZs_eqaT|n833O~_AR#Qk;Qk{FntKaDO+`NE7&+gHcJcfVQ zX~on#abXDZc^^s1ibY$icp*WPSWVcOA>>USpcK@bv;A4Av1+HcYTV9F|k*MmGzioj3)T3doyFf6lK!yWe$1Ug2c# zHXhMNlH7v0!C`8kBy(^sh>RWUdDDMcVv5(zW6XaT>-pM=@N-ygxiCpJoJo{o=sE`u zpvD_kVr=E_#~yuu6xCQ=fU8ScP?C76!8JheiNANQft{?`VUF5f{YtGU8T{m==R7wF z2Hy(2?zIL*@VY75;(}G1>`q@t&ajKb(kXAlXizKBB*k$MMcXO-RgmL`C0Ku`Sg>CZ zn!sNShO@dZov)eewE8mVtRcrquP=OYHL+Kk)Xxou-``dfur>RYJI3MOS57ri>#oH| zelL{doWEDuGPu^fOFNE-aLIY~mF^I*+jP$1U??7;5s2akWGVEI0YIj`d4uuNDbu*1 z1tVV$M=#@Z3V3{Jt_x&N?3jOtE1h*3YlUb%&NdcR8taw*KJ5Ra{_W zl`T6AT&EQ!O}=(K_yJ}3kjYmlQV0u-NROzgH~|^UA(UB4tijK}Q$vY>xtoMt98 zshHf73w}~nXeuF z|1n89$yC3uU#U84YRkM>8acA#=z)|8Q#>vF=+LDAx1E6~3BP}#Ako}JGn&ejLuA4! zrt5(#0JO4i;Q#92Edd2;*YFpwC^+Z<`d1ViC>RWUCF5U{mmQc8nG5;WqDEal zouA49G$j?2E29i7bV;4{t!U@D42Tut{6yid7jBxtvgS4lgo4x2X@L>g3Ppm#|uK(x@Usq zZ<;p+E|i+gBpoY#2k{lk7Mpkpp=- zDB~m;2Q~>5nCGeyG|nuz7B4wRD{V^Pf?g72`ULd&4;Vez*u4D8MGz637_<(8#dlS| zzN~eDP%ux@QJ&P%_iBR951X_U-L0Em&CtTfGI)QGK(`ca3fgszt~MK^g= zt9nK%Q7i`nWCHBs_~+r3YK)Ipm552!Lxk}t0eyNP8htQTd%$7;z2E>U;If36aBru`mgEP)BPYASVz7*9hco` zLU%VJ7%-`fHYXVe2AuLb0w@WTNPXE5P~TE&Fo)ENM`>DqD=T~m)YUO#mI?s8bt!i# z{(gTi#m@;KtuR}Auf6KJ!>jMd!9st%$G8*bl7K{ByGkluI4}S9)#MFNm%5W+y}E2G z>zNqI%n&}6V;T3gVT#)n?F5b0_kNF6*(LJN4#(fln+ly{5|&x;;QVBR4#dAVe0pcI zD=+6bT`*2R!ts-eZzU&uP|)rOk160+r;w&>^O3|7J0S3ZV;v672X!WZJtlvRfB)C% z+qL>vcZUcbGUMwecPC5+wIUo0QbAOBQ0gjOWUJQxvruSTb*j68t}dvKoB8-TYW_3| z><}-KMs@j^jLC4%2=sO!O%T@e2;nbvK~0ofr~mHMhz~sLklK2Fm#{Y4lwMCL!i^nG z!VcCYC=h8h;I?SitMlqllGJ~D)xYjY>1y3WOv?v)0(h)tW+w~n%YR%@frM1N}7Rpl?#vaPAkRbZA0vDJm>&!iIprBE^QyP;y#bGx z15O?6I0zg8l~yfDGI}*e`8}N}h6Vrgg&ptqb>1HvV9Asn)aLI$rumi$lK%Bha;(;m$H6&hobFJ)_#MyTSxRMi+);PuPFcP%X`hY_Zw<1P<+ihI%o+k?xAYH!>URs}Xs`@XXTP4bA2<}(Z!CFAdcB{yi9rD(P0AL_aj@5G zkz5mMnz(;a@UN@baF(KH{>tDg?S5T8!JNG|KsewG^_RwzTfUyQb|0Z9Ask%sbZOhT z{qF$J+yQsD48s@0Gjte3zo|RfLQ~w|H@1qHhLBLI+&pKW*MZ8bzQ=H=L4@!sVoJ~E zJS#@Tz&P(ruQ^i%+kBUba(k5SZ;7Xi6AWZ<{AYi(b`=W@&}!7mgWn|Q)hKW$Jok?4 zCOvD%d#iqz)T!grk!`xzl8hlP&|cOFJM#c+#G$jQSO`{Chk~Sl^@T!bcu5j(g21VL ze_A!-tv6d$g%Nw=)|xa^F*&8q3PyObJ+irbeSxY}GH*Fj;5H6^kAb$nuV{t3EN;xQ z%%p$GrX3(rH+Uv(fySQaL6&0`#so&^v#5)$={G>om8uZh2WV9tzY)j#Moi65hM{UR z=d@p6O~NCDD|s(jDKG|_l93pY&t<{p;b}oXez=|Fr8*o=|B#}DxG2p&*YF^`#;>n72TI@NtY_j) zDqZ){ZQ{r;{Atec;TX%nN*Ia9EFg3JzBuZC3rZGU#%Nf0V=$@Uc!7E)u=2iqbA98*Ai^R4zrQoKxn2=gMtelnT?qBvrw*F?DdXvVCA-sg|Zec8M`mOv~f^skS|@440zkg^#7-#55)w6KyH!kgac3^SFIwA zk^?#doND|6G`WUE*Em)27)ejnYkL3Q+NeRH7$A3(%^$Sajzt-w0`T6V5|elH0FSWU zu_sVhB9y%>aTZkSTjTuYND%@y-P7oQ&LnQoQ+%B}o9Q#b{2?9|+JJX*`gm53XMA7r z&hWjOemuOn*}-u*V5N~7P<(6VkXE*6 zX~AL#=lPO4LC!s=AfnHfA#&2Kjn|Dkg7BOp%(eFkKFN9)6-fXj2pl<;c3Kx0z|{1F z5wDfp>A%}QjfBd$S5(j@B43)IqI@{!LG?VF@NHF2=8{TF; zYMcB+H{XtUj4PtcMMNd`c2j*5_o^vhyEO$p{Wu<@)pSZ5?d z3jK$v6FYhu9qT9;bVwFRs80f-^`qVj2jV@L??$eVk8xU`o+5dx(!R-kCk_7pm7$3o zv190t9_S7y`)Tf2`BK||&?3ovzvKG%d1h4Q+(hhr+l0Dcz8BAFA>S&2iVK=W3qgpa zCPC(<%G_=bjHgI=y)bCy$cD0*{W=q4Q`VPK*=T%H*@ti2X>eGjM4|E$#*+aZIUj3jw9*-~+qs(kJRNYPy$j`30K81P2FE~5526$^u1v?qKdYnc0)XKXwm_ zNw}DM;rColBl82MUPDbpqq}e>@y2j^%zV8aRNTgq@8<$uUUc5ouH{KvW+*!w7GZ*F~7-rvS=^mO!9ip^GRQa*J^x&7)v!eoX-*!mQ_q3WX^u_4j zcW^Yx#KVy_c|O}vI`US*l_VvS=PwTYCm;oXbmasYg#aoLf6j7`4p z-_}f_9=(8gR}&&9-QXHO3|g|H=-f|(lzKODKZvHP zVg+GuUBH(zD?!kL$Q%oQ zV>OK2{ZZ0tup4!^*QVL^D5^2R-~}$WV$l;wl)@go%%TBKR)9K&iXx|b zccc6jhFciKQEK8biJN9@O3V`}&~fExb_ja!ktgzhz=#S^ew|4xOSY}{sA%qb_lZ^f zSUMfkZN`R$+Tg>zf8UnT_Z)+rAk1!mG1kDDVDE-YUcU*~ple0L|6BOS--fW)l&6fZ zPO;VmllM+c|52C~@FKLbFbQKFd-#W-5}m0Y0L2s2=fZx(5s9?Mb}b6cPlqsJMqc< zY|bMh@jz%6UKToTbmJ{SoBIMtj`dPbMZl-kESZ@ZGndb@aB05kA3FbP+u?K7(GXYa z=GUk4fEuA~1o&H@Z>LflPrPai&P!qD8R?OLhZaZD1?rRgnc`Lb|5>F2&!Ov{cF|h% zX5}-b1Mlv^>eFwI@K%-JK6qMxFqKuqV$Wb~#@?v<6kC0*&G9BJVi~A-Te2t^~f`rm9Wx5Z?;B z;dq4kQiWdjmxY?>xeCk#Gp{wsBTHe(0Z+#|Ezxg)H9!WGl;U*3hyka6G*eI8KbRbO zGS)ekORfHUQpBuo>bo{R%s$6Di!hbLPX<;c_7A%)_(OqFxRH+FgN)Yl0aD``jnkHr zDNsCYd~(yCin+Y7QAD&sq4O&r6AlaSQ>Th-l!7Rj@5P0}MLfN!A=T^$sH`V5BH^0f zV_EmoqY4iL>9~QUsLW}9hk-EN`8@E0@?<+!AGr0@+|{!s5-H#kVR0Ng3^N7+9^D~Qvk}=B(7f_8x@-a*8gP$l|;|W}N?nWqk2KEL0w+?q- zRX{j66BsYn7mSDm4B&TRgg5Zo8|V0vK>d*q3RM1d*^JA!p8{2X9iHSai~@vzz>}f7>z~< z3EI@>cGwbm{eZ;&=Iyryb3mUlbY)(p53n35-@QwPF3HysjRMWR1u$Bcvze200Na?y z@vQ5`MSPn71-1u&Y}Elp86eG=p^d&kmvD!CI{tXz2=d4Mfhl363H+v~)LKLwp{Qpu zC6J&K+T$x3RF($}@d@`ntYPheJ59Nn{A@R50)Dy~Qj$umOpEOVaD6VuR1fSh18=M5%A>Ko{nbR15 z?YO?8-Kecgi66;^oCxL=ZUM*b+m<%8G$O2qeKcF6N%PJm^uVW>;j9YJtJzQf z7lalpZ05xS#9a7d{*|ZJ`!%I#&wVf}yO{S2@t5DcBBc41gq)(2`U=N|@PF#~tSIof zuyO3YNGy#HDkRe8m*nvlnKw;+N|_@+*6D=T)O#BgNNcCI53zoPqto?=4Vt%qjm{B_ zB>V%vQ*zvIFuPo5F=}Q2wnq??H`Y@b7gU0|8CT%~&RZZPsrEr&(r}Q^@7ab;jXLp$ zATSV>1(=So&wGda|KBeKWh{KNN-%)J$j}93A7fj4NkDT_m*~Bdp#Lu!+-5a$7{Gt? zzb*eEi8oc^P)K2l4^oV22{sac?g@VBuE<2QNdc}fnII&A#=D}!P?3DNe=8e7QPfKT z7oVVOAgBOk0xe~rS!QkJeW8}1Xxf=~3BFiDUR)R9H^H$iOUtg9$LaP0n=TnFFK|6M zz7T`ij>A$2F5n(JC%|H1b!EbVb-1g5zd#F(MnYiW(ILQ}RaFZz+xH!RCBbL@Huvso z%9kDTp_$9ppPVjv50h8%4F3LQC~fk&6dS!FyjK8&E}+_?jC%7+9rmaz3Jn|cx-=@J z%-|UqzB}rft4?mKlacXVSHutEG>%byoXESHLF&CiQ59~9cf zBERwnuV$b8AoR+AAO_GWcDW6a@xt+7TH9|FO3V!5R~RV2YCB8aLsPq;aD{ zNV(%E{1{(YWH{sFZGxe-?b-|1Z!0_-r|CR9%LFQKE4b2!orv(6JgZ18wQ>$Zub6=p zK^&ZICj#Sta$0{|p&Qgs+)4%`TUe&L>rts}|HOeob3FQG$0{^F;FWGRmrWUu?SG|&Qan;`;m)0)L zwDmUNm?9!3Vnz#&%P;rYX{Xk5>Bbp(C+siR9an~bq|!df>H+$SHxNyi-(Ip1ItZXY zdoT$1-(T47r)j3_th}ICwgC5dZ_3%jbpsE0j6loB8OfMNAKOrAV6&3mu8_4a14Y=s8EuD3Ld3Nflc%dpLA)xAA3xEw{-0#8CB6i=0iMCSX{241;;QpgSvPRYwwsDz3UmiIJet;67s;bf(SNCu*d zp*6#kk&GSmvnlJgWyeX6%h9ZVM;0^lgvmowv6!NiNoNpHsy9OT6@EIPb;Ub01J{hT;yv< zuF0%EW$RPS+u!*AJ~@q(T1esp*+MS${~s+LAizt!*G3Bjt0`*AYZKXj@aF?|ZItTv z&R;ORO}hN`z^XsSfWZn3#^?WTs2+@s{BPX#AsoUVaEnmD zQKBT|0nh2i2*zNI0*V&Hp(<-|_@zpr>5Sr%?@61$FT67#FxGxr#)aF*0N6zU!;D$@ zl&&;_n^NNBjm-c~(t3M;r@SiM3P=fbUdw>b{X%ZVq@)uo7R>Q1)`RZR(;bN&o4|C- zyNL_<00O5?fQ77>(c-x|qIklU4ZjO0V60Z6~kNbJTGZx4VTZp0(Ec~`8IZU^I;{`qMz=dYZRG6ld@MdZX z3+q4_vwQ}P;VA@;IJR?Pek*&9sr#hAhl7RP=YHWb6Yl7vvkjqx8OU5p<#K>Qpf#W} zjRdyOET4gNXMBB^R}4@-Kn&coXK(8iH5kCOU40!~xNX^G2jCdPam?kxYa`nVnO6e` zxGaTv+x%63yQNAvEdlM0q+zeNwz(lo%104}r?D1iE{va8?S*z_(aZ+pZH!hykDewuA?fsr*vXL_nY z98t{$xNY22?Qci9!RNtj!7L26^oje%;Cv)RuP+UM?{cS_GAv^xShm_{0+oWJ2E5i2RH^8D##E*xn;Ev55i?5 z1my#Nf@?S9*Xk-z`vHu*Xt!ZWq(#0N93<~z z{k&ZrBIh{Xwhu}9`Zs~_Xfu4_*IE8rtuaG=ySE*z@nd}jW`4oR=~tJkAi+`fJ^uEA z;1|R!YASc`_Xwj!zyVxWV1L{(2f_nS3=4vPE^_9xx>>@s+yQlmq|4&=!;?-g8bm1Js>M>U!B6N^4iD`AFj>b8 zM*Crvz2tURaqrx~{{{QNiYAEvlsoeav=2UJjJPWKW%zhrcdqjc)%M-^H%7KyH{>vX z**@O}zjG4z^y-HXwh)y7DCOIQe1JsM5Q`1!I+(gVkMpk~(&oC7zQq66S-SL`z?dnz zOo^8te{Wz8y++T{?`-kiw=~`=t#TxoS(LrFid$PV=VPA>g5;CSw(5LO+}v;q1~!W8 z*>JQj@imt>#W-(Z0KWmz#%0~gHd~8-p|**5({*VN?URQZHySBPWq#KSD}coT&lp|h zu2g$lYWnNhTcE9;%>bim0H|pLM%1)RQp$i|$z6FJ=u<~h4EL_l-K8+$wG4rTSG1A8 zV02jiB#@Ct2yltxWbEm~jI6~p-J;=kF$2wkBvF06_XpQJ69RC-Y8hHP#~EmUf(=Fx zcJQ%*l^rMPI7^O#J)y*u!2VvK{|m4{<_Tb7YKj~I zz(Z=M+pi0+JFYbh#hdA4P-n@F4rq*~iW>2e1{*S`n}zeE?__C1D%*iBc54jdNk|lj zGclIOW3Sph)x4CH4@q9l!6PPrmIckgBln`z|C) zs>fpur=P@@8|VCq>I;D&z2l-YyVMNVc{1QYuIo@W!XYXW-l7(f0sqvz{SYr7ZixSL z?PtpE%2h38r^c&fdi7?>Y)3h7z&^54TR=YnBZFS`4GNyA{KB1)O77=#TZK8${KAs7 zyb$OiR^?c}_}yx>-y^So@BFLlFTDhejB(z~zTI_n{R(uhlA%MypRFJHcL3>FPd3!~ zY$KbLd+9ct>>>^@ABAG`U6fiP87bBj6yE&mi(b^H);3*uc^omt*f|&_-ntPv5W9ZS zvi!d<_h`uSxJ+?==LTUh@|HuN%cfvih}kJmI`g((c$0PUuofVHK?Pqpu1fVn!+Og4 zZ)Y`m(aC_%<$!@?&DF%=fuRw9Xx+m(6~a;cx|O+u3LRK9A^L4LtyxPobF!pb-@BVk z3pig03eD^*%`jkv*SSBWsIYuq@j9>XvU-CvPvfS=ja07dT?8GEij!~PK3_Nzd~kdb z<%!P+j^SINKcQ)Vmyeat+VSDkeLG(D`32kbTMbFiBi_w$gkx~f5f%u3Tyt7cU1sku zt^qesVqnR`C(tN-xeNehc2hwi1!Pa+gXhR9)_`S=p25S4(YfppBw|HI9?PDx9!WhSpJm_?jEiudbSO~}C!80D_qEOP)Q=>lF1Om|U<$T9ti;9s?cQAt6 zpxkxomWglXAep-Mkj(HV7#uz{^b0a5zt~@Wld1v8APc&#|;crO_7!HBb z0bsGN98IQd8-!SWsI9+l{CWlwB;9lLON!D4t#`kFTD`j?EtDi%PCh%fZVWD2*b$oB zkLsA9YvTu20YSTA?`jfIoir%1du1wsWO}45Z!QHI8z|*{enhP9OfxfE{d(gxv+=R} znRCz*2EBacEf4vg@+gG6Qy$pgf`-mVg){Co^B&w1lmj>*F z=7n68<59t;b$qiu=OGU#(h0Jbv2=J6?S%MhS>q*=lVC3VrV;>k#`2I-y=Q`XgcrRb z)2#QwA4lhr;3g16(F3s{rzJ@wk%NF8IfD>?nbW(+8!znfNCVx~Rqww+D|3B0tix-e zio4egm=g`Q7B|-H+D}i8eE?zL;BwuuBLmq9C9_#APE%0=v}Bl+jDPE&)qSGj{>&h( zsv5NXNr)4)lLK`J02Js$EPK{%DTdA+oo?T>mCiUYaqJd96A*&7C8jWyMnDVj_7``5 z{Ceu|?HqrPu=nER4#zq)f1Hw}#fW^;z~f{u)#{En(d})83V$bY0I~+SEGN6P(&T$i zF@2ld1^}#WONKJhjFr^>?qnF~je}pIVq;sP7j#@t2Y5hp-0Cn^o%}i+QT@hP&j=a7 z9}UpX!YKo&m*gkDeoz|Ol*%I)z>jf%t%@i(pk*+Qe?X#9;d+l}T#|f%nw}!^$1)8e zdZ`&RgPhBI9j!Fa>e^Q8Ln$F>{&7^l`Gbhx2`XmPvVq+uri+q~vCqJgab1H7!ccPC@9BdgMXn&frm!94$% ziNwmIrc(hq5s?XBZL|K+j1;6xb~>?cw(-sjdeR>OCKS7Qz||U%ysk%>7(0>;t=1(Qe~Jaf7du8s{57zuoK&;1oZq zmwYrRn;Iq;H!jy6q%JWM5c4tsNxx>H6hg7Z8plsIj2p>)>F2nx*GwAgjmipvK-= zwyUPCuE_jS-x^N6G7#`MIxx!R8~#4h$HQ%dc)`OXQs!+wdOB}2I|qFE7DD3Leb}+D zf$j`=_U$#fyWh*lOqK+Ld7@XGQF5PR7}Ge9{7Czg%74~XnBh_=VY*fxLghOCd4*-` zMGx7x?VwH6@QJT~nN?B`@FS*~Yd@ndj7c&Z=+*)IHd>#P6Wxu!wx)WM4)Vt`=)Ar0 zLFhrd96tjU#Fjzuw7$^qSriN3fTYFBD{yZ6fsPKqn|)DCP8%G$Js{NnfTp6vSW51#U45tZI7vj>$sbVDB( zyTrWxwn!O6*&6DWkUb)t^CIBTys?A7bKK~?nA>a?I8xwd553*6QwSE6T>wvmXO)}% zveYx@_~L+nrW}}w>Le{d$onRKGV2;)BqT^d`axQy=mt0pFpHl?885eC@udRna&3+Q zW8SkuL@9uQ@y@^$2oBE#yj-B>hvBI*ik=Jo#4qt8sBTWl*V;=(y7c#yQ_?g5DVyI% zqN#fZ%ri$Moqh4{z6|S@Ds7TJ%$ zP#c%wy!j|`sOq*(@;iTF+#&5bkdu-o;e6P5^ZNTo4YO8qk7$*h^Z3tql38}Irv(-s6w;?35UjKj?R{R-(!$FEpGN*Q*D$9GQI zSnfxEBw|2rt7_XI1%edXYdE-C9l@gybL>|V^mEnE*wTv=klG;CX8*DxCJ8!~i%MLnke3{-E5 zezVo+Jxbs32hU)Wgz64t*SNbaLI0o%%7b}-L(qO7mm-ScJ!}UDwl*kJq&r!{TJ1=Q zan6>3PGRG6?0A12ze~{Ic$#cLEw`jr0^-7Pk4PIn?4cFemP(=1urTiLH)u^NRsvg~ z3NZeKiO`;B;~vpg#wnVdr&)?EMd!`xoq(a&Q=6mkP_RpxC4maJD-^Ai zs4-1AW7(O%?`;Qxw5+5z))DKlERjL`9$XYKCN*u zW2xWU>D!dgH`$TNFLDpQW7wbmB_}nsp39TWj{=~n4;U4;7k`h&7NL3=WAhgVm}x|e zUA)QhowAB%d`o8Z?}LBLsWX&Nmp))>qbf_+3-|^DvXFW}h%h@Md6S#c2lH}&w~m1E zCz1!dI;A8Zy*n}0xAwi{X;+IxC%F9A)bv+(3GFvw}{&db{AVoD#sP z+0_`Gb{}$OqAtJWUy;ef=Pl4+S5Byi*g=MR?*6^}aj~(b^EayMvqWa^lKPpyi5>Gm zRhj$m^9h&YGp0(oyiH0A1cqY$OF}cmZP?YJc-i$lb0{3MQ~^?!O1I z%>zy#pZVE4IC-GS0$1M&=WA*qVT4}~!{lcwJU04*VVvARn9BTYd;X>SYuIrmNVfP~ zwFnSN{6{D*v@L@w?r?OtW!1*8xnEG5AgrCbu|>X~N}`}_XJ^2OWb{RUAKVKqZ2D^I zIJcuXC|FSjj_oPwZ#nrS{R!mOHBMsexWwSQ;SfV^eRFvZTzppt91hkd`TePepR``{ z-MR(>Z}y8trp(giWT>ACAj#slRxlT2O8WPVoo|*NC>8eYoK4kYpzSM-e2PXvascc; z@wcOh+g`-<%eZ$-KonMgXRA#&)x9w0&c&@$4gBV+`~g=fE;kq?iyyI+NgV&WqjP;H z6aoW)`Kq<>%>$=dyzV+Y5#9j_v1ujwO?KG}MPOXS=NZA}mNK{S*Z+UcCW>V!5jG|u zXrOUcR!o$TtqXND&eCz15rE%)18nXC%>9IE*3k-JK=*W7_1f}(Bj^XsvoG392vl|g zBFgJV4+aG1c3bsGD~?ou{|Ul0if_Ps5X{}P=sE(ne|F#xnLu2{#Fn-C`R(DLZcGm< z^qJF#As_z$l8!nI%(qVBblg3h(Hm^W2dS*8A3Uj1K~B;=zYShgKJQ|ZGh`G36-B+h zMskN366)Xk?;*y2d<3ZulC(zlqPPt``1YsxNP?n{7lZ-LT_g+LU-BkGFSkZxZ|CC; zq@J>?jvaO-O8#z6^wM=NG$&OczD-Fb?svmDz1*VMK)(q7!UogR+?ykwhNeaI76ELJ z+oK`&=vnO+0iH^QuU!>cQ0Bx~cnYHk*3y3PbOg=_|M%;EsGxf&gsD!VVWAGKV7B{F zf^nW{^kqc3Y??{LqpG@_Hr(+6{NGx_@kwRhrm>_SBn1kULSyz1ZSfd7UZV)YLcvL_ z;^oP87!kmyF{g&Gk{BG9vXrpVSWcTu0}( zihHYY<&N`z`k$9iTEB>|ODqU`p`_ zzT_|QHiFM?ojt;eY70}v0j=XHgRxEevD9oxTn&3;)3=m81suHK-CO()Bkkn{&@UuLlTnj|YN(92+#q-J5GXF5iSitiDV?y}KEU zfWU*Om514{A;P8p`go*fe}~``2Pnqzp{@H@i^Er?3@5=+wcdxHMNaM461=Lat}P{9 z9rh#*$Y0Q}Zpdfgv9rtmt=?c^QFL=CD^A7!>4lY41Q#e?b_LwWllcMRirlXK9Rso7msJ@1ONj z>8+E)cOMpH|8X@Cf2tZUs8w9Fy4TM0DDFpp%II8>Vv~+MRpnby0EZ~RnV4FlJWyb9O>;46pAzAdUoy#c8vqOh zd<42s_UJ~_h}8p#S|Tc@kJS~7jM#w*j1^)zvfRV1a@;IRJ}tlR`ElLZ}Ye zweB&(?w!!#aLmsBX7-m>wFg(x#7CEZq3#9m`-P(FWq^ol=S>E}2{L?Zoc{y9LL_Ul zKg9ja)%$9T15Paj3!wtBz68eL4Q~n?t3BHA1hwLkq0$YfFEG#JgKHDn1wpem@K};< z6b*37HR#?q?#y+u#22N1lGfh5;Fnj!ZI>hq@_^v=_vAyL&}6pUT+Ai3S9(N$Gms^( zvp%s|i(*zP$C>(p+%{L_I5C7%{Fdxl>WQmGnMO_iYhh+kBwgT3!K6a=iJaD%wSL|& zU=nL9{%g#`Ka%n&qtA!tSrSi!U(3E~EH}20*xoanS0T-|-1nHUgXvF7&7(V>F(E#|=Z*}(5e8#_9_N6z9SrZnRkdAh;<5Ev2B1Dsz08InF3iIpkOAoI zt;#c2?GaA1w-4UsUasZKG=RNe+-n4bMcS(efc9nc#0Ss?UyKzJ>zf<~ItVIc@6u*M zEeJ$+0HE^i3Y;um$O-B1_o-gPp%?x1nF{?58h?BT{0E($tDI;8!U`~dssk4rP6|z{ zsPe2Fd`IOHVQBx$FkO-EU^vG%O8$HJI|#duWoK87mLgFG`3@C0QgWtkJ_oGU9qAQW z_YOic@;)qLtL!6oCvZ%y4bOfljPe1Zz`72^4D~}$z}FN&dM1^^aT3weGS1^IWG@1p z_WsTksu?b#_=5lryfA%#V?nzv?=EV`Pg$KM3&G$=u%kJK3rx(F3Y!Uxb@VZ}rdL`| z$lDdH8r^8Gwtrah^Ki3OQ5}u2r-%X*l~|zVd_=VXXVh0=J9H8JlVu={PC-3(bt7@n zhLH8QFyG!tINi4f4yXALOi1j0VxFfeZ+mJ;%J)7ldRW6;$!*DhW?!lhFLllD`kX3u z;VF38eJM$e*f3P`+oAyS1(kG=L(K_4& zd;nqHA~hVPj(U)P6`+=VQc;i2?6hZRi%eI*5H8PpJx3sY51`p8%uQ);CL3f`1!+`6 zP4K99=W{dAr>dOgmVI|DzH*^)4Fwnj)7t{4-@bI#0W;~S;Su5JISMgeBiJ7V-;R_K zy%6GQHTvBN(YoYr`q@@wzmZpiSc?KUCTSIRg-A75xUWlpYIs0BbxdMF?)VX|Vp0z@ z1O&08nV)tEo!N?SmA+taIjb#K=N1BP?m+7D5eBQwo8C)SUNYl^!DBWOvRoZLL3>aS zjUu&X)ldAPbfp0kkHiyRRpJK7?e_C)f#Z$5S)38hy+qEt*4oH8A@l`OyfxLAy{!{0rx4VzYM!mT23_11m*2n<~v-?-NwPw9N2TaXoPDrJ&kD{ zE^$F(V}e~CDEwy{!k6$!1i(RcW0!OOt*NPgx0$PdGx8)*%RuE5Oo3Q{d2!llK$d)t zSXgl%2uVH)cVjZs5x=gSlrv%J=L^Lu^qL0=1be3;Amd~}bCwWH!Hf`-pw2|kdpe$!>L7`;X z?LorAik64U3W6WdYW9%O9G4-$8r%ig&*BPZnqTOWA`{J)7 zgZxnNJyQaKhZh)$KmGHt#fp=xlfX(a{r~rWX$s_@V8v`g)92`)85ogRzux~MN$*Wu z-em7q;^qKt1mD}sYM*Wm3|P)l6r`zsBA_}UH#iyr@M+_r0_5+I9i>Jnh5-vDQVP?E zec=lL8bL!NZmuwU0neC<)&v+_N?H8CX|v@S^E{X!J&I3NatcSOS=KfCoRpu(C~Y%; z_ys1q@Jr#(Ryt>Pj>$w?TDyPWp2X_CB_`q5Nce@x%n0l5MgoA)3lEw)*;QJpQqz4c zwRRSOqlBTp0R&O9^@ZPXzJIZJYYiU#U`bEa{Xyz!X;Zi_v)}Mi-QnG=b zl4&sgeJXQp0Ue-N87kdNu(Uq*?`Mk3^7=t~|DtxmrQnBzr%k^CmB zpnd!I$gk!%3=_qiR8GTBk%W4YqmXz+XsE!}?`N_AKhtM}N71J!`7c@|D465qZCvm{ zp1`3%3Ka=0m`Ee%WyrMu`?AC@+u1>Fx4!w@B3SqKoo?}A)gRY3hCxd}JFC{McU z7@R+6uGMBp-$2iPKDSmjOO&+OSAynlc|pVhy;2qQ>ZqT6T=p~@$g5d%INqSCKd5Yh zP@hHUpT$bkSy7c5SR!$Mzmt+m?GS0P9Mq@~It*A4BRVq?kUk;1%d9#35z}&`sO$FJ z`$Yl00{5*RA4c?H=EF3n0K915JNSs1s1Ldm1734#S#S-I8wBoB0<%Kz=u)Q zv<5IL+RczX&@Lcyeu-|o;wj(Kr5_mM(r|d>D;?BraWGj)~r4iS#vz z6XxLFlCSLs0N~WYNw(xh~MkijymDz-fzwYw;MN#TceQwQri+*ZNrp|6z{k|O~O^?)527G7^` z+?}}hOG`$o*#HtoCW@<=KUf*clUMgyXnw#@0@j1YJ&P!DyT-Kgr7_EC^Q<`dWy_GfRL$63CMu9H&z`LL zc7G1{YLt(EX&+5-0}G`x%XUo>(8UrL6?i2sb*87QmNMr*(@`E_&l}xGw3f{`w^8|r z|NL4Kq%_?2Gna=ybdCJH^;`IRzD=)O%pAu10cSyxV6x?zO%n zM4%ObssSP1R82v@lm7Yj{4+VBp@d0bh5pQckXp415xba4sBFWOgc(EC>k&^&OsNV?IVZKaBG4{`y;K|yLuxv6QPD>_6F5$XYfI3kv zi$V}U!d<~bEC6T$yD^0ZCSW?FV1)CE%STW&&JXNec~B`0m;$j#e0)+g)Zl0Kxh!md zf(_{3x;x&R@!lThXVu%#exq{orUS^u`aIz^)9)=Q#BB%fKE3M=0$SYgg}f$^$*rv_ zfmCeCCF;IXpO?Oj@EL?-s`DCIEbWipTWS(G@aa$#*`#eBOu z9s^qokg0fQjR9Qp>G2moXOAYpGHqz#H;eA93#9~+F&$n7OkGq!w0(VUVH|K+YIJJH z;YRf2cfrm4JAJERu!pT-7D3=`hdU5^MTpXN3;4Snr+cOILuz2epr;Qa z6Z~j*3)}3%Hw97%ymBm%@)U32izSS}^cg*8zhPv3$RYERhQu$A+4_#LbhLukj)twx zp<{b=GLi@SjmrBc0`bqK5X=jIaF;?$9N2_J5F`sUI59;HkLnt-aXR=WoBfFBl(Gkg zR})$tU--Ir7JG3m}B*(jE8SaAN4$~+O*PoFc}V|4OU6%}t{U;=JJ z&~{ayOmKberVCZTG8lZ5&tm}mCGub8^O>o;Z+D{y@Z_2g514*7I6lwT<_ioXQy&&$ z=-sGCe>o|KJ$yZi9o6iA2MDC9y`!>uyV@R+!~IsyAydAQVDmNz+riuG7{B#mc*mhk zRxqYeXaIECCMkRQ_iE`P{T+J&B?+q9ux_6sY`EY$FN)6wAl!k2sgTLHcFem zhr}Vo@Z49`yzNyWx}2>+p1YF~0iUwVdFPu3`Dz3>{a%;Yzy)f5hrkkdGO#L~r~fSSqNCoAJUE1W%4t5Ws=ga$em{^*HQP^wmU3UwGLOQax+=2t z$;0B;Rk0Gx#I8f2n$%JHB}x8N?8Kpaz5xo z!f@sr?VNhqBtgyQ6DJ}C5paC~H6~EBQ=o89k+}!DEFPtQM2MUQg8qt|PTb6rcd9YU zFucJ`H=l6T-1=D~>|UGOdmYwy`FOQ2Jw05Y$M7yiMQYV&r_S z++{#$8`UVl^pIRareQ8tce6#z=+ku3&zlqs{@62fCbdCto#B;D=#4%; zMF&OzT0MQs*yqhYOyOeZ2LN&gNma<4`+@oU%4*mi08h+4e~=J0%_to}H_Q6dYftQH zat=nE+-fS2ad&SYKn(hrjX18{#Z11v3F;sKGkpqrF;_lY**vEmxfBpq%L4W`buf^t z{&%x=(46aa1SQ)@Db*#y>IhG(SDvee+ zSi4?M@D3dG1X+}@a<>fga-PkIjU9lbj$!)EFOfvw01DnQrUbY402)ma(6gHX(DIUp z{>?j^9=v|#U6mzNm_o8X4tUFGHJg@Amme@Mf~HCWe>m*jq6%~d!_cYY)z)KecGYK2 zA>3!g8~J{I$m@z+I=VcZ?a4jumXd0vO#pAZ6el{y(Dhg$zeB%|aq%7+QHNMz=y76k z9g`Y=|8#`vFu4-XZ0Yd+%?z&!!0tHsrf%Q^I~vxv4W$(ZaDGOJeAHCL28xQn2bQ1o z)75Uif0Z5FQpmGilEbT0UY7eiuwR;PR7^@HAWMSC_oyd}l-#e^v$lA}AJS9^lYg-$ zYFCipaar?b=^aG!9wYF8MCQlE@xY5qPbv*cbuh!p2A!YWq^~LG`Ej0Yj^}ro^TNqc zk*mRP$9@}>@ugONzRj-R7lTH5F|#$khEW5ye}L~|1+nRyVvGo<+Ao4|uBQQF3BtEN zN^${mXl=u6l+%5Fst`1Stdtx4!P#}+sTEYZhDWKiE@boZ@Ky>(wm#46X<&rz^(4#R(W zutwQFX74sUf`uO2z859iVF)1%RB^ur6yl@J*;%qgUP7~IIi-EJegdK zz>_DS7}2D7qrW%r3&I6FF+a5>YnI(&j2*1?Q?strFwCC1(Ijb%^t=Vm84kv0u|uXeu8$i7~m{o8~r z2njWX&>3SjFOm!g-eVJa(DW*TmsGfwKJ0u1z3`F>PFJ&+# zeoX>q;giF6rj%wKVtWt$$Ky8N`e^cMPhBM=B+&15lbz#!L zWi*x0{(@}v_T(FASO{A)-Pqvf-Asb z@Ah!rTre63bSgs%*(&w-006Ewm`XI7_XCphvmp>^V{Hl6Z^T`!~fAh7`QAIbcGB1kG23?3>+j#uarPem9LsBqWvJ{U*zP!9qQbM0v z%M>Jb2lvzIOBcU=`E-pl4(=flZE}5|DfN_LpxR2Hj1b?2W{fpUYG@~Yb05TBKZz7} za7=`$KGMFV)vwp_7IvxWL$?Zu&qCF(TP?vSOI>8`^ruhKf7CBQnNBm=ov!PAK&P2C z{X+Q+D)&-r3pWrS?y^q6dj$FRV@31|HT?|c!%yzM5|+RF{B01ZctW2yue?=2U1US! z&Q2&DMu=V5UXkBgn(_$J(7XZlxa?IgU>kTw6tS1Qm!0S>nByL-bEmues(+Lw%?j*{ z^?U#ltX*+9e_=6{?gB4DZ+lay`@?gSaczeKqCjJFr^DB@34<3~5)uVQy-n3e?S%r+ zz$ND&M}i~u^QNS%)zr998jxco;GlkUnM%21GEaPPyhGLW$anv~wUG!Q9oye(aIOZ& zXpWQm&h0rYys)JzpTH6buDwKi%I)`la62Bzz~tLQe_0fOe`NueQ)QN&{-~3&$tOXO z#*ksj7CJ$DgT9G9M2Ir>NMFD_iW18)O34pxrh2`J@20?VOICdkfj(M`{K0W&AZb`f zIHdhD+By{Sf^5qL+}%AOYmcE>(ENm3vxZsbmBIR!9WPUw?7e|yZ+gI-U;zH@=U?p_ zKj9;re^@K%TlOJ?kB)qD+Yo>tg={}h*TtD(NQsh0b^FB#<0LWHIw|4hB>!vy6@P39 zv`;^Xg>f1wHb01xkTC@`w7k59C)6JZO{whI&ZpN&ijR@SLgh#w8OU6tveJC4-XQ{# z`k!$PkRS0AJ&Rf@1vKE4l;RGs$;AwiJYB@;e;+2s!?+P0oK-@?k zpE*CPhP9{34dl?6VoE=C0`Rr6gfxxoo?-0DB@rdE)V8|t%e4pb)0buRk4#F{2SI<0 zf50h%*D*;oJqu7J_T>}fgBdm5lnI7ZU!wqU^Dvpq$kAo_8Xiy#2ma#>`yZ*Vi6CAwlimV%2){XpTS z{wANs#DSXk)*?J*P=6y>;{5|ve>SvMz+;zis;Vl&)~Qo7?4$I>1{JGBCkkr2)R`!G)BsJ!CEp{mp=SrsiAbn|cb8LV}Rq%PygzsZv63n zWzHa3YB^NzbkMfOX$wcf+MpnReQbu69SlX?;`DS}OiBItsDG?03Ro=BJgmMc5X1Bd zvOiCf(4qs{eiZ{q;jZC|D2YLaHl(A3GPSB_%w508!NpOO{slv2!DTJ|!MG;gQ)=~% z`No0=1%X}V?fQ-LDzH48KW6bv6@~gM_+vp~*3VaoqGgsPa zLW3g8mc;O5gX0%ACl~Qv7f<#;P=2fK`$xPfdH4c}22jXeI!inAcUL?!C-CYCK+zT^Ar{jLrJe|sp_U~m4hD{Sz# z=x`(wp;+GpZ-%m50vJ-8j1b@3X*t0Cd%&Xm@Jl#cQ#3e8+xaC}@6r~|S8BF2+Ao1c0}Qkv?haW0OE4PZ0oSz`T&+eeC0e9fDr`oN zb*-*_KaQ2aIc0~8??9_l;=}ezeE?&a15EH^0CG9Ns#%v z8o@_(NKm;0W(R2$kiHV|S>9^F%uWGJoI{RJidm`6I=i!+ar}uUuQ8yDxpriC8$6v-(rHC zleuGtwc4(Y~f4lzyB}3`o$rqugqPJIEbSeiPA*Nm?$WtD?_ul#}ZTbK{w4z3fpBLav3;ca!5yLUjE z?cy_t5DULEPxr2#%IR2$+;5lWKOld9qk#ylbr>a2AENCCy*LLoe&IrFwRgyBpcl5s zhG#K(2Cw(kcSul>2P;wg=_2#!=gBDCx^r+rfBl)1D!jLNLlcWx*YYG!U_GyT$2&Rq zl%tbFr-D|?k7*2i|9p}kX#YG3GF%$Ax7LO|*G3!FycAVd`8PPzh>Nu|tnbuE6;&!2 z(^83IB|o%V1C_9xKyCa*Qnq}cBH+QK#*}Po{Z_Ofa$v=Mef4?u3Y=y?PZMpwNBv4C ze-M!W9tZ8`@TpBV*izUIvc%=KPE=^XL_VY(RPqTxnFBS(X!Bjt#W}z`nekR*XClXRF-W$`V{9ZgTGx6YpkaLGz<{j#qj{-AEWy4Yx(2@OcXs=N*Fo|>KleTUKtkdJpHdDtODeghsZ>DnfB48i zsD(x5Xqy#YzVwVwloH4>?dSERE2}M1#kcTYb(Pyny|Isku-O&Mns7}wt3#e+>3?D> zNMtDX#7;xUT8+bF14tiyeVILAp`S(rY!sbit*|dU$DPz=8XKZEzoR5Y#^0}I;XrNr zs-|Hi@`)Tsnbt6zbY-GN=v=7If2VsM%HZe{c8B%7tt!Yo#Z#2I0IZOgrrb|czZ*Uo zsMl?>yiyI^nX#9l3Tby?Im;^R_8vyj?iSERcY*?G?|x&0o+(%2XcgPhcf#-8s0LeW z$=Ecx;-27f+#AWS3ga>bY#gDi?^V`;256;Z)U68&a}|t}KP-anPhLPpf6klmDJ^R( zUyCs82UmKH{l^p4KH%Ihkl8+JOg+mbJdYWR#?O%8P3Ud95#r`?P6+^ovo@YStK;Hv`o{~H= zEp|fjx<%uPzF6E5q2#CP4MaNc`KF++HsCU8L!*;^bZ!1#JfISQi~Xr&n5C5qXI_G78_D6zY92fwC|H>%x>;$dypA zgh>VvkbwRMJ&v&&ne^52ofw1kFL3YB62e8j) zZNF2WHC}&B8v@3mIVq7n zl6Y`thORbFi>sIX56<2e=w+se5czg8hMo>VEs#42BYU+mzto&bA;}!?HF`qh=it$* z;o*|C-PX9ce}?TBOvXRbJu(zB;7Ee(SM4;>o}a2ozFIAgf%ID~mi+T1;bRgPEjTj9 zx;bcmQ|b`RZ}W}YxE}aW;0C^AZ^r%fuh&<+86}767ru@Xnp` z>d=M>|6GW@A43cjrnqQ~v#2{?=D_tbYJCto!fx4ye`~-i-uBV|+|qm#`PXNr0~I|} zlr~)X{i4Bv8Lu9}%yykK)DMD3wD|=34gvy}@}il=vWZ4I9VD*_F_|Rrciy8P6$1ZI zCDfDNMmxe&M%^)Ml$mECKf#Yju{RIgIf@}pt}G9}#NYleX;dNXUh2I*OmsMW_1BKNH>W6PT;lBL580E)EvUP*BcxAop zWeiKiYTT`4|S@0a~~UqMg%!QEs`XspzFV93pNu%DL)bqjqN9M(g(8s|ZwXu95=qSDC-v^M98R7vYl zDPm5Eo=(6c!ft_{$USSm^o{Cdy`yu_f0N&@hufK$m_CDxK1>nu-}ByhrXG!P1w)ze z6%4X{S#eOHB9AZvU6bmy7U8wHo{Rz~iy2nyEzv)WUO(VFwU0`Mj|p_v?T~0&By5JwHFZYnxwAnML2fJ`><9(GDw|FvY;){eP8bRl6ph?qF;>b z>$Oz{zP-k)?hAK=JVyV*`?XaT?uEqV)a^&D+dV zPU5x9qFouQvzv+eJ_EsVqcy*k1V!{ELCo-|7A^2l1eRynC%_6H`&o&e<|?rYea;;^ z{ZMKh$s>FkQ_F1SFQe;uP#Sx3-V=5r&wxE~H7GG{NT0I1f--!4j3MlHe^r=yBsJxn zf!NC|0XdPlHsSY;LPwyFV!nK9HLc>eaplnuk6T4%xmqkk!W)BF?uF#$c;I#pcW2a~ z5Cmxrqz#A7+l$ryqIG3cA2*|91G1Unpo6JB@w;rp8`VE@I|Jq`48LKAMGPg)7aOFo z4BtY{0#cCiPUomR2GDH;f36b)^;z}Y;2riYJ zWAkS`Rk1`gOVk47-bltQdrX3Q^7noYBp(u^voSDc5f->-YJ1+be+@M!BYMrE;_>3? z$qurg4uF7Wf*`mXln6^XfSx4m5z*moZ3VD`!d=ZQXaRT2TINJ<9fP$r+4OFod8Jt9EV-=IY3?Fqr zu&1T*#qbI!HJ*3(qb~!`JnSJ);nnI0i7m#t>&Zv4e;IM+s3$Bx=>U+ypiXO72;RMS~GIKBMFc$pY*|h6xx(ogt`~oGR$7&!Sg@G+IV9vGUcLBxsR`vwDUY zxMt{BF8}V6$Q>?@@lVErOL&pQCFmT`m{DqVxQI{nxQz__rAz0CC+6H^Z33AErqmAs$3NYEISUa>B(gK2+toyFJuU-gwoAGm#Ys5pFdoMc>h`l5iEh7OP z34E^v&S6R>DcXxq$5^6XWZ`c5BzjX(A1Adue@tJLnkd|9&VZP!=MTwg&a?#6Y$A5{ z_Lut!V(>b^W9u*2L{Uh6j?X?D??I}#Gxv)0!`r9I9)1@~61ziY*tm!PZBC1qVjX&t z?SxGnCsY-u7-2r%KgJrO%}05l<3tLIJ1;I`EJE?H^qVi5ZC?(pQy)FBM`9O@j$YUO ze~v(5G(_}|h(hjSDRDmZ;y}rV3p518428UJ-27oH_v|lclkOQfmAoA1zo%MkihJv( zmhT95pgfl`ccoSJkY@P~Oa>9_5WDd6$77()yQc9|=KqSxgor&JKvxOca zh<8LrAKfSPu367TR3CP8y{%{NQhnBTB`E6PgKTj@oOg)!c_W?EuR;x(GmV);e*obo zo_~_$AmQi=)V$#=>8YD7Q|d~>gAYrFo|Fz2Y@&{ zvi%{efJh4+HO@!X8q~Z=2Ia%|ge%MSqs-ml%$yD?B))?>U2cd%SX3cI zYfw^e1>?7YZ2X>I>onR%l(iI|e|DP>%8uS!DWBR6r;iozk_nY zsao(``AuN3fkhB~B>kIrf7*MsLKWKuZn0~E*_DCfr%J>aLVg1r<@`njVK0#C!iRdMAd$cXvaBth8^mxsq-{XR~V04T&*lg4fa-R9OCPb)Xc z4UH>F9I0fM(3;5tb9QVOLZv!pH1XB=h3n7{6#Wste?bJ$alo{S?M{}^ zPovtYGRdX>#-*-o>&>^E3_3`Q*722;S(NR5Vk)KWRqRR$+Odueix}WTQ=iu#yZ)ed z7$@sHQn6u6FVi*i#p>LmbMfH>c4~QXb%Fylm^QvcRkK<&>oeW@g z)w`=+5iJ|SUC;Xt1R3a)QG6que5Q(Iira-)t~;4AK7v{o$@*S+hRH~8Zd(Bv zR{+%E0u0Ku{R(^nC}QSyi>+bCAiwdpt*VCwk!C3fyxEibe>xigKvfE=w|k^1fpwO( zmRkp)hwae>4My)=w?(A&em8B!f&DB2pck$qbgH|IFst!Wyvg!FT&v?BJ9B@dUyk66 zTgCbX`tlSr1m&zB!i~0U>lo?xZpGkz(_&(L zc9|)D>Bt?Ne}pZa^v&bavm)9N#ZRY30CQxoa+SHK)#5gK0JGf-FbQ~I$%dY3@^7m# zE(VxcXrN{AL5;rgUhih20|0kv3z&0Se(5^W*d(edM3W>`EoQ1eb~%7&CmWgdU`-Y5 zH%r#hTDq+sp0hUfcOP)j^SlC20{y+m)j1bMHH~o(f0j8sc#A~zYL?J4-!bT8SVpYK z0tR4Wua!m4*vjh~H9T>Muf$o;?bTAV>FrO`>(^90dJU-paHP4Px&@!$NgJU;ttWtI zBt(@HJ;czQc<<(I?D|&=%q0J<8%v$vh9(;|ER$ltXjj1|ny+O<5NaFxyfm>EK}Or6 znjG)d>*6xVJL{_gS_(ODQC2{$daXDZ&K6+%fMf+i5Kj;EJ^jU7i#Wk6z~z zZ2Uo+*8m`+4Ksq$8k5x|(y)OU{{po-CGHSQ3ObII43X;a1b~N@+>s%?E0kt;(ISu%u?#_2x#nfZyYnUxEGn|*wRK8GIZkGYO;(dZ( zF0?`BBqUc=MJtCA9+W?TWCX3p+4Ujg*o-9Qner|UlQcwayP-r}N)UMOha2V^+$^kD z5+x)79@3GUM?Nkfohd*AFH0xv$r=ZoOcTeb(qP*Yk8$Sm^i_XoXYLf0dJEtvfK^|Q ze>z;}*k|CDC|bMW`54T0&6|UYUxubo0ivKpLMJNb5g|e!8Y-^we~D|>5yWyl$jF!3IS>JYZ;LIuo6V|Kap~-7 z2uKh&;`)F=(!cnVUN45&K!l>dKw96Ljyau|T7XqIlP52~Yf4^ov z;ED%lQB}Wnzl`GV7Pkwefm(n){U2$gMP;4)0qVS(NyjdbNCULgrl_-4s6eoqNJ2RO z4!ID2p3QEox!&Tsm1%hn2%=8Mf8XPW0HiR3Uidd8;iM{P&CXd@0!pveU+<^}6MdO> zp~)df=qMDbfLD-}-}WTlr0m@WU^#jAB}DmJlFgF9009Vw@}c)U=d8u|Pqc z>5k8Co*=RZ`$aoN(4W@|fOBaPM*tqemy5KB2G>oLd9{v@OYwtU>&xB1Fm{2=xnzZ2(631^K%swp=`e3P@DyTDw0@ z@g_5G7lb-cM-hMh-GKSrW2J7Wcae+&0Ltek{%S@wj5ttD^_CVX+D@%INmg(M{u+@D zDBX(IYr5&mH3utS$hUOff3C&z^qaf5mJ->_9bNzM@k7+2&Dy&m0JCIUAbx^ zF6EJBRb zb6HXII?$t7kFqwv2w9AkIR=JB{>IUrKOud36Tu1Z`<>oSGB zXy0G`7Cf4aXl^h4z?~N@R||}qA}bE2MSJx-SgyRA(jXJbXfe%>{K~A8YJCUrH~v?E z=Q=uEm+AHC{?slAf5ikNKwb@T<2S=t<_|OJ&8EFzeRUA!XNb~bCq>6ziI*Z^MM#DS z(xba(7||Hlm$g&bjKJklkKO>!ne@{6-OLu3nUABc3LbvG&*$Jtm=>YGvEn5B#lj%@ zW*w0>Q9rR-Mvs_}>$fd$Z=dG<9(B;Lv4~VwPCPQYaboJ9yyTLv+Ri!6)SO5VA-wll;8gMiqE_wA9MXfO3 zg3SK5mUmc{e-R82+gnB+LYDTfgRAgnmJmi+A*HbJh`n*W$I3DBS9IpM`o<~uK(EaO zmT#uVMmcDLxC-zuL~wfgHRv09R^KTis(a&INXqwPDG57AG#DtIDUM?hplco`p2WA{ z+Q1VW+1`(z0LQ=L;@J0ZqR0U%4Bj=Jbsai>6AQN%e{#h>-L}WLrqe+P?a;R--2rFK znJVbXR>2jSgwJzvI!Q1*#W0m-md<@$uvi~))vguDTSe5&7*`Z;T&z!KKhfhjgooTg z)iTed1kR-0JvTUwdPpg+ht*0J@QVcgmu9;>Mg z2*F}$Y+iPXY0uiJu{vvvpD_@X8J86Odgq+(W1+6O)*V+8=1d%qH|o!=bqNF$3-K}k zpiagn*Tl3utOEVF_)-=&ELph#QZ$5X(<+7x1i@n6w>tJEt2VG!9?nsOL_uK=7m34Anl!i+u zO`;GE8bcENiG@I&`~k4+b(8SBC48&#_`FqPS^W2Wi@cGCLi;6I7Xu_-dfSxghUuF^ ze{t$tqKLqR$4S=yl5rzPfi`B+9xl4~L=Dkga66i?7Owv>?}mZ5%-53At|>FE*wT4Pg6 z2*3zl67n$?uuJ)OG#SdqaV4%>rzg;n&aM?skG}EF0DM67yM@nt8A1E*?*Tw9f6Tq? z9{e6lP2^f(tNPa4^$;j|AP>3sMwKE-%t|?>`_2P`WSC?Y?(xYcXsMm!A?e&FIgTr3 z;2#kiSF%SS^>ozY7Q|wAlY_De(9dt?KE45!OT1KH+BLiwU&bexLT)8&W1V0g1=kCzTc`-heB;pd~p(D_rdtd*O~bRy9axyRY23^ ztP|Ed{u=ve=(Yg37wZ*F^mkCa_!a=AAl5-`hH_X~4&cB6AOt9mvHE=cfBb-B3c8|~ z0RpSmAB@)83(?wT*f3!>qzKw`$HQ0OdN|gG2OBWE=h?e!r<#Rb8qnP^hKOAS@FcdHea&`d<3yxfm&f|>vx zO$PATfV{nMCzAfOLK6a=jeG%+EuzH>UqKfLS2qXf|SV z%TYz8%bv}xK7)S!0B|SrjgcN#+Yh>fGs1w@ud)Q~O6GpMI1C!stRV8D7}6j5>_ z`GFs5`z8Ax!5H%^aTKu=+mp@(G<kX zbL6Zw9%G=mGJ*?vj>4sd0S_@aRy$hkCvCi;d~o+74=|xr(^h^D1Iso+0P8?~2$8ICitnZ>w`MmcVH7%^A}v4;$3BIS;f>OL z4va`%zlY*Eta1{z+aIBK519@7- zijbxL((*#lw!(t~5yyoWA(gxvCPam^JGN8^X8R*d5R>G{SY0{9i!{%vzM!Tkxz6Yi-bg|nE zRQoOvf8?MVbB}X}=)v_~t55l%{+=Y7n4b?X-BaM^5vqo*)g`5F@@`EmJ*XU{zn^Vl zOMqUJ(+&^LiW*3HsTGesCr~S&J^4z#0Tz2?kdckZ5iO!9z27{pnfoWdN-`-@m8BpQ zc-^;7>0vCMTaT(d(m{{b+J2%w15L(od{i_Je+_lzU3tWxNaEHEf%BZq2VbNA-GuV~ znwFBgA@cfE;aT2l`q^DDL35%-m;$^$YJShc1fjfR;jf4GU&<%c(MhkP%1gQ463$5b z``Lh7ye5Y2FVoYfhrf`v26ZGe{Ukm~oep(HhF&}Ypm0D8E})E9u;2#!4(8DJD!)1swi#1}&jgdP!=9J+{s_!b+yhP`q7t?O;Mcv~whz`@C!kaP&hY`3cguV= z0Y)K}4~nTG@H(xAxC5xr9#jHsxhP)R2cRJgIErP#L<3VUGV1(Xs ztu>3+2PO4RaW0AW&h*+!^?*0=pVT2OS2WIxdN&rRA7}v<@A(=XzS_q|1h#ftq; zlQ;RM3Q4jyKyO(l9q}$rQMm}Af7Bj|66ea#*X#Si-P<2&+8BUzrbmY5$&UinfDyIG zXzgjfav#`g@R7Lk&hwY{i@(KI^HL~jw}!;-bfi;nhgVJW^Z5CCwL{p9?Wyy(18Qt( zU*jynHwas^`{H#MKWY&D_(O;U0hRTHp{gqK_q5dvP%Tmvv_b$DTw|Gje~Y{AM-jJO zZ@&OY=;rQm*n!2l==0Wj93s8RA!5up8#f1EmFC@nVon_3Q_e)gO7ppjl*2u3hwXD zNaq2#*@!SI1g3OaNMFz6e^$acfp$9sf^SbKdlz!mpuna3&bF(Y_Z0->9RuaVZN2I} z7YzBrr(6A9DISUtr>@kC6ab-0>Q~}i1$j{^TltVGP3Zgc@QX zIPZ*DgL7VjCnvCN43cqbml(&BNH!nJWFm%bdBufKD;)7NMM&Vwk6&Nv^(}Ska?Rgq z1EJMnMCDw9zuPG2fBiM5?Yh0@pgoM$9hN(q^jUi=yfn)tWETR7u`Jr7gDQ zPPYk*uvwrl7QYvQdSnJmg2rNemJ(f2zu-Rc(L<>#&*>Zs$g`dYkI$(tWfAo02G*sjZFae^)u0vQr62Xa%# zp#qE2QFJT9YbOkqemDx|`2eGKMyRqX-} z$V%)3E_37Vp%?2fRS1tW-A8yR9V6EFhT@CUqaoE70TfemEIsq7&#G$`02KO;vj{eZ z*f09+e|#U$X{q$kb}_gKe6U1)6m)Qm`4Mua-3BocK&}!O*6sB@rdXwvnSND;a+MEU z^|U?RnZ?Bv)jEIA@57uUWK*SkNhlwUO9@TUm%%7kB?Yc?h>C+7emY*y?22AnMm1w? zP7nkzakD>=jWSu$fDVbQ-q8ay2luY3j3`Iyf1$+Rfs>^fhBT~_)DEBbBz(Uc(D$y3 zVh>khEF7*v2!CPpg?H5Tc@ZfTrIm{p;_)B|La(^mTR46Low(zwC5F#Us{sWNH}F9M z51x&mY1r*BzRVv|`3O`_I`c53BfrpTt2|H;udlqV!olDz;EqpM?;iagw%{*T_PZ8v zf03x(QBxTPb>k(<=YZkvonr$gP`+Te@*Dg@Go@+eMcXrICI1ioB$zcN|?sH!{^IBYTK^02J8qf5!Zj0VmeFcFn|I*hUIhmujj%4K)43k~tzPYrP@i z7Q~gvX1~E8m)M_uiqGm_Kbaa(pmFjCgc?&X9TAk^@bigC3C-KOJXBDgeTtWN4D4+2 zKjl07c{YHOV_)^}%b`KEZdwjwyhjaLKOBy7hfq~3@&3*hDeznJ!~IHEe|IGk?kI#H z-UeKB@cnMnHlMTEl4Yqx~D+#TvLgE^TLH8<4${$*!A%D zmt#}Hrp3bzmXeKk$^m3_e*-l~#uV1!LV!B->)NA)WH_U{uQQK>CT#`cA%a&+t+7` z;PG0_srR!Ed4~NiLQRSexP+U^T~PMjY$16p{0TVFb4nj}x^TLtWn1@XE8H>z7 z0sf1M#N6*P^o0{pg)Oh@ZJQi(75d!L0w&cQ3%}nz?ShP9e=AgSAH^v|nAGuyxi^i} z9f{y$vy?P}{)TX|mwMSBkg8tNoq?2NEzbvJS;0@Iil=QY_j82k_fFiEDu?he#9T`b z?ucOSG-?Da?y~A?&#P#R0_9aUpN{hR4#x1>owSw35e&GgLsV;X4wIn?kkTs zme;Sca=#U1f0bfEIn6d046t(``2er|_k*Y6=QlZ+9_(Vn0Q^K|XSW=42wD9kBCW~B zv5kwC#->&5SkQ6G&n7wI5z;?L@R#6CzeY`$QxgpW@yiwWj+W&QFg*ZOyS+08*VyE| zi!4mSAh>=44|>X@4TPym`e-*6X*V;>P66t);Y4rlf9dCO-NcFG;~YVJahF9H#ZpAp znFMk$N)gP+Xt`P^3p5Be0Di}n0$9H z08AQlDRj$k4yJ)$XZ7o5o?V*wC&`@!LfTivctaEmG}jpYV>#b%11li3A|)LfsYb6g zZfnFSe<~#cn@Nkh*{~B5nro*o<99Ul9l%yq$32ix=|&XeoB%jBdf!6THGo|o7=jL< zuliJn6w2$GJRStKU5E=C3qpP!$JH$13HriF_Ez}3B)+GC**nkk@+Am~pqJE>ZRZ5C z(P#o=x{03-G64!(5!!wncS&ZvUd#Xp762abB!F*1sFyMTbqN4JAky*^_`I{qFrPoRg+E+@cMuURFi^CK{c`42s$`fM}HEm3XBP ze+!m)s#xwk*87oicPTxLL)x=}yYU`ASQN5NkY#Jta&z#P6xuf-&4&VS5hIJG_zRg+XcscUTVo*%kPR@+tM0b| zju;ZW@Z5mEJ(AWhL?+K$aD(!a(uJoue?hG-eB)`rE-Q}pFlA300Sqc8D0WjAIctD; zbx%ES-}VB|EsxYAJ)fD|o!|QTu>$n_ov~^$n03;U^`uB0w+319N5Ev-N{6wy^(+G#EMi#YeD2sd-#?*_x^S`p@7N~u?_1CkKM5$-*wtkiB6qy+$63ggLLnx2w$ z;~mspqt1*iH&(0yird#haKuH)`@5MHrgVu0q_cwmQT2K({~qXp2ZBve8xR-dUOJ#B zCeZo?M8(#2Cp0PL&C>eklz8y1f8P=cd-RJ?MqiQ}Ltl$-0=3I4{`)0j5MlAj*g|Z# z-clntdn1_-Av5oFu>5$~S9z({4ZO!P7mDpM*8KaCx={4R8jBvky-Co)B&L~w24bfx zbC>x7VQd!Q2Khpk6>P~rmjqBaMX(nk*<#UEVCb8mAZ$P!n97wyM#qEae}IiaBxsldSHMxQ0fIVLnXllh*>~+DraW(D#!J5^qy!sY9qunD1}g+01?CgAtoy;t zCMX&h;zC9A0cvh*aZgo_*B3tlenePRp_r4IdhhF0X;?vPBm0x;fc+Tp)JuF`Urcm? z3()2apVtfdrNFQ`p=dcx@4#z-p)4Av zD2GCy+%z`87LB$A$8xyFcIJ2a7AUou&a;+G2G|kWW^{yQ4As(K3z2-N7w2k=5dd7Gn zi|ap>#u0W2H~5Cj6^IzKk*SOc5RTAG>Nu3!mkQtzzy)Kf%o)+&?eWurvfjUd*U$Tc ztm^$<@_Ste4!T^Da3S!?davc>c=RV~A6LD7j{(Yxdds^mtRSY-YEa$JvPaSqkEH&0GL4qIYBNdy-7!DB~%>2l_>!P&<62Syih{sep8WBMSZ1N zp!q^S=76&hlNiRZQ3CN_B~zk`1h%ZZq|C4E+YuFFROWrj^P&TSlWu+}L4ZPbeY>OB zbZAz!i3sRq^!VA-C4T{zr>oKS0d@xGK^MPWB|cM8a6dB87W3;0?`74=FO)^~;wq^F zPJWC_-B2Ty$VozO_Ig#kFtzsX)h&BwoH8j)8M~=LmeeJ>Oi*Q`FdSg4asKfTTUQ(r zD3-(!k7Ehl=WB}QwMs=SmiWU_?Q{Ay;()@nASeegde#ja7JsbEXl3BITX9bVurH1` z5#~dpg9WX!#O$o-EEvcFqA&dNg5)(*4+bbOxRh@BackH5_9CtUYx29-J$eB+Af4h- zAZ2aDM|zA_>7(x9nbDxjIb=x1VT6H`bws+~C-=9=leViUJdCG7-c7Ub)(R{~K$V(j zk4VaA5@zCFSAPI*EWL?Fvwu<*OIn%TGBTX()WHA&qNmIE=OgyT zrPut7AMW>NceP(N;ZE35r22>|hR+(ukCyf7;46QnPblSjRvhV^>g;3b&DJ) z5`R1+bJsQElrdoza3e?JyU6WVt6j>$&nA#4NGMz}ixpomgMgc0h=t^f3W5=9f)s{7 zU4Pyy5MXp`@Qo9d2nsXz{Jt5>&G)^=%cCI;!Kwh2@#<%h&EcS*W6{mW0tY-XTb-7t zCpY-&Z;L1W)83Mm1`KC51$li!eMUuYyDDl?j-(X%WG))o*JF8!|H|513wuS?{DyaN zd{n=}jPv;bK_#!Q)~jurAB3oGg94oAvwvB+pm#a$Jb5JXVD$LCwL;-#*Kgv_Bb*lA#>cMI6vb|M4@cJ7;T)d9)Hqx z4GfFSu#H}p|4~$+Pp<}_LZPryAU`b>{{r6S`Haa6+e8hNonQV((;-hH!%blNHoL`D zYt(DdP0_ef{`Dq|Z__ME`oSr&xEaio@JEI?j|b>h#Y%rSU~H%_`bt<9kg9&}cpe6z zS1X41((?N50>#9E;|Ij2g+BmF5r1=q(pHkA0xgS|w*%m5&*AtyWiRr`4;YZezH>^E z0Hd`lNM$A_7jegy6w#xazitFcy4aIgS)<=I;8YO<%o-+%JM-r|7|5YM0~Bi+Y#RRWx`9w2mkNq8q+%KF_?2(P+_^;h?eaX3iGk@TbIpVk! zL`u3r`z0)EN3ah=UZ-}G(ZvBNGT=|&&6n_N7n|TFM<(4vEhGNcAm|b$et-S&F$R3EUX=1x?kMH9`(!vPw-X1*f`a_aWD~f_cqyaB zk^IUfArqbao&fQK6yq##UtBi!;#Ld>=3UOEP81Q#jUcSDKqAhz8S&V{7C<2=b&XBx3>5(n?{p*8~RQ`N};4$&fngfr{j52nsgYPMl8$kN)M2s3zN;4RO_4>^ePd^fvo zc!9J#94#Lj|NYwnla?mMfe+~>H6V5LB}yfYcBdOV=zXQ%f2w|-EM1gT96*}o#;dD5 zF;o+h#%EwxS|mc+tbeT1!W-xycn#9%xqf(uisaHaFV&fhKII>(;ahYA03;`F-K1kf zY+zd$wfYUR@dtEvo^R4rRtIsRsZLRTV`%iz5?*W2S&gTSxDUbm-29_{@`gR170Y~( z^HS;SeVhn*UrF^&(aHo6MP})~2$GkXMNS4LO4>3-AMN8O8GoEia8Zb9?OhY)AK*%c z&Ddn~5+~HUW+02>iFi>K&Mm-rxpvnf5*!Ntnf=`gIGXmDbMQ&>4dDd;bdwWxSaF#@ zac|u?V)P4TwA}vfeY%DLCbK!Tcn(uURAqtykgqst27-VuUC>X%CjAo)!PRJdnh%=M zjTFWM{ednfh<|IptO>d6H(5nGs#mZRinY8OhiI*ZRRbhRfBGlZZfOA}6#E!FGh~z1Qj7m^&lecH%VR654vWgj2ny^1Ic9rTKgi@CTS$f$l+A zISy1Xj(>s;5+W@%YELSl^nFOl*i~4--tPOF=JG8XB=~{pjK34cSMDP@Xr$?o7lrx806h_jvD;4!M= zud0&d>1PA(6#E``oHrsBB@4@(-WkMpE(e#&!aogMK!!*DB(?9;@0b_p2%r~jY8>*hm4(Blg18p9db$(G%Ydc9|j2idxZ0mu{2uvWe;DZ>dQb8DC3-kv9-8V zP`~oyb^BHl(#&trx?CHyrHReCGVTj#??%1$!%4>w3&S%EfTwQ7^JzW85diZu#Pw_| z6%W`dveZHyW6cZj1^U7lVG7l`aluR9%6}Q)O4hoUa>MGn{!pp17LBCDr<%sW1|TyP zFxs4@{N16DV)6jYMt~dS;K(QRJl7wld+pRflvg3sUGT!uO@Jx1=%N|F>Dh*}xw+UH z*L^)VeZA@A6?Z9K7Oz8`3ME*M#fpE3;5<~8S;$!WzE9qG5-9c?P?7Zj^#9a+pns`W zd&%)cPK2?cT3q_(h_4-=hE%B8xs?P|A0`NiM>^CQQ$A0}hnqRtfTzX@%ZdA5B_@Y& z;(R;5#~)eneVRxaPwrxS^wpL1_bfdrt@mreI9Lo9y7jQ131CpliVm2b5ZNsTA_;9`DOPL_Rk8`@d1dm4eb>*dMm_lAO@A0jqJUokwSd~ z9?$>$2&TRngcei_Z*XeOLD!$R)_c^A)SEIvrU(eIRA`>MaLzdTN>=jU4}TdP`DZ); zDX7~hI7Sy2b72u5DA*Ii>Nui&tXS9ZO#+R<+35%)dj+VB=%*_8!_I+qeGScp5<4Sg z-?#h$UiTEL21vD}Hao&QfHI^~KwC1f-EzC)m%neY-V_ zLh+5qv-VOpTFS-%QEa}q9Dg8=*IJN)?s3=L8vk*0-s)~DVHABJ3P9wNi~x~yhsYU3 z=IK4hu5RJ)T0+Cj{`Xo!n*O?6zP}~c^cs*80Xlw{j^v>r7H>d;S-|cTL>;PjP|>YpYW`Bt?y9wD(HNS}o z7l&_XOxyeMi+Qf>r4tQbwnCv4Wo^@I%?j%$Z6lzA>mHkqF8vH?@^e6}>ZNbw?s98^ zyu%I%&`%?`#8U#WoY!lwa@LsU*xI!-wKKBD?^Q$ValyIYz=fQp>2vXS+qCacfH#GU z$=|Nx!H-)!FGKL{F@LPJPxD$*7cJgdphhLHIlk4JAOg|doM7K07&1`oY$$_hDSQX| zC1FXDo+9tbL)+iWnV=x@FHVeg4RU8?ha4JjlY*HgP~I$BeQF8Cy*|bH-Pd0smy2M! z<#7uu`WBJ=3rng&&}E;D5>R?-Y!ncp@7lAicF!6Cu?Ab;Ie%G`)lFP=XTvgkfRRXg zd=?awfkV`9H3?zb$X$jphX(9k=|GoulgSy<^FPD3G512eTNFR$Bz{}$xD|3=fkEF| zg{vb!ib8wk22rv@b}TXf1YN+^_wS0yNG;IWB8k->?p|Vl=RjFO%QBnA{rzsJ`w|3T zN`s+?`}rS*S%1K?n`c_;;S92d0A(l{DnFnv3&sdCp#q`=0%ag?apWPxG%ESTilDU- zTy6&1xWh!g#+te~^R{=>e9E71h?{j=+Qm2 zfnXS|=sH4~hmL#$Y@?>%jsgdUF)fNg+y%JO#Ah5VEq}plbQAUsRP(}a>lEn3_Uk?T zAg=+Nr+^qByfR5{`~Ays5xXkCQ!b{@Bhoa<5L?UAZf)2JIbsiK<^)MyVfM7^C?d+= zH%e{s+Rg4PpH57>9*iVE77Xa-P#7>pi!UNwXAg|b766;dtGQ`$(y|YT56lZcy8;N4 z(boO+RDYtlPU;|IU>V||RL&o?dkt;|RLp8e42eG8(STjH^La5x+OtR$;exYjf-(mZBH6}J6xf0%_LKSw`MMouu7X$y?SYAU2}(ClV)f)OFy3dghWOE=7)b@bY@-=n8?tb#FzA^1qAqv!dRz1^wca?z3ObuU^M z*k672F$l)Lc9Axsy&VxUqXUc!yQO%ulo>O@qCAsepzGNPkVhflk3;9cu1GC4r;KmyvU)3$Z@jECF#@if0! z>&@xBf*w>ydzYyC{@iD5chJWkP6_-gd!A8Y-UlMMNOO>}864IuD1Hok03*dpvO zf-st#A4NjqG^kCfzARaq0q*?%V0eF@Z?+G}%4=-p0zI640iRlm8@L*-70ged8Go5= z+#)I?DdxcUB`U-_2#*=dOA>%1RXt>70&rhu=zztwke8pofmD;(xptKvbUfWn4WLt! zM50M*;sn!FdtMUIpa9+ciOfW#2LJ^QEYxuCbeT{mJN{*F$h7pyB)q#@U;0(^v@TST zr2HOWvC(cD1Hc0UF>!il1P?>K_7YN4%P*V4?YBxR}SNpe8}cH z%<8~G0@nCJ5kRw*J~I0Nyu^J^IpInRjp_!@%`CKMuO1P^bAZH0R>?WpOTDG__F=BE zv=K8+Ov$s8L|6Iee(Byy2}5p4A0RT10oikO#(&xkOd-4!55&Nq>Z^BdR0Xry`2cPBLlD|(5fPm<$5hbPCD zgSc+l`pwA9yK8Q5viR`VvsK-{wo87#zf&!BA?KwU%g6lh%ee*Ao(~WHLxhjYL-?`9 zLs$B|nh;8xW^O@cfPFvV0e>mx6EoaCU>^JZtzK1BRTZdScg|*9zPPu{_gz3nPa!}U z1q5~*{V2mcFNi^$Z9-lGnVQ0&;=do)a;siMnB)z&+llojsAHXfcV}jxicBnaf6+#C z;Uo6RYu-~ZVFow~OsA5H10~~G?eDBORdNhZ?EXFI&VME_8Z&%Lh<{7pjk$6gW0)ZC zQHxoClbAOE_CQCcksNbWq?Ij)n=o*$Y`r~?4;UGS5B?o87tyhiJZ~HUt2_?C5owoU8900#;8Bd^kX3isHx_Ld6;Oq2V!Wy5ag<4zhz<>bqjUAU`Ea z>$n?am$F5>;K_nr+^h&PC2~osjZ9#^n`f@aOLt z1g${d*{4E5A9tXCRn4EJ^TQpER3Z|rA2%x$RccPqFajNrwfICK2M$*x@=)DR!3#hb zZsSFJhsM}paAG!-UJ=_nF5sw4$(trFJi{x}M3%W7$0n!zs z!5>n5wIkCfUG#<&qEG}eaI!?9Efijv!puHDvWY=CR&I!=Lh=iIjCi*b0S=K(VI*(8 z9mESe1guld#VpP>?^lP7ldX8`1SU{O7sVySPMfrBtYEzog?$ID-CO0-f9Twa`cM%= zz+}iL;XPBXg@4LdzZ*kh-|JhqY9WkX_!FIE0+S;(f%#n-9`)}jKC=C0`ug*MJ?pBg z4a;8$P>q{a*$I?&wBRflr}BFDJ2qEH^>O7rlrp$|Cj-)yyE|W0ktErdwUy5+z1?cL zON_~^=)5`$vv66%4USD*T#{Z)c3& zy=7mHXheS2G^qV(lxY_Bq)QJhiJ@o!5uobBqBNhb)}PF>Gl?U02W-4J4RAilk3NKr z{42*(Wq&*45NYYVWKQ`mEHIwu)kRY|4B#rL`(ofDr+rc-d@ibqZWH$4$afYzcK2rB z5^*H1TK8nV(YR-ioQm~DLZd!6b+5US6S|!V035kGt@OA{opx8N9X|+DGs%M9pW1Xx za^_$4{>>u$;l*yf{Zs7Qj`YRFoIXrl;lNxyUw?9?1yT0e20_7+Uq$VXangj8CDqqG zg7j&D6Z{=uc^i;#W|_u%j`YTh;2${Ql0pNPpJ8jC+w!6jNU6BF)cL~c})j`dt)%q?b>Pvm+>+hF!EA)F61w~z;+hc$+{q{Q+AlC!z zuYW$%^`<+!f&%{UphfevpN!NIJiR=%I@!vXf=euwh+!;%vFI+%K9 z%1cddr6CmW4GK7$fV&O*{MdU&LL%+=nn&uNz=WT(qK^{un+{FN5iu3`<|`$NG--U=2vnTw%j_edp5mPc!^(KvyV|He!FROn z`s2JY$Ot_i#ai15Xf-IG|{=6`0v1*(hq@=b-)DWEAI{gtU`b$ynV`YhRH-$$u%n?Bch{4!o%i z86VvsfYJ$&+qJg3BdZC_@Fyjdto+nW1>Vi8-JCJF_(G(uea=V?$SfiR4QzR4$eo+- znT^w5jhc2-=+$3Bt=(Q)oN(?Y@QrJg z_|#}~7G6E*JTQwF0A_xD?f?`FEW*2c#NPMJsrpP8Q;z3y~>U^mV>ldcB4y7#PC z$r>_jkf#|)S6B0AAQI4CL|A9b!d#LBRt!){st!{cFC6g?TV>7oQGb8qwXef9rL`bX z4%XCuy}iNfZXR*fkizvDFwG88HWCmlP!yC_fjN=^l}A|!N|Dl0$tMN-)A(%dd#rH} zaS&aazAsdw7oU#@d{kLmdGuZrAsimNNjsaMkTlqeUFF>d1XX>a@5fP{@`!a%ST*A4 z4VvhcW&5Fz9sw%i4}YBPX+xD9D+SDUJ?B#`4-Az$9%yJ;F$|31>jQL-y1n8uE@7Sp zQ64X>nk9hkB(M2|f|F?M(OcuJ2B|uK1ma%`a4^KZ^i@$JvFL!n*TaH-ew=~Okq!q} z_C~h1$ZaZ~8fFLXO=abiL025xe@nRf1)1N0*ykf~nZQRY8Gl|#uCr=%mv5P8<@@*s z*Tc=#kpm-KW(!b~bo%&>3lZWQBo{Vy0sYb6qxF~dZUF?bBH!WiWkEhKmc5P7E1U+r zNJKg-LHE#24S&$WrR9(;{I?o9sL$hF?$ylaBc;#AN6!XgSncc^f4)isRuU5C#+8{2 z2Tah%Qe8jD=7K(u+ce&u2Bo}Y#Ynd8ItU#(WDb+$!v>2cJL{%n_tF^FxWFGQhRij@ zbns4o!u10R9vPMqmahO=bh%I;vzy6_;eknlb({S+g@0E5(66nK1PL#l3i|3C;on}- zStWMSPYBHAb+8<-pZXPJxTag?N9CtXHZ$)7+IPdEH|!wU(=hU&LF8NLyu4>#R4aRQ ziYhE+MO{!&A9;YlsxjI7qhJKs)1hJ;o_C|3<-)s=W}sF*;i7Phocpck@6EsLvoRI# z1uCY*0e=WgRTA`~fU~9@jMB-|d6(2J2+xf+g^Obnlqa6?LP|`&u{&+sipAv+#$d|1 zOO__T*Nc3>bfuC={&O29oFN&6-P{^Sa+vZ?^@v9u6wl`G5+-sOj(@L(u}D@rNzyQtC6cErJP&Z9viwu4G=ORhRv3KPilAqq!t(^$to|+L6C*-TUKU%K7U2$BeY^Z>t#!(VD3?P>(oKD#Ha)I%$oti zq+Bqc*0G%|_*CBhn!f|+g)#eLVhR}09hqCT6y5YuE&2CdNUZ52$DtYT`2s6L1~?mS z;lJmwC4}dvptts6y?WdDj~xw3!QUDDTJ@I8#<$T1FBh~h&G!Nm{@~SL(2t9EY=20} zO(m%B$Z2Rr&&g z>kQob#D}<=Ez-rZ?nCX`)507PQGb0Ehj@uib_*{dxky4_HuWHb@%juR0H2sj$w!ig z0jFs~X0>rzJn0_5KvKFo)4D;0Bd)sd1Ja-IYjWOT4LoOwez{Z3E82uuA1YhL>!Is- z8)(3vI>I;Yu$)ElrZA=iDi_SDRtKUJ`w>K7M{=yngK9T1KSx|xUiSt|I)7iC$l*6b zkD7x5gR~FOzscpct@h3KqVmDGb@t7t{VAV*@yfK~6bYC4JR&7I=B(duCs*K%3G-U^ z*CTatD+4QTuFhcm^@5XfJBxQ|zyLBQAFl{vcr7^IUg8C#X|&qrf>KDOIPt=B9v1_? zVIV0kyF%$4m;NwI3fhmTk$L;L|}2E_S8k6bDG4 zt?x{jyW;#2&={M&e`*-PIQqLm&QW9L?TF^WQ4y2XdiGL)aI&6n;AqDJ>rncL65L+b zYxeUI0*JHu7k>ki&r6>Cj#~9ial!fx2Wh{u8LDMbdD2U-o$!g3|$doxa;Y5^a|r+?n9R0VEf66@6$;qz0y0t~=Eh@ZHPS_pj7lDl z-)6a}YW1`Fir;a$hO!K{b_HqP-K4uPznWL=%H(z(UsCwB6o*th=+e@^Z;*XRET53? z8#O7o(8RNBo0^M9BDXOExP%2)3a>*wy< z{UU{LPb9C9mfxR|Y3y4ztC5xfBx&TITQ~L8cUAM_CsF`D1fSKNiT_T6{;EN?WNObY z2p*}^oKQu=UVK)*cFw0=^?uFTwGb)0Y4kMQF<)6B8aQf-&+PipLLdU>qx9ePDI_`o z#ez2DV7`j#jDH^Fh6W?-XK3jh`+F1&3=zEn2E)hWtgSkK{Wq4HMd*>CJ|i1Dek_93 zrsqj2(px$)V9S_#bTC0tOHNCQ*ZEHO*#5A8j}m3Bt-P$m`_ckbMu#NRIZ@4bbWuHm znU)Kj3pE+bI|1I7b#9{ve7v>Y4hN-nF6(}%QvR;e0DoFGHz$iQkn#9P*t@4ojErW) za7@82dUxZ1ae}*HaRu9c0QUlB0e6{ zDfJQvkAEr#A{praZ>OYw1m?pr1P)M7B`OS-SA0$aSYYUt2Jedfg(#rn4{tCk5 z#qtCL+tKzTfJu}~*b3=arlj^LP^OGx7c=EJ_3K90jgV$2?XmE}^X+RhmwABl+L9CZ zm*-|*llbft`He?o8cTm+F?MeT-~tvk`U|1OL4SIQ2P`9c+Xsr>>JK1n|2S>Jq<^yr zC5PzAs6SJVzVu_! zZh!9+p-blma)80%WfcJZYaB{3gg4yN0^oF{DIZ;h=DzPiJ>~o+*j##hVwCnqF8(Ty zCRHqofbD`H99ZFAW^{=RYQ)D#NcYQjRrD%M^rF-H${T%|=NDyM#;5yPxi(A+4>5GD znaYET(A8DrXqaS^;cW$*M7$>ZiaBlR-hX`BbsvOs4j7j{q25 zJ`yY7?^s#dV|sO&{L(8>Z(zKDal0Z$dk-g4@LGJ77Aq!{IN#?d5h%gEi}57RpMP|e zKmBOwh@OD*jq2$L!w3qLM}A2b0B5Eic7NFi+QR0?TFDb+J3*)#k3P3&;NP)Kn~x(w zq?r|X#(u4jr*!7;mAkPEl4+babpNw z?nbPZe?6*{HpTf_8Lo|bb+f(b)PExT2EP9Le*{!ut731>3xTP^7%`rSNOkHaaWVGV1H`xze+3f?jG*kQ?0*VrsKXc& z|03XT0LL;5GT;5!?g5W#rwV6<7upvuX}c}YmAxj9>I4aM6GF9EFGc0TbL+}Xq;_Jx z^`peK?ujhU$05}arud4glz(lq`aT=KvYp-8H}?)pOhtcV^PtvoA$YTCnl_BI76el` zX8brL2vVp|dNs3t=qLbVGuMJv8gnt!-|)9PEz-v&`}tO%XH48g~bAS7yyQ zK&R9$HfT-!{XSa?hRPK&lgfKngu%K2Y@DeU?z>Go`zXX_8SzNawSUUAN-I*vU`ee(3{_(QrHvwHyA7WaISTrp-@aN7UpRy#kU$A2|R4)SX=BS131X<{$71;<+@E}yA! za8I6e{q^}tQd=wiHK+RzC?6lmq+c=_y=!S52VpY0cY-Q!6U&J&m<)}L57nl-fy#iR zq73GMOcA>Y#D9D2wlI|G{U(Tc(npPN#DTl=gVb?=3fk0N%F`eTRa1{xAtS%T;$Y4`(`@v9_VYnHR2d9(_czD4u~p!K50 zPcPgA=cl=+*HivjR|niJKT-A5mK|{pB5v=1CQihpb-lN9p*sMyUFywAad&^8;>?RwB6H_jq;MJvE?)1biKGf1sK}-VL0H z_REi0dw)_Owp4&aY1*lzRqxQnX{+i*%R_!`%ryB#DD;zsN&=iy?(M@Ru3rA9h+lJ* zRni4QMK-lKW_lQ3mJsM@hDV|ah0n}U()jIc!0<4lV9C1(A_x1b_-JtuB1MRtFwz_z zeR3N`R}&zOQ8>ZuDPdc0skX<0PPf~nVL}zYA%DQG%7XK%5*aH>n)h23zL9nq%RmP2 z9_!6eUNDj1Y&PiiP2O03sPSj#y9axGc9~HQ&K4QL zet#E0iHacWAv z6B(WGqwGxS`VIpkc;Z7OTa_nZG*o}ZK2K|9`H^0vukZx`f3u(*DRwIt5a0~NRFFQ< z?%a8G1cus08Q!g7JxuuZn9u)iVR&*UYAUw<9J)(zw1ivku z%mVYf0Mck(pO@PANnLz9X%JdUT|hJioAK|l&)>z1o9bfz@!O~cUgdn=V$*a zR}M_c!4I?nm2f@60=ynkPDe@+7zg!91-*042;&e^_ z@xFxCuLAg3*c9ab@4fCf)7j^kNPnWL+O^8d6X8)jXsT}L{)O5v$FU_fXYfL;1N4(h zy+1q!mx%?Zvi${r_rQwpGmd7FQ_pDe?)mh6sm((Y+1ZjeAL5nsnxuN$Fo6S1LhR%!1nGSaiT>dGDvPyp8RlbGJn}HW8(Ls zm_-|Y{WFk?3`+Du^~*M=7|H^u8@&`a7Z;#b62SN&*Q5l_^~5FyJQMQ}tN<>T76iJr z63KF#Dj6cnBmuvgVu&>len>S@RQ9fRJ>%=+ds%W0l#uXkBYvPDKYZ$D7kb1Bdi}mz z5;Q_w)*V$VkIL@Q9)a9gDSt+2$85_jMS74_$BbCv^zw)q-!~FT#M`M)E=OPerm$(~9VG$w_H2jAJ{HB4e2Dk7=L$C)Fj6p&UbeY-Vw~$@YGJDW1Os3?UYF zz9*il!+}jH}e9dSgNefx6}eFcoP@`!+fMc z#4vWL1MKTR9e>m}VElDK*zkFw8warD7qXr^V*gg4Yo=My$sUCtFyTA#20m?^Y0fKO z1RR3dmzF8Z*ZUrWw~(ou`-&C1AH5Hy`Mb4+KvJUe9rmf4Skgc{#B5tP&j#BcQ-vQs zwCVnG^IpJxLc$m;nSU&yJw{m>YBIQVPfq9{yeTuh34dAdoSnqa&$~V=gme2ChZchd z9nkCQQt9?=uC2!8<JPppr|8(%{WR+<+T|-&5r0e0a5s z<+{3fOmQP_$sSeYh|drt%%3Zy0W1i8N}!#l>GBg#)MtIg}EK`by%v$gLzA@6gN_!-oIxzoQzGD;_2yXL(V zUP@LR5MKB+0-8s#=hVryZBjZzYUkr(8$3GEh4CSP=6G7jo{bn_g~yu!1c>P>c)XgW zYj6#A0a^4zFTcBu%r%HV=TT^rO#7=s8LgMs@P8LzM&Y6)Hn+BQ%0L5lQhLSf6V)?b zp8a4u&!-aPDR!;b&>lDscqmMW5q&dBvtMKw|PD@+SGhge}cXY(tdyBN5kzm4qyW?_KS zf`3WaLKcjWqw%Z38`TI~P@2>plpWn&E5^NsqvwScoZGbkr)GM5WV?&w-UUoOuji-- zCzyqVAGViQCw))Z3s5EVQg1c=n`qlz^goQ8V+Tk=zaS1$=?k@B6Cj=xsRoy@p!`?; zeKQQn*jp~XG6!>ggIPD=trJ;Q?s+mibAOsOA}MxC^CB4hl~;i)4j|cG)=26DC>_jL zFfcG5QVs+;^lIujLF#3iAS;itH-Ss14|^w|d71zHY$lhx+_#o>3835}%4S#MgeNxK zFB9s1&uw)>s-?z^``dk@6HtX;vcdE_SkSlzSve<lbyT&WcS#2z{c0V{*~(=evr92{bRLsmpO({XLEdlRsM9=EQCCMb@vR z%?a>_#*UNj9&nSi4>&;9Q?Xt zp#kVFFJuQJ_*MhIhOgO?_?`FFC?5b1oIvh5V-@H74vdF=O+E3ts=sfUe1E=34W(V_ z|L8SpZJz)aIyDj3uvj1kun#LEKIkPqx5Kor20L91tW*Ex^SCjNaBPeCtL*p9Z~|=( z>?v!Q92nA@jT(^A3j(R5kl1$wlxn~E2|hmg0#jT4Du;vw2fGhrZ*$#)^_LbRK!xj( zmoU^7hkSq{uStg0TzUZemVYly$^r#7F$^FvO}C#ARr3}BZ@nw)U|RTtt3hgv&DWy# zPFUzd-7P`9fid;*UqE$Xz&vynEhzhgmy#gkuWJT{H5Vq?L&9%Rg(183Xei=1o#Tsj z&KObU->;M|0Lh>7%kP!$QTGpKJVVzgmXEfsu1V(NoCN_fk?Zn=AAi_c`-BAl)e2)t zSpAW|U}FK>2PXLT2tGF?PY9IaBqScVI@PuK`Z=|*>w6R$rtE(Zqk9_mP=ut8iaRUL zkDA%(G*^Su<6gHmNn>!}He>K=%JfoSb(H|sa=cu7?~`aP{wOoHUqq05(57B)u6uGV|B4Soz;r|aEZJomCxOGuE94|^X@7^mCyC+ z^ai6j0ZCJRWV$#7%zd+i4e+XycW zo!Ej}Fn?Bm&)=K5;XXmE~{HOzpfk@*GP;o>iT4` z%|ll=l}Qe4;=pGx$%{X9{#DxVomWUa`Tk1xr2+wEuuI2!fKvJvsM%&3=QWeslF

PA5jMNn(J%!>lX$~rFxcU>z<(}4kb*yGnkD@Ck?sTqGf$B0gx{8) zcva7LM%iP*aQKBC7i?L_ux3Y=gpjT7W3-J|*s9xjqFj4fY)2l4yZ-{{k(a_!B*zA` zmXsY&L*~qEB=>!`H+^k2sG-$QX!0-r`=f^k5XQKx6s|X!;Ai~(K(PDK(-GevTABc#EW2sp@Ln@g2MKD$t7Ohb0J0-uS1)Huy znm7d-Ru5KD*c(!1(nli&f3alXCO{6Nu0N2pBiP06I%pKe z?Qp44+J@&1?N82uJTprU6A~0!@D6Ow+>lm#;d6f=Ei3mW;rwwusRdQe$4J*_fyO$J>(asb*^m)q7ntqMNY`s|zwk0H+-4}A z;D>yCv==s~UJ9>yl^4WUP6xb29e>~34T&1!3&;kjaqtWqKk-HZ!Mm4%?9^sn+jIc7 zkQ@vuKOAa7%Wk|XJU??E!?fqZ3w-_LUy;=liGT&$KH=JL!Tz|(=Q9CEMCZCisYsyt zwexYmxEPw@6izsc_Oq;neuD@Jr`6mSa;mWRypxV&Hz zq>INx=%4?MGS=8$M>8|4eHDYBacrndWBv5RZttvsHeNjngUhuwUp67seT^3ebm3c% z;s-l=#rO%-w{X%DruC67IoQ%JX8GRE``BYDJI@X%aUPG%F4M!Ym49)VJqGI(xm##) ziRpt|!R;&LLkRl#dZvXVyB4T^3~~#o#(6^6b8dYsDu8W3<#IpDQeF#CG=MpX_TscD zLVCA2Pc}C94Cp{liNaOc4+PeGS+kg}(PE{e?IJQ4u1tCn@+I!lk1y|!|H(1@_32-$ z^6WYa;z!R_k3~ZU!++mcvDC4G)g4$}>s%>YtW4Q0G7>nQi+OVy{>5zc$EvABEuQy?akqnu6>f_x-yt}|LW>t-;9e6vj(E! zHKU#56Q=glbEB3JE~_n%iScoF*OGTe>Es)j*9oPqHE@191b^}jTbGbx_vLgL6>BLvZ*jNOhGhee*xlvKX)_s(mt(Wjg?j_yevvHM)Y_QE0v`S zB?G#1MBJ%NdqWN%y1uJhYVLC21YHB5q?s${H2m8B^?$!aa=6`xAo5~u7t{R{$wT5#*wA%FH!RpXb5CzDRv#Kh=`x-O84)&W=1 zzTIlOGv5B*d^=!)LYAvFf-692n06I;saTB|DmAMysFs3ZA02(bm5z}cUz)R}zhFI1 zqAvM}#gLhuEb0AwyFDxip#0(;&DLG83&HASu@exp4K@uf$nin{<=U?Uh+fX;HcoV% zhku9fW;^OlHf8|iXWi`cmDf|+#m_uOLp~(M56*tlwei&J3?v=#cVA!m-}`2gEhPzN zn?Llp2L1J2B;yV=cs5`r%JHP!3QFl);h`STAIfjiY_pP6;!gz09FjUYY|A2=hLRJ}dv<2ijY@4%4+ngSH5G})Tv>6Os)ls2{v<`;uo<>doX6bRXa%71EC z*wl@R2=N}~I9vc#K&rnMlJUbVNXdxw>>+=BxuiY1f!<2A&)KPpf$};lbOt_u(C<-R z?@l8aYXq90uH9#`FrrP9?(#-`8|3trSm&!uoIaf*U(wRDiYU`zOr!MMzTcRb5v3Z*hY8ReFzJ1Tn=DuWA% zjrJs{d8ox1ap$Q|%?DljCjoD_pAw|`;_2$WM!EJuhUxHI-RtGUH$d)%GG%{^-8Q)1 z?kW}i&)_Iw~Rr|o^5Nz~*zO*99MLHxCgMTy#6m*!OY>Rm7< zbNW|~{7?@k(R>XJ^evZ|`m~&mNT9C(o=FZVtpdX0{UGx&qnd}B?i&FvS(neYr;4`G zNv9$8dw5`P_a*h>t&ay71v`I1x%MjEfN+x--*}dOdBD4%m+w;%Re<5`yN|{xGD{C_ zn*N5L6g01W>C|%eccz>wPTU{N(cdv$GWCaZ0+(|-^llCnrc!!$);#)RWJt&D{Ounn zlg*R_d5=F??Z@*|r5QXaNge-8ml}rcQqiisrU(}1X}1F*Jw_`Nm6Y&s{icEFYDs_@ru>^F|78*lV@ z?phY;zEqkctV;me_2mnsWeNKPgaK3VFGh9zSQ)7A(+t5BPiVGPsSfi;G}xC;H|!Ys zhB3Rc=Gu++z`mWn=oZByfsybU% zh!1`HhU;ZIhi4S;vAf{In5l}R{ zAHcU;lPh&m9De+>mJVNoeh%o8hgZ$&-;4)Dhaw@uZ-9(1r@j0aQK2=CI^ug7k@}%b zRdk^<7hMpGjlRwUyYBM}pm&p=II4+!jkNt%tQ9N5KCXY~FUTS_!H8 z2l=!T*(>vtm(kK+po?!2xSUZKng<#pZ2&?CMV5bA8FnnKsXUu8F7pa)&rqTw*t22t z1A)ytLazpM8dm2#FPtt_=1NdRC-0Yi5Q#OoNT$8 zOFDnX7&{4os$^rh-bxtyMDgK==CXkP8HOFbV7S*KbbgaJi@uLFMIz*NkP#^@H)vri z_w_oD$U%-0{(CO=WkfGnE#IGEVD9~D6c7&pnP${t|D=E?2GJs6%HK)sM9LR?0oa*H zK^PSZi-Q61SzB95|D8di2>tvIG#RIM0o8wl)Cw;R+kPX3mSoC^eR$9suNr1CDHE6h zAF(M;;HgG;ss12TqywPhfz2=zjW(+U_XU#HL?mYQu$H{zoaRKii1)J9(xi$cxI4A% z6}m|(;w}iZuXLL?2I!Q2(nAv0nO&3V%KFM==MOd%!|;6!ey0orSL6VC^rvS1DH(tI zlO7`)OlrA#mmu=&Hvac|V|5AG@x}mGAwLAoq%fOoE~2KzzG!i*<-|sD5@4s98xRMP zhWI-6tt|@2B}%=`X+Fudy&4#>T0LA?sghfulRj3@Qvq__TboknAr!_J1K`lnDkjo$3SFT;M5-xZbE}6sc z*pT0fZgaZO{_}|H9j#|IC@NtMB=w-bWw>Ck@bF3-!FOTN{G%8PeDOa>gYF z7BkhexOo)!0f$!%rRO~}$%C0v9C2Ld76chi4ZEw3XI zU#v-{0OU8!mhI~&$CmWZg;q)h?LR!9`7+YZkd&wgm;o1tW8WF_LlVC<!p+1ed3)r_PFp0K&z5KFB&qu*~<1b6xkGq$<`rwVuq4_{hk>o{A z!C*TGUGC5hO2D7Z@y3OlC5wM}4ZJ5|f`dc4$qmt-x5tk_DfuC+ia-vdsGXVt=cIV9 z2|2N{@2dRVO0w{7FCg>b@U;zv9-93eZOuBa*Qb9G2ETSFs0l_9(HH7!^`e9AK+Y7` z`WboEuAv1OISvT#xgL_!@?SPIW#c;cBMa3cdDVAW){K%S{^QmfRK0(Rg?q3>tQ&wG z60qnCpLqXB`twB1;y&DuiSpL2Z1}>ys#)WN8=~&KD8yp}YTN&9+cJVp^Cl40t#8rS z=;EcUg-BR?Aqe{y-~ki!>HxErkXv}B-S3D%ujvnfV>*}eB`izp``~Q?oG6UIvFv>O z20qZ~u5=kBQPT$Q0z@m2WoRL5`$2#H-ZHQ>DC-;nY81uRC;x{SteL8S}` zV)%}sBH|#7tvK8qrmx+JkQpNaqkuUZg7~~ZAYh)%tg%h0XDd{7_Ta5Ur2v6MVbpO6p6KbVd z4K$){1jzdP8KCQR0F20jHvM{afKjb_$rFz2QjKFATrWJlTuiPy#s&U-UrmAmaMb2p z>JCSPmrnd+4ikSE9j^SG+h-4(=DB6#Aqr}nsv`g zJKk~(3sl$CzQ({SX2MJOG@k!GMNy@sq(}6+ z<@g;4oqcN0;oD`NQmNmb5^K9f5M4wUWibkXGCd%uNRWU1=es_3iXRr3Tehg4k!66w z4uH@%;zjA}Kv|aW1@(z40|Jo-ByCoxK<;=B={Vo@)iqI2Bjo2C#=hpPjWcyQ1BE%a zjFs8nW`}j=L~uA}GgU zx0ObAPqZzj8wlox+BgW--wwuk|7cjcJp*KDJgQpPjE6)p;E0_-50IoNz4dSKha3^m zQ=);;fu-{SJJD`DGv(Tow{$Ynu6Vu9aDMjDkL!Q=AOi@vUsyR{D+L^KU4Haaj(c?R zidWE?aN5U%xJ3pykO9BQ6o-E6-xaV8mhd5t<+(|{9jr+|fj0T&wV03uq9)o6|iQtxXTGi7#N3 z&kBENusq9$Pg`h{x-P%jkvdO^N5;3yjUmeSATvyE`N1m8LO{c+uj2~k2n?iZ5)rrK z6#<@RzS6SqckgWlIUpZ4p=$l%a|O*c4gof5-Rb&K7*2iLBo>Iv=5?!7r$SEUu1~AX z7the!>wIMU)9Y!!+-2d}Ufv{Ye|g|z<>r6S{EWQ5u}&g_kgi4F(HFfZt*_;xe%9*y z8KCoxz%L1S`@K)Jx-vS7^bBdQw-rArdDVx83 zVd8tsn(P~=5|8y*5%~0ho)OH;at;4utSRS7e~%6|YI2)1HNJ8O^U=&-7Eum=pTB=E zUtUMPe7LaIa*d%>icWp`qf^(2>Qm(Y+Br;=7H8_ANtTQGI*F^eE&N0D-~RP9`2_Bi+XR|#30(~;t&Y)D1rfr#hU=stuY=< zUN=0%e?BxY&)?Mp)DE@8@mZMdJxMFWX;T^rL#n(xhxf$G;=u&q511)8^bqkP{rzAt zv<~+ZC3W)s3X`LNb8m=pu0wwb=qt4_;G{itE~|W0K|B1${8f-pK#9?tU%p@Y)ByAR znTS_6lpyW%#OE4vJ{Jx35C{H{@`z$^?2Yod0n0D7xx*l-FfR_oZMjkMa(e3{**9if z4>yo2#u5RKEN>~%0#TR`6kTXBTxL2`7r}(DcYUvec49iluW4TvQwD#s!}Jb_0%6f- zRgX^nX}|bzm)o{gJ-z<^x+G=l^N4q=#(VLW&q>x_(a-oh?(&~fcgt!FeZ=M^E+$9> zlag5S6#a5v{d8b=s+b?S@!igIePhwl-a<%?IpTp&*uv#pG22jhhqrO56m^;%>!5Hh z=tW5t5M}ch`^5yGgrt80-?7?u`?h$|`CdcSHvdxmKlpv|wJLqfN#kkJm3g6uq^&1&Dy;T5=>U(|x`C*8W! z#3XwzYnedNsE9Vvm9;;GFK=T$a(Spy2qTdK;@+`C(p;YsMjz}XrVbAu zp^HsUv2KdouSkD1TVC(gjbBpah9&z$Z)6e4w1K2_8GPfMJd9$?L;k)pp1(JJ+^j|D zk?RttK1F-H{{AFL{sqRq7(HkjAjScC2pUe6OTN8|GPa9;)gmhv{oy5^Cc<$}3X|Xs z6a1Ayy{ySHDB#-e7esJDW_I3}E5HQhR|{G1>UN%5_qTt3d9XT=)w|--Zkz$WHf2An zePtJfUD)lEC)m4jf39@+1?1sGl9VuG!?QOiaK&Sviv+m?6v4BS4??Bp7l0o8GYL5;yvU3XaR2Z2thAq|pJb(7X@f8Ij|zdmkma|tdYKEt z$RV$1DpNNc@}Ro?rq6n~4t^9c+&x&!#s#Z!(t&@|f?r+44l?GFhBP^VQHjLg_4iBy z5bu2R3K9n1==%G$JNml@5Z&(tVUPZkKkql_+cZi+%-`S#g0cG}wqYyiJ0Wp*aE4DX zl;jNb|Fs9pIv(5i(`=Ndiy4yvx)|)hwGpq(5MuIMfKW-00t_TTX7TpDTv;J>Xt|nu zdP9GBb?Tln*T~1bKL-wIetOl6>G>oXiTz;qkY&9h8fcWlSW!Y~0K4XP+7 z{U#^vwZlJC*m=_^gugFC(!K2!R~X{GxP5E=Rjn*|IS;b*#3|$B1N>dZa@~-$vFH-0 zaJTd<+Y$CnbI4RPy9sTM$>vFhQJ#~lYg&Kf1dXFKt?l8{Rh{^e(yFpfl)X}g;zk?P zAG`}Q1-H&j18!d62ce09ne~is8s=wwGeRi%zL$q$I+7Vih2ouV7ikYNllsXG@?bPz+mUn9S>?CcSMaR;A#xh;?n(30O}v!reBkid?0_r zJ&JJ<$v$yE$#7w4kza2-2*MHP4{s#ncZ9@Ha^xNnl;^jcAPUUpbxse7V^>4_5MQUw z#c1Y&JUxCU`}e!8(l1$#M&F+p?8gGy4)eyVzlYN#-u8f;FRzz{G+MHg`4yX`&tmTW z?{S;C&|xsuWE^dvAw5KufA>!T#qob_pH64&7rqTWk-#+vvW42w8!{1D=YeVxHh9d( zXbv&B^7YwiuhJW$Gy`~NbBIU8C?|vbHJ`=q-h)`uHCyDkXp9-z2KcPhnG_eOd%++T zlURYHf@xdooOo4Gl`-}E90nSJv$WP|#(ltl?RGVQHiA$&1AH*u6gUjz_0)gqeq<{x zXHuYlkm%E_%WmU>&)3M3k}t~P&80Uk=Q-+I;0&^PZ$;J7c!#?r>jc(+1v8AC@PpV`|&==Dj_!`S9j&JuB#W5)sDMvRpFt|wK1GZt+e^>FrH?y6t1TzD^MO~`Q;IPz>)Gl zMjI)1vE@%O$ciA1ugr-VH%3~Y#KQ5mwNE7=BDR%Wvr3it9_+JCK>>fST(0$&Fm|?N z_dSRGC@!Fr{uPo<`Kd&3_!Vl2DIW?J$#v(1+cm0N65@+dkDl*$y-pCRdHc%p3uO&c z--j=szL+$X>jP53tI;4q*w=L34=AHr(B-J>#Jr^;690Z=^;=QhcGl@4UGMv~ zA?6Z{Q6H*WgAi;=-znQ{mkAor zI0N3^-{uD+ary|;2@JtGo`VQATZ@Mj$pwCd&EI^KY_0iT)9ioR&VxTI;Kb=@QW0+Z z0xdCouyz7k?)9t2z+#D&oTLu0t5)=jlgFTy+yCf9|1R)=UzVcLLxi1!r~P~tf> z?2ilgzIIbs=t+9{^d?j##ldselKqhf4QGAQK8h@;e^CnaV zh^F$XA7KochGTyXd|QCN^gG>I7&u2jVfMh(_UOij(H|0_H_M&m;d%B_+rbQuv`~c2 ziqS+??m^fEg7}b4{Di&bA5mc3T$2Lm3~As-g*&~}@U;uCt6~8mm=$|k5#hT8JWp!< zfTz>dQoQ{|N#C)%!4Ju4Wdf+x#tFgE{g%s(JT@iu%F};zi2YoN^<#`t)jQDD%ENkq z`K7~7tl4__3KOSl_h9?`g2B5a@p@*MEK0;GwLkd>gwz;5{{70DCGEZ2=wBo`K-x;s zlegV(kFNsj4S-->O)GC%SbITJ9<)o6Py+1g6oJEN`XjK76gB}*rVR%%9YNr-JUDaZ z^fk`4VEcdN*X&d7PAYJH`A^?MK5j4A2jHe6I4tqwottJ6BUC2nU;s=^1#mL|3Ri?$ zuBYLO@gYj2di>sH8}aj{ckEOkUhaRio2Sz`AD|K#BN1qUtS=}RKu1v|#k+CqI@Aq4 z=ob$nZG~O`YHw8+I)J-Qu0c2hiIpS%qFxVW)hU1a0%wcW3-;2+dNu}nXp98MfAtBj z-ZTelj7$y8GB3bEH+hR_QPdT!p0oEv1G7m7yXx5E!H9fp*-O(~3$INs83Xhj$8^9w z)aRuSl8F-0^OGmH&;3k2iCJ~hj9}}Rj)nblcSY}@q;Z}k6D{pl0+FrTp@wsRWBOxu z_q~6qy3;l~18u<$O6)rMVL`LDp=zui zL1ECM0|G1uKI;*`x1PsZrSG!W%x%JP5i=6slFH&B@>UVYW#Y*@Fh;j4o#auG%r zQGyns;b%;W=3;S1bjU6sRr=i{F(t3z#)B(Gg!hYL6Mo6ZXoA5c!us$1ja0P5zMwl{ zOKEao2+wH*g#Lvze}S{s@2O+yAi#+i$iUVdr1^)*II2%)Be{n>|4=V9mhnOE`cHq) z>S~Z2Sb<<*;Ly;qP>e!-x#RL*9N!o=i>)8kCv@(03u}@LiwP)Pn#RbqIJ#T?Obi!N zUv+t4yn)|+DJTH6-1lc>kq06q#>)Oa+l|kxA$ywpq&1CJYqdxVLkqlG3az9F+#1Kh*hTt_Rr@c?O=Hqg!wEKU)k4~@dRf98Cp5dc7|9V|kj z3racBe`~9e6W(SO5exsw(o28euw4*)KK!=k0?Y10o;XdNAzm>AwyZ<=&OeUtsWom8 zH&sNy@B~f}gR&dNak<+JI-Hb?Q=2JQrl^m<c!>ioqxU)AETDY<`pN6$oXuz@2t zB+ddO;JW&u(>=ieK0QNSfX~h#Rdl^|si8P{M)d3g&RD&>&bsVl2S>TtfL? z4SNE%j>d^}7b1I|-!Fd?ELnJJv9uncPky|_eE54*2FRhfs1?E=G80qIcOke3ag|_- z{L^!pt|x{Hx8kac9hzR>?6>&B@57$%Z~1$QbQB9(tiFk%gK>ySgn4(`q`GVZ1tudtzRjim&kwAZ=Gc2>+Yd}C9F4Ac) z(!g5Ccvl5z`uiS`L|qkh@&^)a(xv$UjPV;9G_K|6zXuy0rO5jc9Ic0)RvL&pI1zTO zJ={E8$sKq3G{h8cXXLx3Gm}E@sD-A21hgYPk0ZI|eYjT@L+Wz%8azI;#e5;2c`L+&PGpBIpv<81Rz7DOyqy=7W8x&d>sKyDF969``=pb zi@r_m2kEspp5g3a&B=!sBed)E(gT$M$O$H*3p3ZqKOFl;D9uL8Mz_AmmUzY~PtoDd z3T2J@BNtveE&ZK|m}4o0Zzebk;UP2QBBg^qMhQrKMet)}fq!ZfhOrX!n7UauRU%MqO0Ir18oB2%YM+C9Y zW`A+*Q&5__vUb^i-2)f(Y00KWEcO!Jv%4YnJZD^*3KW^sQJL48!6tSsm{1+zhe1<& z9D-R2g)c-i&C%OH7xV6F>>vPP3JWGfJ2;T5AdY`=?&NCOB=Zhw>3wDfE11tHb5wj$ zGoXlQskcjl#oA!C0kY%aHkEPP$+tQ=fI<(ad4JYx1N0yKqAWwYtOgw3zu`Ju(q&CR zJa(RZmw(?aJ;gDaG5$wBb97ax6%TMjD6I8(U6G8hH=A#>DZ$TjP!*0USW=P?18Adx z6dQj#=*ZmI6hX|>V9yQLC&%jReyN!@%})4;4R5>wePUb}gLxr<^JSv6!dK?^ z3-_o`I;xLK&_qrT&MMAcU^`qkkfA~BM-YFQ254mgps&WG4WQd3NpbeND4F|Z88C6g zp78OLB02CnxuzfX>Pzj*y$=73n3cW9?e3%tFF?P~KJ01YG|^s6oO%@!v~@uO=;5@d zzb+eSY48d*Ns={a8W{h6d2OJBn%pncnSde#M9k1mcg&kTNgvC?e5nN|`~{r-pP7H6 zNPB|^y39>*da*)2;DwGu3RR7v4hqkiHnnv7^coy zmWB3vmXVmAfYqe+=i+&ggJk_wnY;8dQtc~RLmS>+%4v#)0Hn<<$w(ROtQbb$91yv6 zK)14fMl2)ovt+ou6A?k`9c;ADFXw-k%cJ2QgDZX1ueYu4rof96K9o5O8UABPAk^Sz z8ry{VB~#bZ!XSQH`zQe$mXp*ExHb+AwRGmSI@(HavDVz%%LFJhQawH}cw51Vw{>E6 z%g7;`4nm7~_gR+&M9LTW#mv{YGya~^6#0%DuN44fZD5_nmj;lb=Yy+1=%;f%;$OfOtF}+fp$6i?^ zK`U*~V&8RIc3|hArK(r9vBQ5v`(Q7Vf9zlOP>R47x^lIyCJWz>^>u9`>#_G^gA|#_ zhyvbcCP2bVe?WFk22mVMmf;@)pjE+Iu1ijGy`Ys0&K_6lH#D#EkRXvPBkd4O?vBx( z-1VXo7z1Imw=-!?-Hc^v_k}wRv?jRXXOitn{bJrVAeQ7j@HY}ctNwqXcsvHjH(C@e z2db<3s@xnzsIc>JrMLs{BbU3*Q^t9%6Ihc*D;}o9)MSG^Sc9SCjK(k@18Urz9sTcz zJ7mOlTLQj#JACOTU5Muil#H{^54O9ZsYviEQMP2@121vD8WSS&FKk;1mzuTz=~@_Y zE~#7K|Ec+9+tve1d(CT!o)mZW0{fkg;zr-K_`I`UFrisdTuWORR_P$bpZcZE%>}2GrGIo&)r>L z)-<3Nkx&kW^<#fJ_l++?;~)d*re2L9fHw^|J@E~a>J5xIz=9^QExe6|w!$Kq`4^UZ zK>=ey*qo$`NLT>$6Q?Tfa0K}=tq9QkBe!11_O|$j@*6kUYJPUra3p*Z8TNQLu8`5Tr&(AeMilHAqZKCa92^L=%y-MkQu5 zSE0c?>QzYZk7KNocUE0^4LA}hks0#aw3|C^!dLS(S8K`I*HYL3Fe9}BZe%D&)2^oD zJx9hkkBA3#l{H|E_(oF8B`;+Q*JM>y1CHfZwaUwv-^&ai7l;7VeD1^ui+-R}_@yZ{P|$ykSbtUQ7yz(7ehLP-K@jRVK;jjBN;XftL1O-&Uj%`fZlE-4P! zq75q|yGtH>H9#YYP_n>0EX@gw=^nqGT>L1UT|wY(udIBHxo~~UPWh@SdJRzSd+l143KvmQs!IU!-khr0tz>guFJBM?0|6(~5NS1|b$ z5HoVf1YY2)u1UG?%;4lwRc42mkr{%E(%OHd(71zh2kcAKM$yU2m?pmr$CrZU@B7Xy z0yT90Qg%+q07s0H-ppzZA#sxJv3>C!O{mgb4y$7KHc`V@`P4?P2zv1A@Anm$v{HF_ zNW%(hr_XIzttVohY!4O6TiLtA5}Yyi6Uv0qj3@gPyng>`HQO$4H)He>{O$Tl%+g|mMr-E{S}>hXD5s&A~uD#f%CvEnQ3N--Mc`$HO@ zFR}Ki-n?RY9iGy9)wu3$FU5LJ;+oa9U0G&GI}81K-)UnY4k7mzxvv0W5eb3HdcLhG zRQ)N?+ist^vBu8s);r_i5@jp_E7`A6nPtoWJ=aD9Hq^|JEn+ zm16JXjSxuha=YK7U%lL??;1SWQ@{OsGbg6HULG3ayg{k7$Dwk1X;N*8Y@t@*(z$uO zIW!$1T6>-Rw&UT?dQV+1cw#`9^;Ni~9eu9E3*pPQSg6pULxra#n#oYc&Dok=seSE6 zSINN$E3EF>%gYdjkuHSK21kE}1TVlmNjw=sePLCup7-g3Euh)f;MDp?5`G0`=IFUmTNz7mxJs;p3e&c$2n;5?fR_%%HWO} z?ei-olPZ{EII`}N@wKb@0l@y@lYRbW~3PNGjfmG80(=`?W@~E zHMgU?i9Z@G1OCNRPYESW^pIm zZt9oU@~&0J5%0!G3)6}SNj`Ab9pe<;*3sis@0a~1Fq#h-$6=9P*D4M-=LZzP8w>7; zTQ#DmF7~A@U^X(&gn1W^FwtBA$bfjH4l^?fSb-4AiuzUUie zR5*d40{yBeu7x-#*{~V(($5=4A*_#|rPj!TI6?gFCog~aQzXl)jYOaDuJ7-V3&?** z38_yTfOt6+pjy8|W|PHyRETly{9Qfv-?zViGPgZodGkpPb^DIurB6If5!3kZpmsqo zBvZ9kX#VkM&K4k?HRz1V;RLrXZH<@^=5&Z5qSv{uBy~?!VdO74S!9YS9SXF+WonEn zo@g(!L0Ny{stNp44#2*Z-y)zOIOHG13=Dn9*nz|ue49f*YF`JfLu%6(>&^q8Ulujcrm-fBtSuM=sJ;D2)`2mwz3_WNCBhl6eR`&P7G2uW=FLce^U3e#-$1% zP=Qz&Z}8G{YXq}qhT1dHV@6D9IyXyP%YnjlOGRUV%<2jKdXDw zkEmN-M1|8AlvbzG=X>g8<_yS}J=^Lgd{te$8lP$R^xjyahN0e;>HX4;obnq9k{wR4 zbIzJA$(%5`yFWC4cpvC!w zN&aJP_WN%9posI!zC`Yc*7UPWn#J`s2(N!%syt@smq1oHeZ(eeT(cXq8x4XXYo0FD7HfL@(;=e zWDmP>%6B_160s zcRdO_p9{rN~sqAOiOfF%Yj|a{^5l}b468h3-?=Lg= zqaAHP{Buki7GGi>o8Vlio8O8gW*mQ*p(>Plf}2P~XHl8koRP}Sv{pzmA-Gay%X&}5 zdZRHYClNubJ1b_g7xk0gW#XO(?8zrw_4|HUJ}A={uvAlnpqB`MY-=ey{B*JX{wjdU zj5&BiSE$3?5x*rX!QL~sOVRp@Mu4-zW&*G^oJLs5t{j>!fUy<`rbvW{%C&!Y0bXz$ zikGeuFeq(HXtL%D3XMk!LYh=`*(2jH$NDK^2OS2hA{AC5HIF*g-aIs@1GOIfK_MSR z`G;NE0kth2Hac!DK$Z2#2A4ufTrSb{D~ArlyR8|~3D%dt%N8bx!92gM71lhxhXy`o zef+kS^SkAJVaS5NvhjWfcHMtDuub6?Z+u!>?`Tn5m%yJ&bp|rYXn;iQFt`~RlBS2- zi8G8$#y!^&d}=;W%fsRLNv~14PWYrqGsuDegI#6cK4cDmu<0qd2VAC%Btd1m+V;rN z5m_b=z0e`4Oc{A;3y@}ojBDtv0Pez?x(JvNBzuGQqlQ0Ky&pe8=U;zpl_Nmh9H zo_H=mU&}B&0znSA^u$7&U<1;67KL9ZoMT z0lDE(YWees`5t@x`ze2e;k2kQVY6RcH9&;4N{?mNseG%Cx+;|nQXT<%nnu*B@;sq% zbpTUWx{acM3fds7E6w2>dC9;w6>mXsN8x(LPtpl(U&llT*O+=8R`^6xTf%CAmM&)q z!eAQNqy=D|?whzgjSGj6S^eOT<78vM%Ao=$ zsZWtsP_!K6So?nyI_scop*nV!^uOoYn^X>mQGaCqfXR$#9es{p#TICc8?eSoCP|!P zQ2Zfi{w$L4U=N~5RGoCr;P`-<)CCr!cK7&%gZRZ`xbiV$V~`sF9Fr10q?9EKA}fU< z7lj)got1I}3fj^iW6AcWLBLA~MN%D(AeFz9fveB4@9lqaFl@z|%y*OERb3L>R`k?- zhqBnXA+e~UHTj^_sL?O>ty))!1^|#+jS2KcYXXO;PmSO0uh{PCBvuayjc;w9J}4BM?NSI5xdVtY4umBp4wPNtG zi}kNqi?Dwi>brzJ8@~v3MH*DN519!ktVY5H?$W^={ooMtWTATB_7-w)P*W)+{$2q)zt{micVIcO0mS0bk$9lC!ET7rTYyq{|Y#UVxYK=hO#TVk++ zVaK$)v>>K+w&-ZqWB2v1I~Mg6$KPnZ)%0+pSh7xB*nM9D+!&39f=YZg0G5prfyAsu z!+$Ilekbd#IkCi&y!2ZOhmYX(QtkQ^+26=e45z>H!TqYMzm;NA`Grbphpwf*SssIr zJU)MtG{2((_lR+*D3`!xCm;uh1(;l#h5EGKb|hEh)Ncoc&p8TmKDGg%hl&&Ol80&qK@4egl+CeL(^ja z-T87av8Gr<(TKtI4lwT(*P$#$ej8YKu+V&uRI~cn`x3;#wZP64K;t3?p2w%ou{(dd ziU_*Jfn5Pk803F)ngT1)erNv)u{KW$kGDUT4?8+FKIj+c24P4wL)vV;i~X z$5Hd2f2Z{K0*m^(=Xr6tWe`C{6^nlzuuUCFPYS(&qR`{1;}>*Z=hX@3H9j(aZ*e!$ zbJj`5|GFrf%y~e*!8z=qlu<7&ZPvuBx^_`4k%Q+3jdnBFkLBngZImCBjeHERo8oGn z^#ah>%H1gz;c}jzC_U0adB^nk^)QF}WeBnX_6`2~c2pa)0Rnj4FF<9L>j8hEzN>yl z*Swki+d3IBCqy1l2CE1RsHvInqwzHvu8jv3iD`o)5mGn6y$!P6cj?gp<_Q|eI&@!S zj*NkeW_A?;(){qq$VvtuM5atwwevi?8#5rb!l!#+D~-otg@+9nv&Oyx`r0;$y^a$O zkm^vg`5uKXh(|BxbnLQx|TEzx4V^-tug!#fNKS%UQusfaGKg~hjg&Mz7`VkyQp~i zAEra&?j5L*HiW3$qW2y!p39-kI42(DJs?P8;A5KOE*4a3-n++iNiBb!MKV;xz5Fe# z2|C4F-{Kg>0Pw>EY6tYPAL%5LDP7)x6zA@i5v4^Lj>%wwCOc&nDE+OhH%14%P-24| zHz@2N2#^Pk&seTME+YOjmV`O9r?J4N9fB*Lp`!i9`;?IUg63r$rqS3q7o2FwnZs`` zrec62%}_MOVN67i-r;}oid_?j%yYvBLZXeG>f)CUlr>sDOH*aUjlMP%l5jJTv9$Dr zj?B(Pe(27fi*EA0fj5T`TY;2MFna5OdrbKZXI_;XA35 zOWYtRcNYT6FtO0Pn2pQd8mlCAzBb?SzB9%?g@(NBME|0R+|P}#=Q_4$uQ8?S+dJlI zY}F|==A=i(j)ZLT@w~`E!gmGwfes!%>{fteN?rysBkIoWhd|Fg4Ax?==K){QeA_n0 z?}~N1&o*p%v&?^V+za|$^gR5^KvNfB0MMCcF@-2dc^VP|+oBN2J>d29MGp~Zfzb0Y zHN+dx`idn5e$*M*S{K*zfnE__(g#oo3p}8So@jGBkjB}?V5w&O_G`hDna>j}j%vc9 z3h-)*jq4>rc{WgA67xgigazen$s6K2ou-V&kiO_b(Z_$vAlK6vhXhJ-<$>maVLlco z>^TU{GXIbL=u*TqJq@7NdZwX200%3*rn#G_0Y>56ehCRwX|da5yH79?GjQYbAXleR zUi6Hj1ZlL11MKsz7U0n?G6~Rp0*rUj&&;j%3PmEy2rdt^qTCuF)e4*q{6%UIO2(a{ zdV2^!m(_oBg}eVYO7U&Z;uX<2^!lwE5?x!oU-pYZeipE71cg6u?i)Vs8oenomW~!R zLND!PKeMRmfa)HUv>>1^rDyihpmqgNE>31B)TCngSGJZ{ohT8&VHlfQlu#IqlNm42 zD^0RSv>ocg27b>QN)+4Vyh2TFMRrkJ{X-wpS(Sgk!(kSSv5zTw!E!SWNvB&07u;>{4uZ25Z;yrJ3JnrYJGtRqrYg%Yv1E7cGfMhzsZ&7+>o-e zBXocH`!OTZX8%!i7F&)&Q55|k1`s5`5O;TG3GNV_udi3VRu8+XBiwh-K08GIytFin zHJ{G(U&g!!X`>C^z*TlXGI~b+bXS6+?~`}u8ZT|AW#G3=6*m8v1b}ZgPoL@2N+a%Y zs=!!RYe};Ic|O(g)g@Cde;PnAL)T;xSonWqMU$P(52_nvzjRX#aZ-vGPw5w#Sc=~0 z=$IYzIoAM|cQ@SI5R~iL@=*-b%pwGI7#PCkpSmv-3Whr)iA5!Guv87+SV z7fRr3V3zFLVpwV0r)I@0GE?c!^6-W*(3)Q3UK*m7T=xg)wLIqyorq$&SWTMQ41MV2 zXg-+_+A(%0LE)|hYd{U|0d&w@WE_G>K_xD~H1a_pGYKLgcaH-gafU@P;HpWlXz$7o zEDBHB7>Q8AB`Z_uF3anu*@{g7P_ciGUNG6Lr*FOAZ_4|w82nkl`UK8>jrz8zMaC_U z%38EWeNrafjnp)ZV-Z4^af8m=e*ONxXFzC}_?wO5eZ#E|=G@vNi~;mRl*swC2Zpjke zM*|Q*No-o>TtpQbZ(XBRh^l{-6>V@d{F}PG+C==Hr`{+eRWGS>Ui1)BhUyOXw^T=t$6@=<9#Pc_#f;%G&i_ zzf9vdL~YZ)^45J(gfEKCfidX~6-ghIE~_Cc(2v>g=-Kd3TEzHK!q)Vky^MT$z6BGa z$5+UI%^hQ$sls*IJ_JDz>T$orFF3|mRI$$TdaWe?uGh~cGUn!kW?u5v@1EVp1N;Kz zcVX=goIZfyh!M&;t8IUXfYT~GKkg}PK%OtNSu+p%)$c$SL{c=YcChXr#5rX!)R!8* z@w)?X;Qz58O`U*?G1=JR?^Q~Qp$y`rcxEUgCY8&iKGX=98$j=#k!PEUa|$%aO!`^?e>rXT7kYyj&D-Shfakg zx`|g!itmN4lbKMegx~azmPNH76fTvP`)$`(5M@U$kHApPi;A>9C}nY zy%k=xn}2`a9&lHqAl;(DB$4T4jW3PqN6T0Hy25rzFiCijFleePB@oe~t>@GUe1USK z_lpsBy}?m%deK0IfIr+%nC@(!!{kl%Q8r)<5cIPzlnP^(>JD?sVxczY2!ZI>7 z04G4$zt!tmiC+;adxuVsh#*VY*({vvD7|2cn#;3}cStvX)3|ObK*1OjcumJF6z!29&3e{#hxi)4}rPb#z&4AlC)LATGBb2GS@d6@nrDpYMn4cYNJ+rm! zi2DM=kecilEu!A+4E0#0@sS z6UWPc{ZvGH2Tcj|*f{zI(cE3)m-Qn?s}t3SuPrAw-j*ZqGXNf#EinSAq|iGMdCc~N zU5p_-G&>_QxM)JlU7gh?l^0uo6=RvGfIUdt0@W*G!T~Ouz{<(*kEDveguBdCQ)S$L zk2aDjDtmE4A+oGquDxa*b0B2EAHU`cn3^dq9HsA!WNE03q`t;=oTc)W2a?4(l`^T1 zu#d3#fSAl#qNE|T_W!|nh%KpZoY8FX<)*P*v8dnWqik1E_FX%2fSl)nsCgjUG=&(M zvk077s2Y&57$v=cU^ifQ$DY44P&vqdT|R(COfJvea(U9N&;{V9$%C$CAfr^ATK@ga z_;sdq$T)D!t4?N%V@VL;zsH4DwEY-@@pdWHfp9b>vJdA|vJP7zUe#%S5$YvkD10kirPYz;#+u@=2 z9KTd%B8Z>Uv90^sfaX#?d;PXJar?T_3E8$RZ}PKF$w%e~9HZ{e{MHi4uu7y=RQG)E zQGO}p`LQoqrW)RGx#5m2L0LYIv z$jLA@#$@r7Em5!NdA};uLzu>Yq{zHjgkK{=1ATvE-c~u#&vzTS*HQyugYjBlb>|1j zi-?-nZys-BmT2qSUxHxCl`5>==lT&pwST_#gMrZW!rM$ixF|%nXAJK#0-Y(oByZ~j zICi+pa71q>4qAeas|zDMXW7evw+cI_*#U23dJ!H*d#ph zfdKc)&z^`ESC=r)oOK>87FZ`TlFH*fYr|%lJlVBNjC+=40F}mT{nhJOivNNm={@gS z0}RVLMDf!qKWN112YWD3v1E|Pe+a9)4WOBIADhfBR?rJjixI+)7wz5r`9Re{p&}q| zz08y}HGffaNgGainuOnfAf6`(r|`DFd*}i=2tv%EZAXBsJD-ql>&{x%MmpA*tM{v( zuIP20QFF$weX0-)T4TmobvGTxwQ`+mmg^6Z%+b`4V&k~daW_K~0E}cvDP6G2dsf`0 z7+w~zfXr`7A#Bjz8eSpqBfe^G>Upu2cRW=F`zBxNB99P2v3DfUO+qMBTFR^IjnU; zFY5%#S0!^pS!?%ysA>mF%-=PP1VY3V+MU0^6+fn5)&79%7y{m4smEZ#z2%5F*uA8< z9-nymAX(b=qtJ8eVwfW^_`m|EFZ%J}>C-K!}dO(`Kz+==W|I3lo> zto_p!j>B+&lBV8<8T)EMLVf~S?;pa+OqzPd)41*PZF-WbL4RS&29jpCg>_5ET&Rl zjG{Tkay#xN4OY+BsRp)lg}5UBrmMalo}_ab!0DWSZ~`9r@9w@a8Ft2cTL~A@*y)@k znitZc8&?Z1n&8ZuSI<$bokW%RftUehfx&Yv1q?M-cT`J)OSeJM^U^ z+}ii~)qwie2NY9#GNz4hz$qBz(6AYRo#j;`YjL9iH{a;eLTFlv<6_XC+aq zaMlH$#Pqu^J=OuV{Tl}TYO55@=-{kD_hFrX7I!H*AV2Sdm2VC|&eNcZYKkj`7yP~G zHml{_g5#htF%hzAUP=QmE-9@zQ66y9+*i_S!aPJDxdin`j`+=nC8HCeFWhxddz825 zg@^kqscIHB{y)=o_BT;XQ+aqAu$`XouLqPGFKL&~vC|LfFFK*AzBQmI{{gQ^I?sfE zU*<2f%(I<$E7B{^JKc%~`eMgEke`$hx?1r#Mqnzz3-&7iN>5f0!g`Zx7v<_d|8Wg2 zPHFf>!{nX1W>tKG}`3@c^5DRR4THSiKG2MR3cuVO(H~GH>Z0(OxnmDdmj3 z0WynAed6II+Fk6|xisdJYKca69&)2-n}Q21-2}Mx250In(yXJ*4^$pfT=_mx!6HQ6 z%;zToS&Qpcp zEUi|ol30QAEfVj2qsJH{bfpVACuj>^0rG=G#IMN>yidG*BPje}j?Fsc$q32EQ@#sN zhbD+KwN3PXx5^igldMxsHWc^TE)z9ibiJjqTq|;aV)8jSYsF-(IzQ3>Qe(~3`V}By zs$I3=0({JtFIbw+-F|QkhXj9rCft{K(G$6&qroo0JNhgRc#d+t$|3)8(xJ8S$a|&j z_#QP3u+u(Knq9Ht*RI%}hk$00VDymZku2LR*=B2TNu6RE1ol~F0~k+;Yu2@k21X2? z_1|cWJL$aTSqKxKm6Es@E!;#pNihkaiz9Sf(Y^t>hr$E@rJcYnOWsfr`2l zRT%R$PW_f{r7CCEQ?9Qq`+0?TL#FdxRrPgC%sPp|V2h@1*xgP%9J>8~lDd**)?ixm z9OiCTdmLc(cs^T@B@W@|6ln$44=@14t6^86q<%n$-49H@{YX52y2554LMGRKas6x# z!p{!#-QZZC$T{;B0@P0fRZ4iYAUP+vWXBn(`d+w=WIAgB7)?_k*p~F@+>GRFY(=`N z;EEl}V@c95-v9=PGk;q1vaH?cGFy&q5Dddn|Lo=}6OWyj8)8DLPLkT(X8OX`jK`)+ zPC91da43mB;_C%})=nHxfZ-ju1Vv&Pt{NCN`=y%QYq6o?JS76n7m$;mXI|f*1^(}j za+#bAxJN<18;{lnz2|c>qb!%H0LL;)SUTM zJjc+9gYXC<-;5DS&s-K#kQI>G)#sh5!FA;)EafHhDKf)<_DZ^)RPab+&>W1g>jpo{ z!M54<+jrhSfR9OWoO+0QVsj~i&a_S0*u1O7Nq2jqG;UO!7Gb&cRcNYQE2ylGfeo}* zqT-PbnGpVC2CT$@=e`~)#1}rmw6FqN0BssW_Ix7btSzENw|dSRPT z?IC(lH>56qns+$#1Rdz$OppC~SRUsM`MbnH#xx|Vf8W}^zvl<`jh~r37lV`Fio8!8l=S+57B-}unF+s%3tPka1A@*qzI+2ghTZJiOA}sv-Fdh5>}zBX zT$a^;${k)X5Sxn9|7dThrW8e98BO(5~rmux`wUwxBiKvyS}PuAA2^M=^`X;^v26#2qCAzlW6m z%%zJD;1croIBPE8kd@+t%!@$><{kZ%K-T7*z6R{I1=`qBkak+Qq!kWgKt$ z!FX&Fe+=xR9iiMA<2-RM^8gccHN>+FOSEhKAotL{^P4`qh-tz@$vlwBaV_->a+)Bu zngCru!V{ur$6pKY=N9!-gj~?!dt|qVYJF&AubPK<@6I8+N4WB%pO7uMPB2&Q6~#tmLQGbyS$(zfhK)_et10!GdmYR0sa^ zV%80gv;)<}!n98j_^ch=0k}gHhX}R?pm=8#vy0=YQ?lxWBE$w3Grs{Tsm#%*aJ)4% zrDsnT+Fn1{$I^nP;x73F>v%5LmH$|OkjLpm27;oP5VgWEh^39re(+y$Vxx$uB8O_t z3MYJ4X;&rZexO5jnv3G9PKpjRRKbuDNGKxUj4R>vN$y^%JuO4+3L~#7R~VqJi|`Cn z_{_SB?RqpE;LsA+g$*&tdKavp*{YKJCR6g8Dk6+i2J&ZTBP@3M7zz-JP(Fx%O5VT~ zd6u1(`d?J*G^Vm}K%xj6bf3@Uze6%drtA84A~;47Q+K%^;B;QeIA;)_XF!vcF>aNY*^3WQtf{dyAhv>u2&sHNx*BI07_@g>?K32c+PyyllfK}UhrnJ< z$&L;=gZW0ZPYh2R0BJUpCX`g+Yy$ixsuiCu9TMfulNEG;zwUM0&=gI7by*+$Fqo>E zUcfmnX6){&nft}{)63YKQr4WMkyrG9HlW)sd^!Ehd<-1p4-BPQS;U??pOuIEvIQ=Q z4onS^)ltA?2p6z`!qI!?N0J0**F_O83{TI;N8B&%rkP=7pEa3eV9LopM}=SL6glRF zW#fXz%C@@#0u|)cxp+!{eu}A4S*fhzbWW%D%9f(E)Ttk0h?&cdnbIT%tRRAz-zR~< z*HmSf)|h&4W{-QJW^>a3MR&y>mo^i?A%# zmF;J*DZphQ5jJvf;8Zug3y_5xy}JNnM(pqFq)FF77RlioR(EZG+fNr=aHqBzfrb!# zIO|zo0y>}~!26;@aU7~!F=T*I-hq7=EK!I7Ccp@_{o7dXR&q|b(A?PMkEtNn)5@4?(@U(mwbQNdd0rr>`ht|bja15%OQ&R!%Oj$nsvv? zL#o!8muyh(b>m`xaEZ_s!4g1jmYp(J4tU=uMEX*ffzYD#MWO@tof4$YU!h+(500fZ z-0n`7jg)WKLbaqS6fdvJjgydlaH)7Zu!4fJy27k<;}SLx5g4+#r+-MlT`d#pMjWVd zP<6h(8+!JX+OV;||JFzkqvZm^NcZb8$kxT*aoEJ$`pvF?*#-swke6VS(8;4Xb$no) zOi7X|iT-tq`Ip{YaM?)N8>SgG%VG01$TrP?+us=!=XW9g5R)W`FO^j-4@u}uyaC{j65)_=E zJeQ)%zyp$hQBqw!&~J2O;MI_AmU~Dxq?vx&C0YX#6wc>^@$NtpURhj40Zc4&p#*3} zzlIh4^8LzkbAWYqU#}b6$O%06;V~N60ZelKWh@$4Q-Vg3&Z{3| zjuqtB`v{(!WOg92>T7=F+_H&5ZN~;P-@GmW|5aH_@K1OpO4CM&arN`HV%INL2jr-o zdvugHd!>IZDrKr44G!pR_`1aD-_0hllv@|Y_wISeMptT6JCMJQ#MI!8`QVeebZw;g zsSe72?E|N9G*_?S(tdKSzkv#<1O4$h-=0fa(sT+#cozsz*JfIPbHC@8*CHuEQO|)` z_=z>P9H?-K0?8R69>Ap}yw1};$TbnA)C<)5pd;#laR6ZlP4XPYtLYMc@yIT=w|021 zgFlXmZF;R2fI{ww1P9Kh{QFh~&KnjB)XTDe*n}CWX0HcxiSqQJil zO~q)x9dL7^zXbr|H=(^V+H%KvlbCjj#g8d_0WJ}s&Cxw5vX$XVh>+sG5ff^Zl6?Gf)DlmF$x{RGb7}bp#O611tB!!_&vw;vLFE*k7?G z+1gLz=+co@_1oauI$F+{f}FD|U&>ev0@mNKp?G&%AXgSO8_(Eo?9=MUyovCC_EJh8 z^#yUXnM1ThhbEjoTBw^t|mQpX|#2F+G+3~k`(t~v)% z6kXz>1~o5EHyWnr?%5{2j3(}DDBX?aqDDGYo)klp(-o38DV86ovuh%KUd=9yPCW);lGsE0^2rwFy1knRjUF2StwF=x8ow^X9yn?Hv z5N(lJ{r0R2=OXNTacl7D3+01n zN5q1$^j4xTIotfbUec)qJ8HCjkE+D20JkJ3gzVzvx%I4)%cMLYt+;$*cCj40BZfZT+Fa?juGV=p0p9+=ke@Uru99M24# zX}Ed4yObJp`{yjX6&}SvWAgLfrHq%ih|HiY8F$Mzi?TV;?e z%P{@evn>lX9dRlRJs(sJ;T%-KT-y5Kb zSd`&U9!$Nk8^Hu*U?5d4+9UR7?WZG9Y@)yzmxY)w1*iRgScN$NSz=6?3T%D{;VYjW z4xmQ9!WTDq24rwl>pOaV2$}=02}R z_>~DcOV+61FPU4n;|Df_vNy^4tcoS@+xg4&vti_)nFR}Jay`=3uY_Wr;QYk8_9_hlg;;x8;d zl7OCHAoNMAGMN*ZbX4!P7XC3%bYVdofMv{%!r%OE!AoS%4DTjsoD~UYaPXIdPU2~M zUbh>3O$BOZ5ao3TKZwXLEAQWlo+tc7vd)f%q|v--cGG%^4YkQT*uL&eOd>NDh z%=WqZJwFz%1hxD{1pQQEm(Kcmv$PoQ&B5`10V(Bu;kLjLvV^aG4g)+1&{DR58@x_V ztX{}B1S#hHFcF?!>ScG%r|V)CAe%<02(P&yBxEv-UoLZZ^>7)$W381dTEa$~{y%!? zLu<}gaYs;L4NruX5)Wd#9Tz3e+l&t%)XuFfymauBk!B^pr4I>TN~Xc%kvnT#@M2AW zn^<-w10W3Z^6vP&4Rzy(aRG#@$O|*YD>VOr?GfL<#}uj*T)Sj9UzSK~53&HKbb(qw zPyxBkg^?CT*M=`Rsdk%E<%fQzSoEUGm&yfdr-~Ni2BX(7smYn~PHq`8dLh z&l)^J@yd5>`T_Qqft{bGUt%H$$*(Il7_qAZ}W8Ys<2}Zq!YJEn<8~K~0FDIQPj7}No#s^x?US3T2 z{mrHmek1XDaV^Rknc@%|;(J6;c8K}!OfNs7wcrQ8)JCL%n8h>=jUuKF%d6Bcr8w=#? za8mvu09rn!S90;@p24H`M%)>}r)&S1;a5NU=CDo^@N(}QGCoxrG?qHobk}zV8gG}f ze*3%rZvG5r*pIx!_U^^_mDxgntu`R<-1TUosKs9V;q#<}Ob`APJ2ZL;CbtemHPP?P zb1`(?uG0w6yMT?z2-%seUXa`&6e$58hX!ZWQ3wNSuYoaO))*P*TD)Tn;}ImwH4^46 zti|6?gN4`UQTm(ywv9a$VjGN2WwP7Kca-BxjN9Mr$Ig}KHLSMRs9lm|20t_#^qP(J_OG^;J$bv77T+Q0UUB1B>$U)wLzp%O0){Vyk0#l;26_%@f7z$WLl z1xT}n8$;B8Ql@q)hm-v{&RKREpJN1?bkWYk_y}JaxIjGl@kz>mNnWpcjed}L8T&~q z;|l_s3{RPSvbfhSk8H(kqZ@8B8EutS3f8V>v~qF^fla~_W+8c8(7v6JRRhQ=4|)q>?1-&K z`M~P~n)aPFrCAea29(j60n93}>cTqgrIYnvyu>B}BG(pwxY+)kVRpXEXXbJ~Q!o z-55+*zj8uI*~=x&k>NrD0^#zDmp(ari%LTdNiu}=y{qg|??5D6zuLYHP{QE~v6wNE zZ)&VQs7=;~vvDq$BYJ;MU|L0Av>ufk!Ww)=297;n$r+JK#tiYhjtTOBCKhRwT6JVA z9!ea4l-j0U!^X(jJ_cg&)t=3$91V>Pj&mG91WgtwWV+M-tt_54pl9fjDB;=ugg7@o z!Db(di7lNdva)*bsQ&zMsZG{l2QPVgt@3gQL^WY&gsA^-`W;;^h|!*%!bXRc$p}#5 z!lm!G`flH!0+**5?_(Ht}26z4ttfmvh?e&^*-x^N-1aCerHpmYVyO#Pu>8%UCW zy=`*?hZ756dBw-q@w$0q4!#O!eCn~NMr{&%VZic;5L>oFwV$uDntp4T^N+27`zYY4 z6odcQ54duG(6K-HscSny3#Ln0<@k=T(r%6bPW@U!z4c9g=@oz%cmgUr zX0xlCvnAyB`>4Y{D*URx;&97WCmJg$ za7!S?cY_#4)n-r|=&u(6iAR~yXASCIRkX_NUA)8)^Vm9aJ{75h;3QjQO+U#>?h?g%m?5qeKzEo|ap0&Klp}c0J z_JMpnS}*a+`NsqP;WSpR8;Yt#k*B@G<$8J?%X;r2`dJe<5`@!Nr8(ZTw4eV(E zVEk#847`#%ykbAK#_Hm-?IH;`4T6}UFb7<1$$rsgn0VPEk%CjKxqb+Lh~)Us;K%mE zUKfM{#$eROm!*qpX$&3`=i{u~mMg14KjLKTw~k~?`&Js-2>{Kxt$PCy-@c?r4j&q^uBsM55pR3sg-DmrPjQp|#vtys%yZ&+VN`VD#Pt@#%$ei34SU}8_JV2+PqS%B8eLD z_H}q)$X*JJuM0)tf0$FKBA>Xt2>77iqMk`4CK~6vZ)?VB6;xw?Z?A~Bx7IJPdr>bw z+v4AxKGC8Wx6vx6w!98hMKYgU{WVl%uqdR(`=iQ0tA%`bDf-k?Ze4WPb@s*IcQ{>^ z0_yrX%0M_mp?R!NuDn|xj-4dUd85k(YJ@~_Dz|TJrUFB-e)Ejg2~df;4j_+KySt`? zVpua$ppt4>z;Wzx7k?dL^j^MymnNSWnZT^WA;|8wvwg$p z>g7a`r-4gG-#68y5fUri-hb1SQq%_)%wK{4ckFI^P>hwzZ;ZE_O=yKC{e_F;16}i4 zM_F&y2alnui29%|yS*)BAP`EuXizgmw{8TEGQ}oh;UF-505nrVX%cXMLUYu<_EfqP zBguAnl%HRJqNmWOQ&cs$Q{_|M_6LI^dFEHZvFLe2E~2jfzqHJE>$JC zWrx@s=eVucOSuKeacXZvpH!LOQ(kGEE`hVskcF{D^P>RAO%*Gud8$j=Pv7_D?=2y? z$YduE0aSz&*>-g40llphg5W9|)30mKN(Y~{C2g*M3Agg+vfi)VR|UXpT-^&!_jdy> z%eO~W$5T5aBr83V8kG!|8#xTturB}(@4%Ic>hp;R@NOo5*+t1zOMDVZ_Fp;2f$D~i z<vEZMumC;6_HtjihN%#skWDcpq^@HZpHV2P%=w{>fsLYm3P3w%oQb!(2_9 z&t(;VEYc36oqKDyzskoi-MrVMEB zg{rnV9)kL|>dnj#yy~vtSvYYj+UZZ~nvL>*7_{-~E;cr~NJWI%?sqZ|j-CT%bxhy_`U>mUw5|ZG39EteuekCa)q3wJC@S{pq@K22OZRm@ zB2UrQMQKM!wGe2rN*{oHuubFOotZ#(@_%={o+cGoedA>cliO!HVf=or#ZGmljhQ^% z=08DX*LoY{v0_zVvP&5b)7brgLO{h#yg*)e;?Y)`4?yoxbv*iy#50W~zWfTLtA|bZ z3-kbX0j85^=>@Cs8a4kmCSD1$gMx_*yZl`;OZ+y#&Rit$hOd`u-$uDcXTK7`XT-k+ zQS3IC@#Gi3P`mZ%tBpGOK{QhW5ysvf8wT)K$~`8<{41we#YNno)qP}t9zqTOO5Iwf zpl5@rOFnSx_quJRu+DzZyW@jzKA2x`^Vd+!?=9CY0AUQbQKi@|n%C|>(d5*D^m6!w zV}|Y2yxY{m_&yffk+x;mh%S!r?G`#N{q!>xHdtA&_j+~=-5zty`TXtj9^exoWv=R@ zy6Pc;TJi-LQ01&P;$zy3|9jq-2$e8EGXxy|H~@*T9Zj%gL)rG=~;{eV$?FAuOcn zhXMG>NSFYat&OV&_G7J}_yC>x8hs;F%RZ$mFTcsTq?92O@Py)jg?sL1_;-c5 zo28P)9c_lK^x3-4T;gTkB@Z5ewJufJ#{OJ+pk9EophK#x(194%NzlQOL;|dIbqTuv z2ZLz^I0-Yuv4<55GSjhE0}6WT9Ori@VrS1C7N7Y$I(>s24yNX_u~fJC7dL#_Y&N|Q zm!@iKz536`8LydtV_!ktPjdxo`e30adfkCa2VrkflxSVLE=DtqK7>ISckSw7z7j6x zIK4Q^kfe7wB(gLQNvBeudiuOVdl-PE#!d>#J6Pv1mLM>nMp4T$aij%x8;fxOSfW9{ zq7JH5A=(6(0t1$Huu(Lfl@2m^D+kZk=P~>U3>aKIIZmK|Z)t4NgEhZWjccoe(+s74 zzRI>kjh3<#qp+?IouOL6{hz}z%Q-)hoq2e|9b6gy^))kS)d$hJ!y9@aaT%X4zQx5V zd*yjERlSJc{lkkG@;1@uR+=R5O%z&`>Pw~GjUbuQ7Djb`sqHR=E~ z5!vp;ezco&7Ro)2qaO|%s4chVfEM_t175j&vXGHmPPgxORtM}U6KX7dKsf{ShQj%J zSz<9jld6q(c()6R$eq~>@4U+4=$BcUb_2cSMeXNd$8qu^fY`*@c_YiOFXXM<=$Ea< z^b`MolWzPIhZBj}RXZMg-!qH$roZ2RU$@xjC8$k*^}v=1ODqb}8oD9(;wG(%PG_l< zq*}jeE=-^mSuXDTz4hi!_W15Yb@R5wvbnc-s}1Q-cVRIS$N?Br897jL6|R_HC>3x| zW_=f!CB~N4gMZaK@xXpr!Cs#B-S^=2Ns8-#pO80Tk)W~o1xg8u%L$PqKANy1rC<7% zJ($DfAU!w(KL`8@mOCrr9@4|t3l=c}9`FP3HzXq^{~kx#xyv|XKG861ebp94W_CZ> zI(~ROr&1q2LipOd{{@JHYNW%G~_PL3W>)NNG1J3^$P#-X-4>1Kr2yy zyvYyjS|RbBXrAtnIujrjUH`4wmT&0&{N8EaX@jaahBRgt>$ruC?R8$BBv|wAKZ?#{ zyHPEOq94QnL=p_iIcLofIcE@jy{|`at!}@Tu`X37Y>QUh2Jwa9L2#D?L{V2#0NoDx zZS%O=Jfqo8&;(*%0?k15^*kN(FhQq(E??|zTnRTkGWr_^AR(#-m;uDHrtj|; z)CCw0qvK~WH+%VdN6Ul)`Q&Dg zZ-TZR8EY^ZoQtxlNI0IPRR;OVLl+hTL)0Y4h_$wW#?hb4oc|wCSY-5?kD!l#VulsA z&+RbgJluF=9NSO~B z&OdvbDgez|Fr>@?%%+YLW^XV5jrvpYZj-Jb2s0&>11j0p&!pDuD_%qFHtK^=)Cj^8 z)`Q~JbH*W~;qeQogsPcnF!Eb}L@JZUZUS$-apWu1LT6fqLcp#?DEK3cFtV+r#r)O<=wA zmWTLy7OPho`2Gp88;Fc9jML*3F!_<~st?^?5!GI3|JlsK_TG@^sqOiHE>=Da-y{-8 z8C3DgXSD1UN+y^A-wH%P4qDSj<{i?z`e~(oLAb`va)v!Z%gbo;_>8C-Nk-nTo}l21h#R16JGzFw|fkqh3vE^tQZCZx4hDi08U$c z*F1|-EqK{kgbKt1R*QFUglCc>r!u0=v^8KPXGLBW>~9HwX@wLI$!G%ZEeGJA|G&rZ z-WhD$c3+Go?J-4Lrzsv=e4|OIS0@bshF)K$4%ltGnUnlkIO=L&nBp8R{aN(_O~C*0 zpGJ5AXSBu>fDrM`J$Tg;9bgGd<0wSEX{HWlvxC>Ha#UZsTL!lQJ0AQlPJl1Z`Na1; zI#e`bl2$u^S0G)e*EfhOo_9VER1S~gM%f^FRkFjNHrRhDjzuOZV3%GTa%1m`76CkX z!fn&MTaw;)0g5pk=?f0AE z10;$D03oy`i~yDcpW^<$MX>+U08I)WfFr@5ip7Wp{0v+N}BuoF$@%`b&#L~SKpElRUdR{M1hB1&Nx2DIR~=ES!io*}~F z zAJlq(wTS>^FSd_g;7_2OkDxLla9Oy#2T#F%{aVYns)nl!L>hd12R?ze>g=A1yz$W_ z5c3IIps@Nu*CF63O^9lvVJo7@fV8|)kbVwM`<*Gh%H!hN(l>)DK@9McWXF%H+%yZ( zS(;{EFB}K78e+~xOK6k~209~hWk;)gPr!740`_916oX&Qv3I=@u(!PPg>uw81}#J` zb32%!LtHAP7XipCm)La!eJLivU-z&Xl>UDr#zc9^WBIGeSMv&&&ALdZ?@9pBc}73) z<8>v)D3xa2HC7v@?9182gYPW#&3r#u(d5WFHV)HGpB=j~0s2vJYj!rK;NNFCg?6BS zO7$`hvESl{GS?Mc?Dm7+ELN5lv%UKVXIs$E=N|~F>kI&1Ol$-CXdD5U3J_+vxhT8B zB9Nmr@z~zR{G-6C#$WFf13kpD6CkC9$589N9)nepAZ{Bla7OsvtR)yRXNBv)Yc`%= zLzGnUd+orR!%mY9z3`}5)Z4CKtY!ay2u<`z=NP6Mxp@&nexseJ;(#Rn>bfSSc6@-U0QUG$D1!qqPPzfoufzCH+7{awRA5^Rs-CYD!BLc7{m&LxOG=hB2n3yUkEb!h1z={8Vp92WU zPkt1Q6J<_&n{ifRjTZ$PZIQraB;O+SjE561r}6A)8Ar_W2MX_{=kN&h5=f>2Pwdr6 z>xZP$@UH&DThNAoNW)5d;q@Z`-JnnN0XRZ&;y&_yB9Si~@EVqD&a%Gq>q*hF1R2XO z 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"bNH*p_Fy4k`(en?=}WhL$hJhS^UyKSW7 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%0DN-dFobO7>0~fV1(-xi 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

0-OB85hl`C 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

Y04MlsTx3a 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°Z8X_KyScvaP94 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%0DcqGwL-9z~ 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%0A9UCXP3E&IlG_m|6Sn96*zNYWI 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°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 diff --git a/Barotrauma/BarotraumaShared/Submarines/RemoraDrone.sub b/Barotrauma/BarotraumaShared/Submarines/RemoraDrone.sub index 4751d3dafefb729b4b48dfaa1bd4d2c3da531c1c..4d2f9b30f94f1373248dd1f2943647e87acce5dc 100644 GIT binary patch literal 262007 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%0AZ^F7ti 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%0DX(_3^A(8omLRg5gLslQ(W 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 M07Rq6-ZvEo0N2P_#Q*>R literal 280590 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 GWTX)(8j{5Epc$&+0u|uQ~BQ< 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�L^%q7kK+SgtkJ-}JPqF$IF^nSn=@hxnXHjyY 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 z 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 diff --git a/Barotrauma/BarotraumaShared/changelog.txt b/Barotrauma/BarotraumaShared/changelog.txt index 02351378a..f5866ba31 100644 --- a/Barotrauma/BarotraumaShared/changelog.txt +++ b/Barotrauma/BarotraumaShared/changelog.txt @@ -1,3 +1,56 @@ +--------------------------------------------------------------------------------------------------------- +v0.1500.0.0 +--------------------------------------------------------------------------------------------------------- + +Additions and changes: +- Groundwork for the upcoming talent system: completing missions gives the characters experience points which can be used to unlock special abilities or buffs. Currently only the captain has talents implemented. +- Improved bot chatter when orders are being given, rearranged, or dismissed. +- Damage to arms reduces aiming accuracy. +- Crippled legs slow the player down more. +- Improvements to the blood particle effects when a character is bleeding. +- Added "targetlimb" argument to the giveaffliction command (allows applying the affliction to a specific limb). +- Players who wander inside a respawn shuttle don't get automatically killed when the shuttle despawns if they weren't part of the respawning crew. +- Bots no longer ignore severe fire in reactor, engine, or command rooms. The intention for them ignoring the severe fires was to prevent unwanted casualities when the fire can be left untreated and wait for it to fade out when not ordered to extinguish fires. +- Buffs are transferred to AI-controlled husks when a character transforms. +- Projectiles shift to the left in multi-slot loaders when firing. +- Option to make terminals use a monospaced font. +- Player-controlled monsters can now grab and eat bodies. +- Added triangle and sawtooth wave types to oscillator component. +- Added "high_pressure" output to water detector. +- Water detectors round the water percentage output up, so any amount of water will be at least 1%. +- Focus on the password field automatically in the server password prompt and allow submitting it with enter. +- Made pirates a little less accurate when they're operating turrets: they can no longer magically aim exactly at characters inside another sub. +- Biome noise loop volume is tied to sound volume instead of music volume. +- Endworms no longer always bleed to death when their tail is cut. +- Lever state is visualized on its sprite. +- Enabled NVidia Optimus on Windows. + +Overhauled status monitor: +- Improved visuals. +- Indicates the locations of the crew's ID cards. +- Indicates the locations of alerts. +- Electrical view, indicating locations and health of junction boxes, reactor and batteries. +- Allows searching for items and indicating the hulls in which they're located. + +Fixes: +- Fixed "linesperlogfile" server setting doing nothing. +- Fixed discharge coils not working when triggered by via a wired button. +- Fixed hatch waypoint and platforms on Remora Drone. +- Memory usage optimizations. +- Fixed bots shooting enemies even when there's a friendly sub between them and the target. +- Bots take their masks off when if they have successfully equipped a suit. +- Fixed a pathfinding issue in Remora caused by too sparse waypoint distribution. +- Fixed disguises not changing the color of a character's name when hovering the cursor over the character. +- Fixed monsters' attack sounds never playing in multiplayer. + +Modding: +- Implemented an item variant system that works similar to the character variants: you can create new items that inherit the properties of another item and only modify specific aspects of it, reducing the amount of duplicate XML code. See "Depleted Fuel Rod" in engineer_talent_items.xml for an usage example. +- Removed error message when trying to transfer items to a husk monster and inventory sizes don't match +- Submarine upgrades can be disallowed by category instead of having to do it separately for each upgrade in the sub editor. +- Fixed a modding related crash when trying to apply a property value of a wrong type using status effects. +- Option to create custom husk infections where player control carries over to the transformed creature. +- Display a console warning when an item's deconstruct output defines an out condition and is also set to copy the condition of the deconstructed item. + --------------------------------------------------------------------------------------------------------- v0.14.9.0 --------------------------------------------------------------------------------------------------------- diff --git a/Barotrauma/BarotraumaShared/serversettings.xml b/Barotrauma/BarotraumaShared/serversettings.xml index 9b96f6b02..38cae3c14 100644 --- a/Barotrauma/BarotraumaShared/serversettings.xml +++ b/Barotrauma/BarotraumaShared/serversettings.xml @@ -24,6 +24,7 @@ startwhenclientsreadyratio="0.8" allowspectating="True" saveserverlogs="True" + linesperlogfile="800" allowragdollbutton="True" allowfiletransfers="True" voicechatenabled="True" diff --git a/Libraries/Farseer Physics Engine 3.5/Dynamics/World.cs b/Libraries/Farseer Physics Engine 3.5/Dynamics/World.cs index e950db8d9..53ce244d8 100644 --- a/Libraries/Farseer Physics Engine 3.5/Dynamics/World.cs +++ b/Libraries/Farseer Physics Engine 3.5/Dynamics/World.cs @@ -1034,6 +1034,7 @@ namespace FarseerPhysics.Dynamics body.DestroyProxies(); for (int i = 0; i < body.FixtureList.Count; i++) { + body.FixtureList[i].UserData = null; if (FixtureRemoved != null) FixtureRemoved(this, body, body.FixtureList[i]); } @@ -1041,6 +1042,8 @@ namespace FarseerPhysics.Dynamics body._world = null; BodyList.Remove(body); + body.UserData = null; + if (BodyRemoved != null) BodyRemoved(this, body); diff --git a/Libraries/XNATypes/RectangleF.cs b/Libraries/XNATypes/RectangleF.cs new file mode 100644 index 000000000..1459e1e90 --- /dev/null +++ b/Libraries/XNATypes/RectangleF.cs @@ -0,0 +1,551 @@ +// MIT License - Copyright (C) The Mono.Xna Team +// This file is subject to the terms and conditions defined in +// file 'LICENSE.txt', which is part of this source code package. + +using System; + +namespace Microsoft.Xna.Framework +{ + public struct RectangleF : IEquatable + { + #region Private Fields + + private static RectangleF emptyRectangle = new RectangleF(); + + #endregion + + #region Public Fields + + ///

+ /// The x coordinate of the top-left corner of this . + /// + + public float X; + + /// + /// The y coordinate of the top-left corner of this . + /// + + public float Y; + + /// + /// The width of this . + /// + + public float Width; + + /// + /// The height of this . + /// + + public float Height; + + #endregion + + #region Public Properties + + /// + /// Returns a with X=0, Y=0, Width=0, Height=0. + /// + public static RectangleF Empty + { + get { return emptyRectangle; } + } + + /// + /// Returns the x coordinate of the left edge of this . + /// + public float Left + { + get { return this.X; } + } + + /// + /// Returns the x coordinate of the right edge of this . + /// + public float Right + { + get { return (this.X + this.Width); } + } + + /// + /// Returns the y coordinate of the top edge of this . + /// + public float Top + { + get { return this.Y; } + } + + /// + /// Returns the y coordinate of the bottom edge of this . + /// + public float Bottom + { + get { return (this.Y + this.Height); } + } + + /// + /// Whether or not this has a and + /// of 0, and a of (0, 0). + /// + public bool IsEmpty + { + get + { + return ((((this.Width == 0) && (this.Height == 0)) && (this.X == 0)) && (this.Y == 0)); + } + } + + /// + /// The top-left coordinates of this . + /// + public Vector2 Location + { + get + { + return new Vector2(this.X, this.Y); + } + set + { + X = value.X; + Y = value.Y; + } + } + + /// + /// The width-height coordinates of this . + /// + public Vector2 Size + { + get + { + return new Vector2(this.Width, this.Height); + } + set + { + Width = value.X; + Height = value.Y; + } + } + + /// + /// A located in the center of this . + /// + /// + /// If or is an odd number, + /// the center point will be rounded down. + /// + public Vector2 Center + { + get + { + return new Vector2(this.X + (this.Width / 2f), this.Y + (this.Height / 2f)); + } + } + + #endregion + + #region Internal Properties + + internal string DebugDisplayString + { + get + { + return string.Concat( + this.X, " ", + this.Y, " ", + this.Width, " ", + this.Height + ); + } + } + + #endregion + + #region Constructors + + /// + /// Creates a new instance of struct, with the specified + /// position, width, and height. + /// + /// The x coordinate of the top-left corner of the created . + /// The y coordinate of the top-left corner of the created . + /// The width of the created . + /// The height of the created . + public RectangleF(float x, float y, float width, float height) + { + this.X = x; + this.Y = y; + this.Width = width; + this.Height = height; + } + + /// + /// Creates a new instance of struct, with the specified + /// location and size. + /// + /// The x and y coordinates of the top-left corner of the created . + /// The width and height of the created . + public RectangleF(Vector2 location, Vector2 size) + { + this.X = location.X; + this.Y = location.Y; + this.Width = size.X; + this.Height = size.Y; + } + + #endregion + + #region Operators + + /// + /// Compares whether two instances are equal. + /// + /// instance on the left of the equal sign. + /// instance on the right of the equal sign. + /// true if the instances are equal; false otherwise. + public static bool operator ==(RectangleF a, RectangleF b) + { + return ((a.X == b.X) && (a.Y == b.Y) && (a.Width == b.Width) && (a.Height == b.Height)); + } + + /// + /// Compares whether two instances are not equal. + /// + /// instance on the left of the not equal sign. + /// instance on the right of the not equal sign. + /// true if the instances are not equal; false otherwise. + public static bool operator !=(RectangleF a, RectangleF b) + { + return !(a == b); + } + + public static implicit operator RectangleF(Rectangle r) => new RectangleF(r.X, r.Y, r.Width, r.Height); + + #endregion + + #region Public Methods + + /// + /// Gets whether or not the provided coordinates lie within the bounds of this . + /// + /// The x coordinate of the point to check for containment. + /// The y coordinate of the point to check for containment. + /// true if the provided coordinates lie inside this ; false otherwise. + public bool Contains(int x, int y) + { + return ((((this.X <= x) && (x < (this.X + this.Width))) && (this.Y <= y)) && (y < (this.Y + this.Height))); + } + + /// + /// Gets whether or not the provided coordinates lie within the bounds of this . + /// + /// The x coordinate of the point to check for containment. + /// The y coordinate of the point to check for containment. + /// true if the provided coordinates lie inside this ; false otherwise. + public bool Contains(float x, float y) + { + return ((((this.X <= x) && (x < (this.X + this.Width))) && (this.Y <= y)) && (y < (this.Y + this.Height))); + } + + /// + /// Gets whether or not the provided lies within the bounds of this . + /// + /// The coordinates to check for inclusion in this . + /// true if the provided lies inside this ; false otherwise. + public bool Contains(Point value) + { + return ((((this.X <= value.X) && (value.X < (this.X + this.Width))) && (this.Y <= value.Y)) && (value.Y < (this.Y + this.Height))); + } + + /// + /// Gets whether or not the provided lies within the bounds of this . + /// + /// The coordinates to check for inclusion in this . + /// true if the provided lies inside this ; false otherwise. As an output parameter. + public void Contains(ref Point value, out bool result) + { + result = ((((this.X <= value.X) && (value.X < (this.X + this.Width))) && (this.Y <= value.Y)) && (value.Y < (this.Y + this.Height))); + } + + /// + /// Gets whether or not the provided lies within the bounds of this . + /// + /// The coordinates to check for inclusion in this . + /// true if the provided lies inside this ; false otherwise. + public bool Contains(Vector2 value) + { + return ((((this.X <= value.X) && (value.X < (this.X + this.Width))) && (this.Y <= value.Y)) && (value.Y < (this.Y + this.Height))); + } + + /// + /// Gets whether or not the provided lies within the bounds of this . + /// + /// The coordinates to check for inclusion in this . + /// true if the provided lies inside this ; false otherwise. As an output parameter. + public void Contains(ref Vector2 value, out bool result) + { + result = ((((this.X <= value.X) && (value.X < (this.X + this.Width))) && (this.Y <= value.Y)) && (value.Y < (this.Y + this.Height))); + } + + /// + /// Gets whether or not the provided lies within the bounds of this . + /// + /// The to check for inclusion in this . + /// true if the provided 's bounds lie entirely inside this ; false otherwise. + public bool Contains(RectangleF value) + { + return ((((this.X <= value.X) && ((value.X + value.Width) <= (this.X + this.Width))) && (this.Y <= value.Y)) && ((value.Y + value.Height) <= (this.Y + this.Height))); + } + + /// + /// Gets whether or not the provided lies within the bounds of this . + /// + /// The to check for inclusion in this . + /// true if the provided 's bounds lie entirely inside this ; false otherwise. As an output parameter. + public void Contains(ref RectangleF value, out bool result) + { + result = ((((this.X <= value.X) && ((value.X + value.Width) <= (this.X + this.Width))) && (this.Y <= value.Y)) && ((value.Y + value.Height) <= (this.Y + this.Height))); + } + + /// + /// Compares whether current instance is equal to specified . + /// + /// The to compare. + /// true if the instances are equal; false otherwise. + public override bool Equals(object obj) + { + return (obj is RectangleF) && this == ((RectangleF)obj); + } + + /// + /// Compares whether current instance is equal to specified . + /// + /// The to compare. + /// true if the instances are equal; false otherwise. + public bool Equals(RectangleF other) + { + return this == other; + } + + /// + /// Gets the hash code of this . + /// + /// Hash code of this . + public override int GetHashCode() + { + unchecked + { + var hash = 17; + hash = hash * 23 + X.GetHashCode(); + hash = hash * 23 + Y.GetHashCode(); + hash = hash * 23 + Width.GetHashCode(); + hash = hash * 23 + Height.GetHashCode(); + return hash; + } + } + + /// + /// Adjusts the edges of this by specified horizontal and vertical amounts. + /// + /// Value to adjust the left and right edges. + /// Value to adjust the top and bottom edges. + public void Inflate(int horizontalAmount, int verticalAmount) + { + X -= horizontalAmount; + Y -= verticalAmount; + Width += horizontalAmount * 2; + Height += verticalAmount * 2; + } + + /// + /// Adjusts the edges of this by specified horizontal and vertical amounts. + /// + /// Value to adjust the left and right edges. + /// Value to adjust the top and bottom edges. + public void Inflate(float horizontalAmount, float verticalAmount) + { + X -= (float)horizontalAmount; + Y -= (float)verticalAmount; + Width += (float)horizontalAmount * 2; + Height += (float)verticalAmount * 2; + } + + /// + /// Adjusts the edges of this by specified horizontal and vertical amounts. + /// + /// Value to adjust the edges. + public void Inflate(Vector2 amount) + { + Inflate(amount.X, amount.Y); + } + + /// + /// Gets whether or not the other intersects with this rectangle. + /// + /// The other rectangle for testing. + /// true if other intersects with this rectangle; false otherwise. + public bool Intersects(RectangleF value) + { + return value.Left < Right && + Left < value.Right && + value.Top < Bottom && + Top < value.Bottom; + } + + + /// + /// Gets whether or not the other intersects with this rectangle. + /// + /// The other rectangle for testing. + /// true if other intersects with this rectangle; false otherwise. As an output parameter. + public void Intersects(ref RectangleF value, out bool result) + { + result = value.Left < Right && + Left < value.Right && + value.Top < Bottom && + Top < value.Bottom; + } + + /// + /// Creates a new that contains overlapping region of two other rectangles. + /// + /// The first . + /// The second . + /// Overlapping region of the two rectangles. + public static RectangleF Intersect(RectangleF value1, RectangleF value2) + { + RectangleF rectangle; + Intersect(ref value1, ref value2, out rectangle); + return rectangle; + } + + /// + /// Creates a new that contains overlapping region of two other rectangles. + /// + /// The first . + /// The second . + /// Overlapping region of the two rectangles as an output parameter. + public static void Intersect(ref RectangleF value1, ref RectangleF value2, out RectangleF result) + { + if (value1.Intersects(value2)) + { + float right_side = MathF.Min(value1.X + value1.Width, value2.X + value2.Width); + float left_side = MathF.Max(value1.X, value2.X); + float top_side = MathF.Max(value1.Y, value2.Y); + float bottom_side = MathF.Min(value1.Y + value1.Height, value2.Y + value2.Height); + result = new RectangleF(left_side, top_side, right_side - left_side, bottom_side - top_side); + } + else + { + result = new RectangleF(0, 0, 0, 0); + } + } + + /// + /// Changes the of this . + /// + /// The x coordinate to add to this . + /// The y coordinate to add to this . + public void Offset(int offsetX, int offsetY) + { + X += offsetX; + Y += offsetY; + } + + /// + /// Changes the of this . + /// + /// The x coordinate to add to this . + /// The y coordinate to add to this . + public void Offset(float offsetX, float offsetY) + { + X += (float)offsetX; + Y += (float)offsetY; + } + + /// + /// Changes the of this . + /// + /// The x and y components to add to this . + public void Offset(Point amount) + { + X += amount.X; + Y += amount.Y; + } + + /// + /// Changes the of this . + /// + /// The x and y components to add to this . + public void Offset(Vector2 amount) + { + X += (float)amount.X; + Y += (float)amount.Y; + } + + /// + /// Returns a representation of this in the format: + /// {X:[] Y:[] Width:[] Height:[]} + /// + /// representation of this . + public override string ToString() + { + return "{X:" + X + " Y:" + Y + " Width:" + Width + " Height:" + Height + "}"; + } + + /// + /// Creates a new that completely contains two other rectangles. + /// + /// The first . + /// The second . + /// The union of the two rectangles. + public static RectangleF Union(RectangleF value1, RectangleF value2) + { + float x = MathF.Min(value1.X, value2.X); + float y = MathF.Min(value1.Y, value2.Y); + return new RectangleF(x, y, + Math.Max(value1.Right, value2.Right) - x, + Math.Max(value1.Bottom, value2.Bottom) - y); + } + + /// + /// Creates a new that completely contains two other rectangles. + /// + /// The first . + /// The second . + /// The union of the two rectangles as an output parameter. + public static void Union(ref RectangleF value1, ref RectangleF value2, out RectangleF result) + { + result.X = Math.Min(value1.X, value2.X); + result.Y = Math.Min(value1.Y, value2.Y); + result.Width = Math.Max(value1.Right, value2.Right) - result.X; + result.Height = Math.Max(value1.Bottom, value2.Bottom) - result.Y; + } + + public void AddPoint(Point point) + { + if (point.X < X) + { + Width += X - point.X; + X = point.X; + } + else if (point.X > Right) + { + Width += point.X - Right; + } + + if (point.Y < Y) + { + Height += Y - point.Y; + Y = point.Y; + } + else if (point.Y > Bottom) + { + Height += point.Y - Bottom; + } + } + + #endregion + } +}

COZ4Zp!?m_DV+ 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 E0A#q8$^ZZW diff --git a/Barotrauma/BarotraumaShared/Submarines/Remora.sub b/Barotrauma/BarotraumaShared/Submarines/Remora.sub index ccce067ae0ca2a1d8aa663aa16c5c7339c0f1e0c..a79c97e861a5e2cbc21748fe768e187d0c4413d7 100644 GIT binary patch literal 279195 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%0Dd9ZcpTuMN;CNy<|V^ok{sIR{Xwq&3tULX9sDeK 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