Barotrauma Server
Loading...
Searching...
No Matches
Barotrauma.MultiPlayerCampaign Class Reference
Inheritance diagram for Barotrauma.MultiPlayerCampaign:
Barotrauma.CampaignMode Barotrauma.CampaignMode Barotrauma.GameMode Barotrauma.GameMode Barotrauma.GameMode Barotrauma.GameMode

Public Types

enum  NetFlags : UInt16 {
  Misc = 0x1 , MapAndMissions = 0x2 , UpgradeManager = 0x4 , SubList = 0x8 ,
  ItemsInBuyCrate = 0x10 , ItemsInSellFromSubCrate = 0x20 , PurchasedItems = 0x80 , SoldItems = 0x100 ,
  Reputation = 0x200 , CharacterInfo = 0x800
}
 
- Public Types inherited from Barotrauma.CampaignMode
enum  InteractionType {
  None , Talk , Examine , Map ,
  Crew , Store , Upgrade , PurchaseSub ,
  MedicalClinic , Cargo
}
 
enum  TransitionType {
  None , LeaveLocation , ProgressToNextLocation , ReturnToPreviousLocation ,
  ReturnToPreviousEmptyLocation , ProgressToNextEmptyLocation , End
}
 

Public Member Functions

UInt16 GetLastUpdateIdForFlag (NetFlags flag)
 
void SetLastUpdateIdForFlag (NetFlags flag, UInt16 id)
 
void IncrementLastUpdateIdForFlag (NetFlags flag)
 
void IncrementAllLastUpdateIds ()
 
override Wallet GetWallet (Client client=null)
 
override void Start ()
 
void SaveExperiencePoints (Client client)
 
int GetSavedExperiencePoints (Client client)
 
void ClearSavedExperiencePoints (Client client)
 
void SavePlayers ()
 
void MoveDiscardedCharacterBalancesToBank ()
 
bool CanPurchaseSub (SubmarineInfo info, Client client)
 
void DiscardClientCharacterData (Client client)
 
CharacterCampaignData GetClientCharacterData (Client client)
 
CharacterCampaignData GetCharacterData (CharacterInfo characterInfo)
 
CharacterCampaignData SetClientCharacterData (Client client)
 
void AssignClientCharacterInfos (IEnumerable< Client > connectedClients)
 
Dictionary< Client, JobGetAssignedJobs (IEnumerable< Client > connectedClients)
 
override void Update (float deltaTime)
 
override void End (TransitionType transitionType=TransitionType.None)
 
void ServerWrite (IWriteMessage msg, Client c)
 
void ServerRead (IReadMessage msg, Client sender)
 
void ServerReadMoney (IReadMessage msg, Client sender)
 
void ServerReadRewardDistribution (IReadMessage msg, Client sender)
 
void ResetSalaries (Client sender)
 
void ServerReadCrew (IReadMessage msg, Client sender)
 
void SendCrewState ((ushort id, string newName) renamedCrewMember=default, CharacterInfo firedCharacter=null, bool createNotification=true)
 Notifies the clients of the current bot situation like syncing pending and available hires.
 
override bool TryPurchase (Client client, int price)
 
override int GetBalance (Client client=null)
 
override void Save (XElement element)
 
void SaveSingleCharacter (CharacterCampaignData newData, bool skipBackup=false)
 Load the current character save file and add/replace a single character's data with a new version immediately.
 
CharacterCampaignData RestoreSingleCharacterFromBackup (Client client)
 
- Public Member Functions inherited from Barotrauma.CampaignMode
bool CanAfford (int cost, Client client=null)
 
Location GetCurrentDisplayLocation ()
 The location that's displayed as the "current one" in the map screen. Normally the current outpost or the location at the start of the level, but when selecting the next destination at the end of the level at an uninhabited location we use the location at the end.
 
SubmarineInfo GetPredefinedStartOutpost ()
 
void InitFactions ()
 
override void AddExtraMissions (LevelData levelData)
 
void LoadNewLevel ()
 
TransitionType GetAvailableTransition (out LevelData nextLevel, out Submarine leavingSub)
 Which type of transition between levels is currently possible (if any)
 
TransitionType GetAvailableTransition ()
 
void HandleSaveAndQuit ()
 Handles updating store stock, registering event history and relocating items (i.e. things that need to be done when saving and quitting mid-round)
 
