Files
7d2dXG/Mods/zzz_REBIRTH__Utils/Scripts/GameEvent/ActionTeleportToSpecialRebirth.cs
Nathaniel Cosford 062dfab2cd Patched
2025-05-30 01:04:40 +09:30

89 lines
4.0 KiB
C#

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<ConnectionManager>.Instance.Clients.ForEntityId(entityPlayer.entityId).SendPackage(NetPackageManager.GetPackage<NetPackageTeleportPlayer>().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.SpecialPointTypes>(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
}
}
}