Client LuaCsForBarotrauma
BarotraumaClient/ClientSource/Events/Missions/NestMission.cs
2 using FarseerPhysics;
3 using Microsoft.Xna.Framework;
4 
5 namespace Barotrauma
6 {
7  partial class NestMission : Mission
8  {
9  public override bool DisplayAsCompleted => State > 0 && !requireDelivery;
10  public override bool DisplayAsFailed => false;
11 
12  public override int State
13  {
14  get => base.State;
15  set
16  {
17  base.State = value;
18  if (base.State > 0 && selectedCave != null)
19  {
20  selectedCave.MissionsToDisplayOnSonar.Remove(this);
21  }
22  }
23  }
24 
25  public override void ClientReadInitial(IReadMessage msg)
26  {
27  base.ClientReadInitial(msg);
28  byte selectedCaveIndex = msg.ReadByte();
29  nestPosition = new Vector2(
30  msg.ReadSingle(),
31  msg.ReadSingle());
32  if (selectedCaveIndex < 255 && Level.Loaded != null)
33  {
34  if (selectedCaveIndex < Level.Loaded.Caves.Count)
35  {
36  selectedCave = Level.Loaded.Caves[selectedCaveIndex];
37  selectedCave.MissionsToDisplayOnSonar.Add(this);
38  SpawnNestObjects(Level.Loaded, selectedCave);
39  }
40  else
41  {
42  DebugConsole.ThrowError($"Cave index out of bounds when reading nest mission data. Index: {selectedCaveIndex}, number of caves: {Level.Loaded.Caves.Count}");
43  }
44  }
45 
46  ushort itemCount = msg.ReadUInt16();
47  for (int i = 0; i < itemCount; i++)
48  {
49  var item = Item.ReadSpawnData(msg);
50  items.Add(item);
51  if (item.body != null)
52  {
53  item.body.FarseerBody.BodyType = BodyType.Kinematic;
54  }
55  }
56  }
57  }
58 }
static Item ReadSpawnData(IReadMessage msg, bool spawn=true)