void UpdateStoreStock ()
 Updates store stock before saving the game.
 
void EndCampaign ()
 
Faction GetRandomFaction (Rand.RandSync randSync, bool allowEmpty=true)
 Returns a random faction based on their ControlledOutpostPercentage.
 
Faction GetRandomSecondaryFaction (Rand.RandSync randSync, bool allowEmpty=true)
 Returns a random faction based on their SecondaryControlledOutpostPercentage.
 
bool TryHireCharacter (Location location, CharacterInfo characterInfo, bool takeMoney=true, Client client=null, bool buyingNewCharacter=false)
 
int NewCharacterCost (CharacterInfo characterInfo)
 
bool CanAffordNewCharacter (CharacterInfo characterInfo)
 
void AssignNPCMenuInteraction (Character character, InteractionType interactionType)
 
void OutpostNPCAttacked (Character npc, Character attacker, AttackResult attackResult)
 
Faction GetFaction (Identifier identifier)
 
float GetReputation (Identifier factionIdentifier)
 
FactionAffiliation GetFactionAffiliation (Identifier factionIdentifier)
 
void Save (XElement element)
 
void LogState ()
 
override void Remove ()
 
int NumberOfMissionsAtLocation (Location location)
 
void CheckTooManyMissions (Location currentLocation, Client sender)
 
void SwitchSubs ()
 
void SavePets (XElement parentElement=null)
 
void LoadPets ()
 
void SaveActiveOrders (XElement parentElement=null)
 
void LoadActiveOrders ()
 
override void ShowStartMessage ()
 
- Public Member Functions inherited from Barotrauma.GameMode
virtual void UpdateWhilePaused (float deltaTime)
 
 GameMode (GameModePreset preset)
 
virtual void AddToGUIUpdateList ()
 

Static Public Member Functions

static MultiPlayerCampaign StartNew (string mapSeed, CampaignSettings settings)
 
static MultiPlayerCampaign LoadNew (XElement element)
 
static string GetCharacterDataSavePath (string savePath)
 
static string GetCharacterDataSavePath ()
 
static List< SubmarineInfoGetCampaignSubs ()
 
static void StartNewCampaign (string savePath, string subPath, string seed, CampaignSettings startingSettings)
 
static void LoadCampaign (string selectedSave, Client client)
 
static void StartCampaignSetup ()
 
- Static Public Member Functions inherited from Barotrauma.CampaignMode
static bool BlocksInteraction (InteractionType interactionType)
 
static List< SubmarineGetSubsToLeaveBehind (Submarine leavingSub)
 
static int GetHullRepairCost ()
 
static int GetItemRepairCost ()
 
static Faction GetRandomFaction (IEnumerable< Faction > factions, Rand.RandSync randSync, bool secondary=false, bool allowEmpty=true)
 
static Faction GetRandomFaction (IEnumerable< Faction > factions, Random random, bool secondary=false, bool allowEmpty=true)
 
static bool AllowedToManageCampaign (Client client, ClientPermissions permissions)
 There is a client-side implementation of the method in CampaignMode
 
static bool AllowImmediateItemDelivery (Client client)
 
static bool AllowedToManageWallets (Client client)
 

Public Attributes

List< CharacterCampaignDatareplacedCharacterDataBackup = new List<CharacterCampaignData>()
 Temporary backup storage for characters that have been overwritten by SaveSingleCharacter, this will be gone once the round ends or the server closes. Currently needed to enable the console command "revive" in ironman mode.
 
- Public Attributes inherited from Barotrauma.CampaignMode
double TotalPlayTime
 
int TotalPassedLevels
 
readonly CargoManager CargoManager
 
UpgradeManager UpgradeManager
 
MedicalClinic MedicalClinic
 
readonly CampaignMetadata CampaignMetadata
 
CampaignSettings Settings
 
readonly NamedEvent< WalletChangedEvent > OnMoneyChanged = new NamedEvent<WalletChangedEvent>()
 
bool CheatsEnabled
 
SubmarineInfo PendingSubmarineSwitch
 
Wallet Bank
 
bool PurchasedLostShuttlesInLatestSave
 
bool PurchasedHullRepairsInLatestSave
 
bool PurchasedItemRepairsInLatestSave
 
bool DivingSuitWarningShown
 
