namespace GameEvent.SequenceActions { public class ActionTeleportToSpecialRebirth : ActionBaseClientAction { public override void OnClientPerform(Entity target) { //Log.Out("ActionTeleportToSpecialRebirth-OnClientPerform START"); EntityPlayer entityPlayer = target as EntityPlayer; if (entityPlayer != null) { World world = GameManager.Instance.World; Vector3 vector = Vector3.zero; switch (this.pointType) { case ActionTeleportToSpecialRebirth.SpecialPointTypes.Bedroll: if (entityPlayer.SpawnPoints.Count == 0) { return; } vector = entityPlayer.SpawnPoints[0]; break; case ActionTeleportToSpecialRebirth.SpecialPointTypes.Landclaim: { PersistentPlayerData playerDataFromEntityID = GameManager.Instance.persistentPlayers.GetPlayerDataFromEntityID(target.entityId); if (playerDataFromEntityID.LPBlocks == null || playerDataFromEntityID.LPBlocks.Count == 0) { return; } vector = playerDataFromEntityID.LPBlocks[0]; break; } case ActionTeleportToSpecialRebirth.SpecialPointTypes.Backpack: //Log.Out("ActionTeleportToSpecialRebirth-OnClientPerform BACKPACK 0"); Vector3i lastDroppedBackpackPosition = entityPlayer.GetLastDroppedBackpackPosition(); if (lastDroppedBackpackPosition == Vector3i.zero) { //Log.Out("ActionTeleportToSpecialRebirth-OnClientPerform BACKPACK 1"); return; } vector = lastDroppedBackpackPosition; //Log.Out("ActionTeleportToSpecialRebirth-OnClientPerform BACKPACK 2, vector: " + vector); GameManager.Instance.StartCoroutine(RebirthUtilities.GetBackPackContent(1.5f, (EntityPlayerLocal)target, vector)); //Log.Out("ActionTeleportToSpecialRebirth-OnClientPerform BACKPACK 3"); break; } if (vector.y > 0f) { //Log.Out("ActionTeleportToSpecialRebirth-OnClientPerform 1"); vector += Vector3.up * 2f; if (entityPlayer.isEntityRemote) { SingletonMonoBehaviour.Instance.Clients.ForEntityId(entityPlayer.entityId).SendPackage(NetPackageManager.GetPackage().Setup(vector, null, false)); return; } ((EntityPlayerLocal)entityPlayer).PlayerUI.windowManager.CloseAllOpenWindows(null, false); ((EntityPlayerLocal)entityPlayer).TeleportToPosition(vector, false, null); } } } public override void ParseProperties(DynamicProperties properties) { base.ParseProperties(properties); properties.ParseEnum(ActionTeleportToSpecialRebirth.PropSpecialType, ref this.pointType); } public override BaseAction CloneChildSettings() { return new ActionTeleportToSpecialRebirth { targetGroup = this.targetGroup, pointType = this.pointType }; } protected ActionTeleportToSpecialRebirth.SpecialPointTypes pointType; protected static string PropSpecialType = "special_type"; protected enum SpecialPointTypes { Bedroll, Landclaim, Backpack } } }