Fixes ServerPortalComponent spamming exceptions and crashing server if spawned manually.

Also makes the prototype abstract because it doesn't work straight up.
This commit is contained in:
Pieter-Jan Briers
2020-05-28 20:09:14 +02:00
parent 94917a63a6
commit 718b37fb2c
2 changed files with 19 additions and 17 deletions

View File

@@ -193,25 +193,26 @@ namespace Content.Server.GameObjects.Components.Movement
public void TryPortalEntity(IEntity entity)
{
if (!immuneEntities.Contains(entity))
if (immuneEntities.Contains(entity) || _connectingTeleporter == null)
{
var position = _connectingTeleporter.Transform.GridPosition;
var soundPlayer = EntitySystem.Get<AudioSystem>();
// Departure
// Do we need to rate-limit sounds to stop ear BLAST?
soundPlayer.Play(_departureSound, entity.Transform.GridPosition);
entity.Transform.DetachParent();
entity.Transform.GridPosition = position;
soundPlayer.Play(_arrivalSound, entity.Transform.GridPosition);
TryChangeState(PortalState.RecentlyTeleported);
// To stop spam teleporting. Could potentially look at adding a timer to flush this from the portal
immuneEntities.Add(entity);
_connectingTeleporter.GetComponent<ServerPortalComponent>().immuneEntities.Add(entity);
Timer.Spawn(TimeSpan.FromSeconds(_individualPortalCooldown), () => releaseCooldown(entity));
StartCooldown();
return;
}
var position = _connectingTeleporter.Transform.GridPosition;
var soundPlayer = EntitySystem.Get<AudioSystem>();
// Departure
// Do we need to rate-limit sounds to stop ear BLAST?
soundPlayer.Play(_departureSound, entity.Transform.GridPosition);
entity.Transform.DetachParent();
entity.Transform.GridPosition = position;
soundPlayer.Play(_arrivalSound, entity.Transform.GridPosition);
TryChangeState(PortalState.RecentlyTeleported);
// To stop spam teleporting. Could potentially look at adding a timer to flush this from the portal
immuneEntities.Add(entity);
_connectingTeleporter.GetComponent<ServerPortalComponent>().immuneEntities.Add(entity);
Timer.Spawn(TimeSpan.FromSeconds(_individualPortalCooldown), () => releaseCooldown(entity));
StartCooldown();
}
}
}

View File

@@ -48,6 +48,7 @@
- type: entity
name: Portal
id: Portal
abstract: true
description: "Portal to another location"
components:
- type: Collidable