bool ItemsRelocatedToMainSub
 

Protected Member Functions

override void LoadInitialLevel ()
 
override IEnumerable< CoroutineStatusDoLevelTransition (TransitionType transitionType, LevelData newLevel, Submarine leavingSub, bool mirror)
 
- Protected Member Functions inherited from Barotrauma.CampaignMode
 CampaignMode (GameModePreset preset, CampaignSettings settings)
 
void LoadInitialLevel ()
 Load the first level and start the round after loading a save file.
 
IEnumerable< CoroutineStatusDoLevelTransition (TransitionType transitionType, LevelData newLevel, Submarine leavingSub, bool mirror)
 
virtual void EndCampaignProjSpecific ()
 
void KeepCharactersCloseToOutpost (float deltaTime)
 
void LoadStats (XElement element)
 
XElement SaveStats ()
 
void TransferItemsBetweenSubs ()
 Also serializes the current sub.
 
void RefreshOwnedSubmarines ()
 

Properties

UInt16 LastSaveID [get, set]
 
byte CampaignID [get, set]
 
bool ForceMapUI [get, set]
 
bool GameOver [get]
 
override bool Paused [get]
 
override bool PurchasedHullRepairs [get, set]
 
override bool PurchasedLostShuttles [get, set]
 
override bool PurchasedItemRepairs [get, set]
 
- Properties inherited from Barotrauma.CampaignMode
IReadOnlyList< FactionFactions [get]
 
XElement ActiveOrdersElement [get, set]
 
bool IsFirstRound = true [get, protected set]
 
bool DisableEvents [get]
 
bool TransferItemsOnSubSwitch [get, set]
 
bool SwitchedSubsThisRound [get]
 
Map Map [get]
 
override IEnumerable< MissionMissions [get]
 
Location CurrentLocation [get]
 
LevelData NextLevel [get, protected set]
 
virtual bool PurchasedHullRepairs [get, set]
 
virtual bool PurchasedLostShuttles [get, set]
 
virtual bool PurchasedItemRepairs [get, set]
 
bool MirrorLevel [get, protected set]
 
- Properties inherited from Barotrauma.GameMode
CrewManager CrewManager [get]
 
virtual IEnumerable< MissionMissions [get]
 
bool IsSinglePlayer [get]
 
LocalizedString Name [get]
 
virtual bool Paused [get]
 
GameModePreset Preset [get]
 

Additional Inherited Members

- Static Public Attributes inherited from Barotrauma.CampaignMode
readonly record struct SaveInfo(string FilePath, Option< SerializableDateTime > SaveTime, string SubmarineName, ImmutableArray< string > EnabledContentPackageNames) const int MaxMoney = int.MaxValue / 2
 
const int InitialMoney = 8500
 
const float HullRepairCostPerDamage = 0.1f
 
const float ItemRepairCostPerRepairDuration = 1.0f
 
const int ShuttleReplaceCost = 1000
 
const int MaxHullRepairCost = 600
 
const int MaxItemRepairCost = 2000
 
- Static Public Attributes inherited from Barotrauma.GameMode
static List< GameModePresetPresetList = new List<GameModePreset>()
 
- Static Protected Member Functions inherited from Barotrauma.CampaignMode
static void LeaveUnconnectedSubs (Submarine leavingSub)
 
- Protected Attributes inherited from Barotrauma.CampaignMode
XElement petsElement
 
bool wasDocked
 
Map map
 
- Protected Attributes inherited from Barotrauma.GameMode
DateTime startTime
 
GameModePreset preset
 
- Static Protected Attributes inherited from Barotrauma.CampaignMode
const float EndTransitionDuration = 5.0f
 
- Events inherited from Barotrauma.CampaignMode
Action BeforeLevelLoading
 Automatically cleared after triggering -> no need to unregister.
 
Action OnSaveAndQuit
 Triggers when saving and quitting mid-round (as in, not just transferring to a new level). Automatically cleared after triggering -> no need to unregister.
 

Member Enumeration Documentation

◆ NetFlags

Enumerator
Misc 
MapAndMissions 
UpgradeManager 
SubList 
ItemsInBuyCrate 
ItemsInSellFromSubCrate 
PurchasedItems 
SoldItems 
Reputation 
CharacterInfo 

Member Function Documentation

