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:
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,6 +48,7 @@
|
||||
- type: entity
|
||||
name: Portal
|
||||
id: Portal
|
||||
abstract: true
|
||||
description: "Portal to another location"
|
||||
components:
|
||||
- type: Collidable
|
||||
|
||||
Reference in New Issue
Block a user