public TunnelBore(long x, long y, long z, ushort cube, byte flags, ushort value, Vector3 position, Segment segment) : base(eSegmentEntity.Mod, SpawnableObjectEnum.BFL9000, x, y, z, cube, flags, value, position, segment) { mbNeedsLowFrequencyUpdate = true; this.mFlags = flags; ResetRotation(); State = BoreState.Initializing; FlavorText = _flavorTexts[Random.Range(0, _flavorTexts.Length)]; }
public override void LowFrequencyUpdate() { // If we're a network client, we don't need to process anything if (!WorldScript.mbIsServer) { return; } base.LowFrequencyUpdate(); if (State == BoreState.Initializing) { State = BoreState.LowPower; } if (BoreDistance > MaxBoreDistance) { State = BoreState.Finished; return; } State = CurrentPower > PowerPerBlock ? BoreState.Boring : BoreState.LowPower; if (State == BoreState.LowPower) { return; } // We're going to sleep this many ticks between dig attempts SleepCount++; if (SleepCount < 4) { return; } SleepCount = 0; switch (mValue) { case 0: WithSegments(BoreTunnelV); break; case 1: WithSegments(BoreTunnelSquare); break; } }
public override void ReadNetworkUpdate(BinaryReader reader) { State = (BoreState)reader.ReadInt32(); BoreDistance = reader.ReadInt32(); MaxBoreDistance = reader.ReadInt32(); }