◆ AssignClientCharacterInfos()

void Barotrauma.MultiPlayerCampaign.AssignClientCharacterInfos ( IEnumerable< Client > connectedClients)

◆ CanPurchaseSub()

bool Barotrauma.MultiPlayerCampaign.CanPurchaseSub ( SubmarineInfo info,
Client client )

◆ ClearSavedExperiencePoints()

void Barotrauma.MultiPlayerCampaign.ClearSavedExperiencePoints ( Client client)

◆ DiscardClientCharacterData()

void Barotrauma.MultiPlayerCampaign.DiscardClientCharacterData ( Client client)

◆ DoLevelTransition()

override IEnumerable< CoroutineStatus > Barotrauma.MultiPlayerCampaign.DoLevelTransition ( TransitionType transitionType,
LevelData newLevel,
Submarine leavingSub,
bool mirror )
protected

◆ End()

override void Barotrauma.MultiPlayerCampaign.End ( TransitionType transitionType = TransitionType::None)
virtual

Reimplemented from Barotrauma.CampaignMode.

◆ GetAssignedJobs()

Dictionary< Client, Job > Barotrauma.MultiPlayerCampaign.GetAssignedJobs ( IEnumerable< Client > connectedClients)

◆ GetBalance()

override int Barotrauma.MultiPlayerCampaign.GetBalance ( Client client = null)
virtual

Reimplemented from Barotrauma.CampaignMode.

◆ GetCampaignSubs()

static List< SubmarineInfo > Barotrauma.MultiPlayerCampaign.GetCampaignSubs ( )
static

◆ GetCharacterData()

CharacterCampaignData Barotrauma.MultiPlayerCampaign.GetCharacterData ( CharacterInfo characterInfo)

◆ GetCharacterDataSavePath() [1/2]

static string Barotrauma.MultiPlayerCampaign.GetCharacterDataSavePath ( )
static

◆ GetCharacterDataSavePath() [2/2]

static string Barotrauma.MultiPlayerCampaign.GetCharacterDataSavePath ( string savePath)
static

◆ GetClientCharacterData()

CharacterCampaignData Barotrauma.MultiPlayerCampaign.GetClientCharacterData ( Client client)

◆ GetLastUpdateIdForFlag()

UInt16 Barotrauma.MultiPlayerCampaign.GetLastUpdateIdForFlag ( NetFlags flag)

◆ GetSavedExperiencePoints()

int Barotrauma.MultiPlayerCampaign.GetSavedExperiencePoints ( Client client)

◆ GetWallet()

override Wallet Barotrauma.MultiPlayerCampaign.GetWallet ( Client client = null)
virtual

Reimplemented from Barotrauma.CampaignMode.

◆ IncrementAllLastUpdateIds()

void Barotrauma.MultiPlayerCampaign.IncrementAllLastUpdateIds ( )

◆ IncrementLastUpdateIdForFlag()

void Barotrauma.MultiPlayerCampaign.IncrementLastUpdateIdForFlag ( NetFlags flag)

◆ LoadCampaign()

static void Barotrauma.MultiPlayerCampaign.LoadCampaign ( string selectedSave,
Client client )
static

◆ LoadInitialLevel()

override void Barotrauma.MultiPlayerCampaign.LoadInitialLevel ( )
protected

◆ LoadNew()

static MultiPlayerCampaign Barotrauma.MultiPlayerCampaign.LoadNew ( XElement element)
static

◆ MoveDiscardedCharacterBalancesToBank()

void Barotrauma.MultiPlayerCampaign.MoveDiscardedCharacterBalancesToBank ( )

◆ ResetSalaries()

void Barotrauma.MultiPlayerCampaign.ResetSalaries ( Client sender)

◆ RestoreSingleCharacterFromBackup()

CharacterCampaignData Barotrauma.MultiPlayerCampaign.RestoreSingleCharacterFromBackup ( Client client)

◆ Save()

override void Barotrauma.MultiPlayerCampaign.Save ( XElement element)

◆ SaveExperiencePoints()

void Barotrauma.MultiPlayerCampaign.SaveExperiencePoints ( Client client)

◆ SavePlayers()

void Barotrauma.MultiPlayerCampaign.SavePlayers ( )

◆ SaveSingleCharacter()

void Barotrauma.MultiPlayerCampaign.SaveSingleCharacter ( CharacterCampaignData newData,
bool skipBackup = false )

Load the current character save file and add/replace a single character's data with a new version immediately.

Parameters
newDataNew character to insert. If it matches one existing in the save, that will get replaced.
skipBackupBy default, replaced characters will be temporarily backed up, but that might be unwanted eg. when using this method to save a character itself restored from the backup.

◆ SendCrewState()

void Barotrauma.MultiPlayerCampaign.SendCrewState ( (ushort id, string newName) renamedCrewMember = default,
CharacterInfo firedCharacter = null,
bool createNotification = true )

Notifies the clients of the current bot situation like syncing pending and available hires.

Parameters
hiredCharactersInform the clients that these characters have been hired.
firedCharacterInform the clients that this character has been fired.

It might be obsolete to sync available hires. I found that the available hires are always the same between the client and the server when there's only one person on the server but when a second person joins both of their available hires are different from the server.

◆ ServerRead()

void Barotrauma.MultiPlayerCampaign.ServerRead ( IReadMessage msg,
Client sender )

◆ ServerReadCrew()

void Barotrauma.MultiPlayerCampaign.ServerReadCrew ( IReadMessage msg,
Client sender )

◆ ServerReadMoney()

void Barotrauma.MultiPlayerCampaign.ServerReadMoney ( IReadMessage msg,
Client sender )

◆ ServerReadRewardDistribution()

void Barotrauma.MultiPlayerCampaign.ServerReadRewardDistribution ( IReadMessage msg,
Client sender )

◆ ServerWrite()

void Barotrauma.MultiPlayerCampaign.ServerWrite ( IWriteMessage msg,
Client c )

◆ SetClientCharacterData()

CharacterCampaignData Barotrauma.MultiPlayerCampaign.SetClientCharacterData ( Client client)

◆ SetLastUpdateIdForFlag()

void Barotrauma.MultiPlayerCampaign.SetLastUpdateIdForFlag ( NetFlags flag,
UInt16 id )

◆ Start()

override void Barotrauma.MultiPlayerCampaign.Start ( )
virtual

Reimplemented from Barotrauma.CampaignMode.

◆ StartCampaignSetup()

static void Barotrauma.MultiPlayerCampaign.StartCampaignSetup ( )
static

◆ StartNew()

static MultiPlayerCampaign Barotrauma.MultiPlayerCampaign.StartNew ( string mapSeed,
CampaignSettings settings )
static

◆ StartNewCampaign()

static void Barotrauma.MultiPlayerCampaign.StartNewCampaign ( string savePath,
string subPath,
string seed,
CampaignSettings startingSettings )
static

◆ TryPurchase()

override bool Barotrauma.MultiPlayerCampaign.TryPurchase ( Client client,
int price )
virtual

Reimplemented from Barotrauma.CampaignMode.

◆ Update()

override void Barotrauma.MultiPlayerCampaign.Update ( float deltaTime)
virtual

Reimplemented from Barotrauma.GameMode.

Member Data Documentation

◆ replacedCharacterDataBackup

List<CharacterCampaignData> Barotrauma.MultiPlayerCampaign.replacedCharacterDataBackup = new List<CharacterCampaignData>()

Temporary backup storage for characters that have been overwritten by SaveSingleCharacter, this will be gone once the round ends or the server closes. Currently needed to enable the console command "revive" in ironman mode.

Property Documentation

◆ CampaignID

byte Barotrauma.MultiPlayerCampaign.CampaignID
getset

◆ ForceMapUI

bool Barotrauma.MultiPlayerCampaign.ForceMapUI
getset

◆ GameOver

bool Barotrauma.MultiPlayerCampaign.GameOver
get

◆ LastSaveID

UInt16 Barotrauma.MultiPlayerCampaign.LastSaveID
getset

◆ Paused

override bool Barotrauma.MultiPlayerCampaign.Paused
get

◆ PurchasedHullRepairs

override bool Barotrauma.MultiPlayerCampaign.PurchasedHullRepairs
getset

◆ PurchasedItemRepairs

override bool Barotrauma.MultiPlayerCampaign.PurchasedItemRepairs
getset

◆ PurchasedLostShuttles

override bool Barotrauma.MultiPlayerCampaign.PurchasedLostShuttles
getset

The documentation for this class was generated from the following files: